0x01 前言:
22年1月的时候,我去学习了Mysql蜜罐服务器的原理及流量分析的整个过程,并找了个开源项目简单进行二次开发以获取攻击者个人信息,详情请见:Mysql蜜罐:攻击者信息拿来吧你
今年5月份再度使用时,发现新版微信的配置文件不再包含用户的相关信息,然后想到自己今年也fw很久了,至今还没产出,于是有了本文……
0x02 MysqlHoneypot:
项目地址:https://github.com/qigpig/MysqlHoneypot
MysqlHoneypot是一个用于模拟MySQL服务器的蜜罐程序,至今已经有两年没有更新了。
漏洞利用原理:
MySQL中的load data local infile函数可以读取指定的本地文件内容,并将数据插入到数据库中。该函数通常用于快速、批量地将本地计算机上的数据文件存储到MySQL数据库中。这个函数默认是启用的,可以让客户端允许将本地文件加载到MySQL服务器中。
该项目客户端与服务端交互的过程:
- 1、模拟伪装成一个Mysql服务器,MySQL蜜罐接受连接请求,并向客户端发送握手信息,包括服务端的版本信息、认证方式等。
- 2、接着客户端将认证请求发送给服务端。
- 3、服务端忽略用户输入的用户名密码信息,直接返回认证成功的结果。
- 4、认证成功后,客户端向服务端发送 SET NAMES 命令,告知服务端使用的字符集类型,从从而在后续的交互过程中能够正确地进行字符编解码。
- 5、服务端回复Response TABULAR给客户端,指定要读取客户端的某个文件。
- 6、客户端返回读取文件的内容:
服务端可以在回复任何客户端的请求时返回Response TABULAR响应包,这样就可以在客户端登录成功后,发送Response TABULAR响应包,读取客户端的相关信息。
结合自己之前的使用经验,谈谈这个项目的不足之处:
- 只能获取微信id以及生成的二维码(早已无任何实际用处)
- 无论用户输入任意用户名密码都返回认证成功的结果,可信度低
- 前端Web页面缺少日志记录模块
0x03 二次开发:
之所以选择它是因为之前有读过它的代码,该有的模块基本都有,比如Basic认证、Web前端结果展示、docker等,基本能满足需求,最终实现了以下功能:
- 交互优化:模拟了错误口令的返回信息,当成功命中用户名密码时读取文件。
- 读取模块:由原来的微信配置文件改成Chrome的账号、历史记录文件。
- 捕获模块:对读取模块获取的文件使用正则匹配邮箱和电话,将所有结果展示在前端。
- 日志模块:记录连接IP、连接次数、连接时间等信息,结果展示在前端。
- 监控模块:实时更新今日24小时的连接次数及IP、历史连接次数、连接次数最多的10个IP。
- 交互优化:
设置唯一弱口令,当输入错误口令时,自动获取本地局域网IP和用户名,返回正常的认证失败信息:
- 捕获模块:
对读取到的Login Data和History文件内容进行正则匹配,若匹配到邮箱和电话则显示在前端:
- 日志模块:
记录每个连接IP,利用第三方接口查询ISP,记录总连接次数、连接时间和IP归属地,存储到sqlite数据库。
- 监控模块:
实时更新今日连接次数和历史连接次数,24小时内的连接次数及IP的图表以及连接次数最多的10个IP:
0x04 使用演示:
0x05 后续计划:
- 能够让市面上常见的可用于Mysql爆破的工具成功命中口令,如超级弱口令爆破工具、goby、fscan等
网友评论