记录黑客技术中优秀的内容,传播黑客文化,分享黑客技术精华

Location302跳转和CRLF场景下构造XSS漏洞攻击

2020-11-07 09:59

最近日站时遇到了一个URL跳转,服务器直接将目标GET参数原样输出在Location:响应头中没做任何安全检查。

随后我发现该输出点还解析换行符和回车符,也就是存在CRLF

Location302跳转和CRLF场景下构造XSS漏洞攻击-极度安全

然后我插入了多个换行符之后再插入一下HTML+JS语法,想借此构造反射XSS:

Location302跳转和CRLF场景下构造XSS漏洞攻击-极度安全

但是问题来了,由于响应码是302,常用的浏览器如Chrome、IE、Firefox 不会解析HTTP响应正文,得想个办法绕过。

搜了下大佬们的文章,有了一个发现,其中Fortinet师傅描述了如何通过将Location响应头设置为以mailto://开头的URI来绕过302跳转以执行XSS。Bugcrowd论坛也有一些类似的讨论。大致思路都是通过给Location响应头插入一些特殊的协议来实现绕过。

基于此,我决定写个fuzz工具,我基于IANA(互联网号码分配机构)提供的协议列表,根据以下格式来测试是否能绕过302跳转:

  1. http://www.secvery.com/?redir=[URI_SCHEME]://demo.com%0A%0A[XSS_PAYLOAD]

最后发现只有如下两个协议能够绕过并且仅在Firefox浏览器上有效:

ws:// (WebSocket)
wss:// (Secure WebSocket)

Location302跳转和CRLF场景下构造XSS漏洞攻击-极度安全

打开最新版本的Firefox(投稿时在最新版为v 82.0.2 测试成功)中的链接,可以看到在正确的域下执行了XSS,而没有被重定向:

Location302跳转和CRLF场景下构造XSS漏洞攻击-极度安全

经过公开的讨论,后续发现如下:

Location: 空的Location响应头可以在Chrome上成功执行内容中的XSS代码。(投稿时在最新版 Chrome v86.0.4240.111测试成功)
Location: resource://URL 使用resource协议也可以在Firefox 81 上执行payload。(投稿时在最新版 Firefox v82.0.2测试成功)


知识来源: https://www.secvery.com/3617.html

阅读:35658 | 评论:0 | 标签:xss 漏洞 攻击

想收藏或者和大家分享这篇好文章→复制链接地址

“Location302跳转和CRLF场景下构造XSS漏洞攻击”共有0条留言

发表评论

姓名:

邮箱:

网址:

验证码:

公告

❤人人都能成为掌握黑客技术的英雄⛄️

ADS

标签云