2021年冬天,漏洞类别Log4j2那个漏洞把半个互联网搅翻了天。漏洞类别一个名叫JNDI注入的漏洞类别玩意儿,让全球安全工程师连夜加班。漏洞类别很多人当时第一次听说"漏洞类别"这个词,漏洞类别其实它早就藏在每一行代码的漏洞类别缝隙里。
漏洞分类这件事,漏洞类别说简单也简单,漏洞类别说复杂也复杂。漏洞类别OWASP Top 10列了十种,漏洞类别CWE列了上千种,漏洞类别MITRE的漏洞类别ATT&CK又从攻击者视角切了一刀。你问一个干了十年的漏洞类别渗透测试工程师,他可能不会背CWE编号,漏洞类别但他看到一段代码就能闻出味道——这地方能注入,漏洞类别那地方能越权。
注入类漏洞是最古老的。SQL注入活了二十多年,现在还没死透。我去年帮一个客户做代码审计,他们的登录接口用的是字符串拼接SQL,参数直接来自HTTP请求。开发人员说"我们前端做了校验",这句话我听过不下五十次。前端的校验是给用户看的,不是给攻击者看的。你打开Burp Suite改个包,前端那点JavaScript就跟纸糊的一样。
XSS也属于注入,只不过注入的是JavaScript。反射型、存储型、DOM型,分得挺细,核心就一句话:用户输入没经过处理就输出到了页面上。有个细节很多人忽略——不是只有`