🎯 介绍
在bug赏金狩猎的狂野世界中,有时您会偶然发现黄金。这是我在同一个程序中发现的两个独立错误的故事,但位于不同的地方。
一个最初是一个看似不可利用的存储型 XSS 漏洞,但通过一点创意,我把它变成了一个开放的重定向。另一个?一个具有良好防御机制的 CSRF 漏洞 — 直到我找到一种巧妙的绕过 .
喝杯咖啡,让我们开始这个双重功能的漏洞赏金冒险吧!
🐞 错误 #1:长度受限的有限存储 XSS
我正在测试一个允许用户输入显示名称的应用程序。经过一番模糊测试后,我发现我的输入被反映在多个页面上,而没有进行适当的清理。甜!但有一个问题:它只允许 16 个字符。这个限制粉碎了我注入经典标签的希望。<script>
🧠我尝试使用的有效负载:
<script>alert(1)</script> 25 chars long
<svgonload=alert()> 20 chars long
但是,嘿,有志者事竟成!我开始考虑极简的有效载荷。经过一番试验和错误,我找到了这个漂亮的 16 个字符的有效载荷:
<ahref=//a.ru>x
这个微小的有效载荷做了两件事:
- 创建了一个可点击的 open 重定向到(例如攻击者域)。
//a.ru
-
规避了字符长度限制,同时仍注入了功能性 HTML 元素。
有了这个,我有一个存储的 XSS,它会导致一个开放的重定向,这意味着我可以诱骗所有用户访问恶意网站。有效负载在目标中的任何地方执行 聊天 、 提要 、 流 这对所有用户都产生了巨大影响
🔒 错误 #2:具有基于反向链接的旁路扭曲的 CSRF
隐藏的缺陷
虽然存储的 XSS 为我提供了一个攻击媒介,但我对应用程序博客部分的探索发现了另一个弱点。用户可以在博客文章上发表评论,但评论提交过程缺乏强大的 CSRF(跨站点请求伪造)保护。该应用程序没有使用安全的 CSRF 令牌,而是仅依赖于检查 Referer 标头来验证请求。
🧠 想法
完全依赖 Referer 标头是一种有风险的做法,并且会为漏洞利用打开大门。以下是我如何将此缺陷转化为有效漏洞的方法:
逐步开发:
- 制作恶意表单:我在攻击者控制的网站上使用一个短域(小于 6 个字符,例如)构建了一个简单的 HTML 表单。作为概念验证,我通过 hosts 文件将此域映射到我的攻击者 IP。
poc.lo
- 绕过 Referer 检查:我将文件重命名为 以绕过应用程序的反向链接检查,从而允许将恶意请求接受为有效请求。
dating.target.ru.html
并且 exploit 正在按预期工作:
这个 CSRF 缺陷清楚地提醒我们,依赖过时的安全措施(例如单独的 Referer 标头)可能会使应用程序很容易被利用。
给其他猎人的经验教训
- 接受约束:
16 个字符的限制等限制会迫使您进行创新。最好的有效载荷往往源于必要性。 - 不要低估孤立的 Bug:
每一个漏洞,无论多么小或与其他漏洞分离,都有可能以危险的方式被利用。 - 现代化安全措施:
仅依靠 Referer 标头进行 CSRF 保护是不够的。强大的防御措施(例如 CSRF 令牌)是必不可少的。 - 坚持不懈的回报:
保持好奇心,不断测试。有时,应用程序中最容易被忽视的部分隐藏着最大的风险。
结论
在不断发展的网络安全世界中,即使是最小的漏洞也可以为创造性思维揭开机会宝库。我的旅程——从制作一个极简的存储 XSS 有效负载到通过巧妙的域作绕过 CSRF 保护——强化了每个错误都是一个等待被讲述的故事。
这次经历告诉我,约束往往会激发创新,而坚持不懈是发现最安全系统中隐藏缺陷的关键。让我们提醒我们:在漏洞赏金猎杀领域,没有漏洞是太小的,每个漏洞都有可能产生重大影响。
保持你的好奇心,保持你的技能敏锐,永不停止探索未知。如果您有自己的事迹要分享,请在下面的评论中加入对话 — 我们可以一起构建一个更安全的数字世界。
祝您狩猎愉快,愿您的漏洞赏金奖励永远对您有利!
原文始发于微信公众号(安全狗的自我修养):我从有限的存储XSS到开放重定向和偷偷摸摸的CSRF Referrer Bypass的旅程
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论