网站对联广告图片,广告策划与营销,上海专业网站建站品牌,网站标签是什么文章目录 HTTP请求走私漏洞的产生HTTP请求走私漏洞的分类HTTP请求走私攻击的危害确认HTTP请求走私漏洞通过时间延迟技术确认CL漏洞通过时间延迟技术寻找TE.CL漏洞 使用差异响应内容确认漏洞通过差异响应确认CL.TE漏洞通过差异响应确认TE.CL漏洞 请求走私漏洞的利用通过请求漏洞… 文章目录 HTTP请求走私漏洞的产生HTTP请求走私漏洞的分类HTTP请求走私攻击的危害确认HTTP请求走私漏洞通过时间延迟技术确认CL漏洞通过时间延迟技术寻找TE.CL漏洞 使用差异响应内容确认漏洞通过差异响应确认CL.TE漏洞通过差异响应确认TE.CL漏洞 请求走私漏洞的利用通过请求漏洞绕过URL访问的限制通过请求走私漏洞绕过客户端认证触发反射型号XSS网页缓存中毒 Apache mod_proxy配置请求走私攻击 HTTP请求走私漏洞的产生
在HTTP/1.1中HTTP请求走私漏洞出现是因为HTTP规范提供了两种不同的方法指定请求位置的结束即我们说的Content-Length 和Transfer-Encoding标头分别表示正文内容的长度和是否分块当同时使用这两种方法的时候如果前端和后端服务器处理表头的时候出现了歧义则会出现处理情况的不同从而导致了请求走私漏洞比如说 图中由于前端服务器不支持Transfer-Encoding分块因此正文的所有数据由于Content-Length被传入到了后端服务器中而后端服务器因为支持Transfer-Encoding遇到0的时候就停止了接收后面请求的admin就被认为是一次新的请求两个服务器之间的歧义导致了HTTP请求走私漏洞。
HTTP请求走私漏洞的分类
CL.TE前端服务器使用 Content-Length 标头和后端服务器使用 Transfer-Encoding 页眉TE.CL前端服务器使用 Transfer-Encoding 标头和后端服务器使用 Content-Length 页眉TE.TE前端和后端服务器都支持 Transfer-Encoding 标头但两个服务器处理Transfer-Encoding产生歧义
HTTP请求走私攻击的危害
由于当今的Web应用程序之间大都采用HTTP服务器链的形式有时为了负载均衡等各种原因都会设置多个代理或均衡器最终这些服务器请求都转发到了一个或多个后端服务器中假若这些类型的架构在服务器处理HTTP请求时发生了歧义会产生巨大的危害。
会话劫持: 攻击者可以使用HTTP请求走私攻击来劫持用户的会话获取用户的敏感信息例如登录凭据、会话标识符等。攻击者可以利用这些信息冒充用户执行未经授权的操作。身份伪装: 攻击者能够通过HTTP请求走私攻击伪装成合法的用户绕过一些安全机制和防护措施。这可能导致攻击者获得未授权的访问权限例如访问受限资源或执行特权操作。敏感信息泄露: 攻击者可以利用HTTP请求走私漏洞通过注入恶意请求将敏感信息泄漏给第三方。这些信息可能包括用户的个人身份信息、金融数据、业务逻辑、系统配置等。业务破坏: 攻击者可以使用HTTP请求走私攻击来破坏正常的业务流程。例如他们可以篡改或删除HTTP请求头、操纵响应内容、劫持会话等导致应用程序无法正常工作影响用户体验和业务流程。安全漏洞利用: HTTP请求走私攻击可能与其他安全漏洞相结合从而导致更严重的安全问题。攻击者可能会利用该漏洞执行其他攻击如跨站脚本攻击 (XSS)、跨站请求伪造 (CSRF)、服务器端请求伪造 (SSRF) 等。
确认HTTP请求走私漏洞
通过时间延迟技术确认CL漏洞
由于前端服务器使用的是Content-Length标头而后端服务器使用的是Transfer-Encoding因此前端服务器仅会转发一部分后端服务器处理了第一个区块因为还没结束符所以会等待下一个区块的到达可以有明显的时间延迟。
POST / HTTP/1.1
Host: aiwin.com
Transfer-Encoding: chunked
Content-Length: 31
X如以上数据包为例前端使用Content-length只会发送3个长度的数据发送到了1而后端使用的是chunked会一直等待下一区块的到来或者等待结束符0的到来。 通过时间延迟技术寻找TE.CL漏洞
由于前端服务器使用Transfer-Encoding表头仅转发请求的一部分后端服务器使用的是Content-Length表头在等待着剩余内容的到达也可以观察到时间延迟
POST / HTTP/1.1
Host: aiwin.com
Transfer-Encoding: chunked
Content-Length: 60X如上数据包前端服务器使用的是chunked会转发到0之前的正文但是后端服务器使用的是Content-Length长度为6而转发到0长度仅为3所以会等待后面3个长度的正文到来会导致时间延迟 使用差异响应内容确认漏洞
通过走私漏洞能够干扰正确请求的响应包通过正常请求的响应来确认漏洞。
通过差异响应确认CL.TE漏洞
如下数据包由于前端服务器使用的是Content-Length所以全部数据都被发送到了后端服务器中而后端服务器使用的是Transfer-Encoding数据接收到0后就停止了下面GET的请求被认为是新一次的请求处理返回了404 Not Found。 通过差异响应确认TE.CL漏洞
如下HTTP请求包由于前端服务器使用的是TE所以全部数据毫无问题的发送到了后端服务器而后端服务器使用的是CL只接收到了5e的数据下面的POST数据被认为是新一次的请求被后端服务器处理返回了404。 请求走私漏洞的利用
通过请求漏洞绕过URL访问的限制
如下数据包访问/admin页面是被403掉的 因为这里存在请求走私漏洞CL-TE漏洞所以前端将全部的数据传入到了后端而后端使用的是TE接收到0后停止下一次请求/admin被认为是新一次的请求而此次请求的Host为本地因此可以绕过403 通过请求走私漏洞绕过客户端认证
一般在https中作为TLS握手的一部分服务器需要提供证书向客户端进行身份认证证书包含通用名称该名称需要与注册的主机名相匹配客户端可以使用它验证是否与合法服务器进行通信。
GET /admin HTTP/1.1
Host: aiwin.com
X-SSL-CLIENT-CN: aiwin一般这些CN标头对用户是隐藏的如果能够发送正确的CN头和值可能能偶绕过访问控制在前端中如果这些头已经存在前端服务器会覆盖它们因此不太可利用而走私的请求可以绕过前端原封不动的发送给后端绕过验证。
POST /example HTTP/1.1
Host: vulnerable-website.com
Content-Type: x-www-form-urlencoded
Content-Length: 64
Transfer-Encoding: chunked0GET /admin HTTP/1.1
X-SSL-CLIENT-CN: administrator
Foo: x触发反射型号XSS
查看页面发现User-agent被插入到了页面中并且验证一下能够通过修改User-Agent触发反射型XSS。 一般反射型XSS对用户并没有危害只能在自身访问的网站中触发或者通过与用户交互触发加入联合请求走私漏洞则可以导致其它用户访问任意界面都触发反射型XSS无需与用户进行交互便可以轻松造成一定的影响原理就是当前端页面中某一处请求头利用能够触发反射型XSS又存在CL-TE种类的请求走私漏洞时能够利用这种形式。 此处因为前端不支持chunked接收的是Content-length因此整块数据毫无问题的传入到了后端服务器而后端服务器接收的是TE接收到是0后停止接收下面还未接收被认为是独立的请求被缓存到了服务器中当有用户进行请求就会触发XSS。
网页缓存中毒
网页缓存是指为了减少服务器的负载服务器会将一些文件如CSS\JS等缓存起来以便在下次访问的时候进行读取不需要再次请求服务器可是当某一用户发送一些恶意的请求服务器服务器就会返回恶意的服务器到缓存服务器因此缓存的这周机制其它用户访问这个界面的时候就会加载这个恶意的缓存存在被投毒的可能。
因为服务器存在CL-TE请求走私漏洞因此可以通过攻击服务器使得CL-TE请求走私将下一个请求指定攻击服务器的POST路径。 访问JS文件可以看到重定向来了构造的恶意XSS语句中JS文件恶意重定向到了XSS被缓存到了服务器中。 再次访问靶场页面因为缓存机制服务器每次进入主页面都会请求这个JS文件又因为这个JS已经被投毒会从缓存服务器中请求这个被重定向的恶意JS文件触发了XSS。 Apache mod_proxy配置请求走私攻击
在apache HTTP Server版本2.4.0-2.4.55中某些mod_proxy配置能够造成HTTP请求走私攻击启用 mod_proxy 以及特定配置的 RewriteRule 或 ProxyPassMatch 模块时当规则与用户提供的URL的某些部分匹配时会因为变量替换从而造成代理请求目标错误。
例如如下配置
RewriteEngine on
RewriteRule ^/nssctf/(.*) http://example.com:8080/index.php?id$1; [P]
ProxyPassReverse /nssctf/ http://example.com:8080/这里的id被设置成了$1当我们访问的url匹配到正则的时就会进行RewriteRule规则替换准备新的请求发送给mod_proxy模块让apache生成一个request请求目标的后端服务器。 这里的url字符会被解码能够进行CRLF注入id0以及GET /flag.txt会直接拼接到了请求报文中发送给了后端服务器造成了请求走私。
具体分析查看Apache请求走私漏洞