由于我个人时间的限制, 因此我很少或者说是几乎不参加赏金计划任务. 虽然我早早的就注册了 HackerOne, 但你们可以到 我的主页 https://hackerone.com/the-useless-one 并没有任何的记录. 在这里我不得不提及我的 同事 https://hackerone.com/myst404 , 他与我截然相反, 可以说他把大部分时间都花在了研究赏金计划上. 就在上个月的一个傍晚, 当我们连接到我们的工作 Jabber server 时, 他告诉我成人网站 YouPorn 也已在 HackerOne 上, 启动了他们的 bug 奖励计划 https://hackerone.com/youporn :
他: 今天 youporn 加入了 bug 赏金计划
我: 在 hacker one?
他: 是的
我: 没时间, 我正在迁移我的 DNS 服务器
当我正在阅读关于绑定的文档时, 他回复了我:
他: oh shit, 不敢相信, 搜索栏中存在可利用的 XSS
事情开始变得有趣起来, 使我不得不停下手中的工作. 我很惊讶, 这个问题之前竟然没有人能发现它. 搜做表单中的 XSS 是最基本的情况之一, 我和我的朋友都经常逛 YouPorn, 但从来没有发现过这个问题.
时间对我们来说是非常宝贵的, 我们必须要在其他人之前利用并报告该漏洞.
从缺少过滤到开放重定向
我启动了浏览器和 Burp, 并在搜索表单上发送了一个请求. 我搜索了 foobar". 正如你在下面的截图中看到的那样, 搜索词是在 meta 标签 https://www.w3schools.com/tags/tag_meta.asp 中, 以没有任何过滤 (大写字母除外) 的形式输出的:
但当我们尝试写入关闭标签, 并添加了 Javascript payload, 我们发现我们的 payload 并未被执行:
虽然如此, 但我们仍然决定利用 meta html 标签. 这是一个非常强大的标签, 因为它包含有 http-equiv 指令. 该 指令 https://www.w3schools.com/tags/att_meta_http_equiv.asp 相当于 http 的文件头作用.
http-equiv 指令将值设为 refresh, 可用于将用户重定向到其他页面. 如果发生网络钓鱼攻击, 这种 开放重定向 https://www.owasp.org/index.php/Unvalidated_Redirects_and_Forwards_Cheat_Sheet 漏洞是非常有用的:
您向有人发送链接到 http://youporn.com/ 的链接,
您的有效载荷将它们重定向到您控制的网站, 模仿 YouPorn 的 CSS;
你问他们的凭据, 他们的信用卡号码等.
向目标发送带有你的有效载荷的 http://youporn.com/ 链接;
有效载荷将目标用户重定向到你控制的高仿 YouPorn 钓鱼网站;
向目标用户询问凭据, 信用卡号等请求.
我们输入了以下 payload 来进行漏洞测试:
正如你所看到的, 这里有一个小问题: http-equiv 中的破折号, 并未被插入到源代码中. 我决定使用双重编码尝试绕过. 首先我对破折号做了 HTML 编码, 然后又对其进行了 URL 编码.
破折号, - ,HTML 编码后为 - ,URL 编码后为%26%2345%3b:
bingo! 现在我们已经成功获取到了一个可以重定向用户 URL 的有效载荷.
标记为重复
与此同时, 我那发现并第一时间通知 YouPorn 的同时, 收到了来自 YouPorn 的以下答复:
实际上你报告的这个漏洞, 在你之前已被人提交过. 但那位提交者并未能提供有效的利用证明, 因此我当前只能将其标记为重复. 但机会的大门会向你们敞开, 如果你们能提供有效载荷, 我们将很乐意接收并为你们提供相应的奖励!
感谢你们!
从开放重定向到反射型 XSS
现在我们手中已经有了一个, 可以重定向用户 URL 的有效载荷.
我的脑海中突然灵光一现, 那么我们是否可以使用相同的技巧将破折号替换为>和<呢?
事实上这是可行的, 使用 "HTML-encode-then-URL-encode" 技巧, 我们可以插入任意的 Javascript:
成功弹框:
之后我们继续做了一些测试, 我们发现了 YouPorn HTML 渲染的一些奇怪的地方: 无论我们在有效载荷上做了多少次 HTML 编码递归, 服务器端仍然会完全的解码. 这意味着:
< 会被解码为 <
< 也会被解码为 <
&lt; 还是会被解码为 <
等.
结语
最后, 我们将有效载荷发送给了 YouPorn, 并最终获取到了 YouPorn 发放的 250 美金的奖励!
总之这个过程非常的有趣, 哦! 我突然想起来我手头的工作, 好了回归原点继续迁移我的 DNS 服务器!
来源: http://www.tuicool.com/articles/3ueI73E