钱柜777老虎机游戏

钱柜777老虎机游戏平安实行室:HTTP恳求私运破绽及靶场复现

2019年8月,hackerone提交了关于PayPal HTTP恳求私运+存储性XSS 

链接:https://hackerone.com/reports/510152

打击可以间接对PayPal登岸页面停止控制,而且能获取一切用户暗码,危害极大。这是什么破绽,我们明天来揭开它的面纱:HTTP恳求私运(HTTP Request Smuggling) 

1585559883195470.png

图片泉源:

https://portswigger.net/research/http-desync-attacks-request-smuggling-reborn



一、案例回忆


我们先理解下往年black hat共享的Paypal破绽实例援用:https://i.blackhat.com/eu-19/Wednesday/eu-19-Kettle-HTTP-Desync-Attacks-Request-Smuggling-Reborn.pdf )代码如下:
起首运用恳求私运净化PayPal登录的JS文件。
1585559918124576.png

由于PayPal登录页面有一个CSP规矩剧本-SRC,制止了这个重定向
 
1585559947418307.png

厥后,作者登录页面在静态天生的iframe中将c.payal.com上的子页面加载了。此子页面未运用CSP,还运用了由作者的JS文件!可以控制iframe页面,但是由于同源战略,无法读取父页面的数据。

1585559963153504.png

然后,在paypal.com/us/gifts上发明了一个不运用CSP的页面,而且还导入了净化JS文件。经过运用本人的JSc.paypal.com iframe重定向到该URL(并第三次触发本人JS导入),他终于可以拜访父级并从运用SafariIE PayPal登录的每团体那边盗取纯文本的PayPal暗码。
1585559990931803.png

看着是挺绕的,但是渐渐想一下很复杂,PayPal主站是有同源战略,旁站存在HTTP恳求私运间接加载本人的JSPayPal.com/us/gifts可以绕过主站可以加载本人的JS,然后乐成盗取每个登岸PayPal账号暗码。好,我们来理解下什么是HTTP私运。起首我们要理解下HTTP简介和观点。

二、简介


HTTP恳求私运是一种搅扰网站处置从一个或多个用户接纳的HTTP恳求序列的方法的技能,它可以绕过平安控制,未经受权拜访敏感数据而且间接危害其他使用顺序用户。


三、观点


我们晓得HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web)效劳器传输超文本到当地阅读器的传送协议,HTTP是一个基于TCP/IP通讯协议来通报数据。


HTTP/1.1开端,支持经过单个根底TCP或许SSL/TLS套接字发送多个HTTP恳求,该协议将HTTP恳求背靠背安排,效劳器剖析标头以盘算出每个完毕的地位及下个开端地位。

1. Persistent Connection(耐久衔接)

HTTP运转在TCP衔接之上,存在TCP三次握手,慢启动等特点,为了尽能够进步HTTP的功能,援用了长衔接的观点,目标处理HTTP传输,屡次树立衔接信息的状况,经过Connection: keep-alive 头部来完成,效劳器和客户端运用它通知对方在发送完数据之后不时开TCP衔接,那么题目来了,我们该怎样判别信息能否传输完成呢。为理解决这个题目,于是引入上面的恳求头Content-length

2. Content-length(实体长度)

Content-Length实体标头字段发送给接纳方的实体的巨细(以OCTET的十进制数为单元)经过判别Content-lenget长度相称,效劳器便晓得这个时分可以断开衔接,假如Content-length和实体的实践长度短会形成内容截断,假如比实践内容长,会为短少的内容停止主动添补,看似完满了,但是效劳器为了盘算信息内容,将一切内容缓存下载,并没有处理web使用优化。

3. Transfer-Encoding: chunked(分块编码)

为理解决Web优化,引入一个新的恳求头Transfer-Encoding: chunked 也便是分块编码,参加恳求头后,报文会运用分块的方式停止传输,不在需求缓存一切实例内容,只需求缓存分块即可,分块要求,每块必需包括16进制的长度和数据,长度值独立占据一行,不包罗CRLF(\r\n),也不包罗开头的CRLF,当分块的长度为0,且没无数据,衔接完毕
 

四、构成缘由


大少数网站为了进步阅读速率,用户体验,增加效劳器担负,运用CDN减速效劳,原理便是在源站后面参加具有缓存功用的反向署理,当用户恳求静态资源,可以间接到署理效劳器中获取,不在从源站效劳器获取,反向署理与后端源站效劳器之间,会重用TCP链接,由于差别的用户恳求将经过署理效劳器与源站效劳器衔接,署理效劳器与后真个源站效劳器的IP是绝对牢固。

