0x01 不是很顺利的Nday利用
在一次渗透测试过程中发现了目标使用了Symfony框架,然后扫了下目录,发现存在app_dev.php 文件,尝试访问
发现开启了debug模式,Symfony 版本号为2.8.34 php版本5.6.40 也能查看phpinfo页面
然后在网上搜了一下Symfony debug模式利用,看到了这篇文章https://www.ambionics.io/blog/symfony-secret-fragment
发现是可以利用 /_fragment 去尝试执行命令,但是需要知道一个key,文章里提到了在Symfony <= 3.4.43.中存在一个默认key:ThisTokenIsNotSoSecretChangeIt
然后根据文章生成_hash,发现还是返回403
当时就以为key被修改了,然后去看了看Symfony 对应版本的代码,发现还存在一个 /_configurator 接口可以利用,我们直接访问/_configurator/final 就可以直接看到配置文件的内容
结果发现key值没变,那看来应该是自己生成/_hash的地方有问题,再回去细看了一下文章,发现了下面一段话
估计是要修改成http
python3 -c “import base64, hmac, hashlib; print(base64.b64encode(hmac.HMAC(b’ThisTokenIsNotSoSecretChangeIt’, b’http://xxxxx/app_dev.php/_fragment’, hashlib.sha256).digest()))”
然后拿生成的_hash再去访问
发现返回404,说明_hash校验成功了,那就尝试执行system