挖洞经验 | 看我如何挖掘成人网站YouPorn的XSS并成功利用
由于我个人时间的限制,因此我很少或者说是几乎不参加赏金计划任务。虽然我早早的就注册了HackerOne,但你们可以到 我的主页并没有任何的记录。在这里我不得不提及我的 同事,他与我截然相反,可以说他把大部分时间都花在了研究赏金计划上。就在上个月的一个傍晚,当我们连接到我们的工作Jabber server时,他告诉我成人网站 YouPorn也已在HackerOne上,启动了他们的bug奖励计划:
他:今天youporn加入了bug赏金计划
我:在hacker one?
他:是的
我:没时间,我正在迁移我的DNS服务器
当我正在阅读关于绑定的文档时,他回复了我:
他: oh shit,不敢相信,搜索栏中存在可利用的XSS
事情开始变得有趣起来,使我不得不停下手中的工作。我很惊讶,这个问题之前竟然没有人能发现它。搜做表单中的XSS是最基本的情况之一,我和我的朋友都经常逛YouPorn,但从来没有发现过这个问题。
时间对我们来说是非常宝贵的,我们必须要在其他人之前利用并报告该漏洞。
从缺少过滤到开放重定向
我启动了浏览器和Burp,并在搜索表单上发送了一个请求。我搜索了foobar”。正如你在下面的截图中看到的那样,搜索词是在 meta标签中,以没有任何过滤(大写字母除外)的形式输出的:
但当我们尝试写入关闭标签,并添加了Javascript payload,我们发现我们的payload并未被执行:
虽然如此,但我们仍然决定利用meta HTML标签。这是一个非常强大的标签,因为它包含有http-equiv指令。该 指令相当于http的文件头作用。
http-equiv指令将值设为refresh,可用于将用户重定向到其他页面。如果发生网络钓鱼攻击,这种 开放重定向漏洞是非常有用的:
您向有人发送链接到 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; 也会被解码为 <
- &amp;lt; 还是会被解码为 <
- 等。
结语
最后,我们将有效载荷发送给了YouPorn,并最终获取到了YouPorn发放的250美金的奖励!
总之这个过程非常的有趣,哦!我突然想起来我手头的工作,好了回归原点继续迁移我的DNS服务器!
*参考来源: allyourbase,FB小编 secist 编译,转载请注明来自FreeBuf.COM