但是由于两者效劳器的完成办法差别,假如用户提供含糊的恳求能够署理效劳器以为是一个HTTP恳求,然后转发给后端源站效劳器,源站效劳器颠末剖析处置后,只以为此中一局部恳求,剩下的别的一局部便是私运恳求,构成这个缘由,是由于HTTP标准提供了两种差别方法来指定恳求的完毕地位,它们是Content-Length标头和Transfer-Encoding标头

1585560133674508.png
 

五、靶场复现


我这里用的是https://portswigger.net演示情况,东西:burp suite,起首封闭Update content-length。

 
A%))`DWN3P~}YN6E~)NIE87.png
我们来看下罕见HTTP私运有三种状况。

(1) CL.TE破绽

CT-TE: 前端运用Content-length,后端运用Transfer-Encoding
前端效劳器运用Content-Length头,然后端效劳器运用Transfer-Encoding头。
情况演示地点:
https://portswigger.net/web-security/request-smuggling/lab-basic-cl-te
比方:

1585560178504473.png
第一次恳求,前往正常页面:

1585560209945906.png

第二次恳求,歹意恳求被实行:
 
1585560230958451.png

前端效劳器处置Content-Length标头,并确定恳求注释的长度为9个字节,直到的开头test该恳求被转发到后端效劳器。
后端效劳器处置Transfer-Encoding标头,因而将音讯注释视为运用分块编码。它处置第一个块,该块被声明为零长度,因而被视为停止恳求。接上去的字节test保存未处置,后端效劳器会将其视为序列中下一个恳求的开端。

(2) TE.CL破绽

前端效劳器运用Transfer-Encoding头,然后端效劳器运用Content-Length
情况演示地点:
https://portswigger.net/web-security/request-smuggling/exploiting/lab-bypass-front-end-controls-te-cl,当我们间接拜访/admin间接表现403,无法拜访。

1585560526822274.png

该怎样办呢,假如我们运用上面恳求是不是就绕过了呢?

1585560549104585.png


是的,但是提示必需
hostlocalhost才干拜访,那我们间接参加HOST: localhost
试一下:
1585560594314076.png

 可见参加HOST:localhost 发送恳求,间接进入办理页面。

终极恳求为:
1585560609681506.png


1585560633363279.png


由于前端效劳器处置Transfer-Encoding标头,运用分块编码。不断读到为0,以为读取终了,此时这个恳求对署理效劳器来说是一个完好的恳求,然后转发给后端效劳器,后端效劳器对Content-Length标头停止处置,当它读完71后以为恳求完毕,前面的数据就以为另一个恳求,也便是乐成实行。

1585561986301168.png
乐成实行。
阐明:
71是文件字节数十六进制转换出来的十进制数。

{8K1270%2W{(7)MU]P)K6BL.png

文件字节数为十六进制数:113转换为十进制数:71

 (3)TE.TE举动:混杂TE头
TE-TE举动很容易了解,以后端效劳器和后端效劳器都支持Transfer-Encoding标头,我们可以经过某种方法混杂标头来诱导此中一台效劳器不合错误其停止处置。可以说照旧CL-TE TE-CL
情况演示地点:
  https://portswigger.net/web-security/request-smuggling/exploiting/lab-bypass-front-end-controls-te-cl运用上面数据包停止发送:

1585562029722412.png

当我们第一恳求间接前往正常页面 :

1585562046113022.png


 当我们第二次发包,间接实行前面的GPOST:

1585562062648750.png

 

六、怎样避免HTTP恳求私运破绽

1.不要反复运用后端衔接,HTTP私运依赖多个后端多路复用,后端效劳器将私运数据包与正当数据包一同处置,发生危害举动。假如每个恳求独自联络发送,歹意的私运恳求不在无效。

2.运用HTTP / 2停止后端衔接,由于此协议制止运用分块传输编码。
3.前端效劳器和后端效劳器确保运用完全相反的Web效劳器软件,以便它们就恳求之间的界线告竣分歧。
 

七、参考文章


HTTP异步打击:恳求私运重生
https://portswigger.net/research/http-desync-attacks-request-smuggling-reborn
HTTP恳求私运
https://portswigger.net/web-security/request-smuggling