CRLF注入
CRLF注入漏洞,是因为Web应用没有对用户输入做严格验证,导致攻击者可以输入一些恶意字符。攻击者一旦向请求行或首部中的字段注入恶意的CRLF,就能注入一些首部字段或报文主体,并在响应中输出,所以又称为HTTP响应拆分漏洞。
漏洞检测和利用
这里可以利用vulhub上的靶场。
漏洞的检测:CRLF表示的就是回车换行(%0a%0d),在url地址后插入playload:%0a%0dSet-Cookie:%20a=1,如果响应头出现Set-Cookie:a=1的字段,则表示存在该漏洞,其中set-cookie也可以换成其他的。
漏洞利用:CRLF注入,比较鸡肋,不像SQL注入等漏洞,危害很大。常见的利用就是构造出xss漏洞。
漏洞拓展
检测工具:CRLFuzz:https://github.com/dwisiswant0/crlfuzz/releases
URL重定向
写代码时没有考虑过任意URL跳转漏洞,或者根本不知道/不认为这是个漏洞;
写代码时考虑不周,用取子串、取后缀等方法简单判断,代码逻辑可被绕过;
对传入参数做一些奇葩的操作(域名剪切/拼接/重组)和判断,适得其反,反被绕过;
原始语言自带的解析URL、判断域名的函数库出现逻辑漏洞或者意外特性,可被绕过;
原始语言、服务器/容器特性、浏览器等对标准URL协议解析处理等差异性导致绕过;
漏洞检测和利用
漏洞检测分为黑盒白盒:黑盒看url地址中的参数名,如link、target等,白盒看相关的代码块,如$redirect_url = $_GET[‘url’]; header("Location: " . $redirect_url)等。
漏洞利用:钓鱼攻击
HPP参数污染
HPP,即 HTTP Parameter Pollution,HTTP 参数污染。在 HTTP 协议中是运行同样名称的参数出现多次,攻击者通过传播参数的时候传输 key 相同而 value 不同的参数,从而达到绕过某些防护与参数校验的后果。它是一种注入型的漏洞,攻击者通过在 HTTP 请求中插入特定的参数来发起攻击。