当Assetnote持续安全性(CS)监视您的攻击面时,它查找的内容之一就是WebPageTest的实例。WebPageTest是网站性能测试工具,可让您测试任何给定URL /主机的网络相关指标。
尽管可以通过修改settings.ini文件来启用基本身份验证,但建议进行基本身份验证以防止任何匿名访问。Assetnote CS标志的大多数WebPageTest部署未经身份验证,并且WebPageTest提供的一系列测试工具可用于服务器端请求伪造(通常称为SSRF,但对于WebPageTest而言,是一种功能),可令人反感)。
以前在Assetnote CS在Mozilla的AWS环境中发现了以下资产:
- wpt-vpn.stage.mozaws.net
- wpt1.dev.mozaws.net
这两个都是WebPageTest的实例,不需要身份验证,这是Assetnote CS首次检测到它是为了赏金。通过与Mathias的合作,我们审核了源代码,并且在短短的几个小时内,我们就能够创建一条导致远程执行代码的攻击链。
代码库中引起我们注意的第一件事是能够通过上载和提取任意Zip文件的功能/www/work/workdone.php。该脚本包含一些逻辑来限制从127.0.0.1以外的其他源进行访问,如以下代码片段所示:
...
!strcmp($_SERVER['REMOTE_ADDR'], "127.0.0.1")
...
我们待会儿再讲。
在同一文件中,我们找到了另一个潜在的矢量-逻辑,用于上传任意Zip并将其提取到已知位置:
第133-136行:/www/work/workdone.php
if (isset($_FILES['file']['tmp_name'])) {
ExtractZipFile($_FILES['file']['tmp_name'], $testPath);
CompressTextFiles($testPath)