流量分析
在Wireshak抓包可以看到正常的执行流程如下:
● Client向Server发起Load data local infile请求
● Server返回需要读取的文件路径
● Client读取文件内容并发送给Server
● PS:在本机上启动服务端与客户端,启动wireshark 抓包,要选择回环接口:Adapter for lookback traffic capture ,如果选择本地连接,会抓不到流量包。
MySQL客户端使用TCP协议作为底层传输协议,而使用Mysql公司自身的mysql Protocol协议作为应用层协议。我们可以通过Wireshark抓包工具,对MySQL客户端访问服务器过程中交换的mysql Protocol协议进行分析,从而深入理解MySQL数据库软件的工作原理。
附Wireshark支持分析的协议表:
本文使用两台电脑实现抓包操作,一台电脑作为服务器(ip: 192.168.0.102),另外一台电脑作为客户端(ip: 192.168.0.108)。使用Wireshark抓取MySQL数据包操作步骤如下:
1.将Wireshark软件打开,并在过滤器里输入“mysql”,然后启动监听过程;
2.使用客户端工具访问服务器
3.查看MySQL客户端登陆服务器捕捉过程
附上查询数据表数据的抓包截图:
注: mysql 协议默认分析的是 3306端口的数据;如果你的端口不是3306,请先在如下配置修改端口分析
wireshark-》编辑-》首选项-》protocol下找到myqsl
网络协议
TCP/IP协议图
筛选mysql流量
接着进行抓包。
通过过滤条件过滤出报文 协议 mysql 或端口 tcp.port == 3306
在Greeting包返回了服务端的版本等信息
然后使用navicat客户端连接服务端。接着看到一个Request Query包,客户端发送请求。
在客户端连接MySQL服务端后,向服务端发起查询请求
服务端返回一个Response TABULAR,指定读取的文件路径
客户端读取文件内容并发送给服务端
从上面交互过程可以看出,在Client向Server发起查询后,Server会返回一个Response TABULAR的响应包。而如果在这个数据包中指定文件路径,就可以读取Client相应的文件。实际上Server可以在回复任何Client端的请求时返回Response TABULAR响应包,而不仅仅是在Client发起Load data local infile后。
应用场景
攻击者在对目标网站进行攻击时,通常会发现网站的一些漏洞,我们这里使用蜜罐技术,故意暴露我们的MySQL数据库,将数据库设置弱口令,让攻击者可以爆破出账号密码,使用工具进行连接。攻击者在使用navicat连接我们的数据库时成功后,我们可以执行代码,利用MySQL读取文件获取到攻击者的手机号、微信号、地址等信息。
mysql蜜罐读取敏感信息
使用方法
下载文件之后,启动3306端口
python2 exp_dicc.py 3306
成功读取
C:/windows/win.ini
C:/windows/system.ini
读配置文件
读取微信id
在Windows中,Windows下,微信默认的配置文件放在:C:\Users\username\Documents\WeChat Files\All Users\config\config.data 中含有微信ID及网络名称:
读取手机号和微信ID的方法(默认常见微信文件路径):
通过C:/Windows/PFRO.log获取windows用户名
通过C:/Users/用户名/Documents/WeChatFiles/AllUsers/config/config.data获取wxid
通过C:/Users/用户名/Documents/WeChatFiles/wx_id/config/AccInfo.dat获取微信号、手机号
可以通过这串代码来将id转换为二维码。
import qrcode
from PIL import Image
import os
# 生成二维码图片
# 参数为wxid和二维码要保存的文件名
def make_qr(str,save):
qr=qrcode.QRCode(
version=4, #生成二维码尺寸的大小 1-40 1:21*21(21+(n-1)*4)
error_correction=qrcode.constants.ERROR_CORRECT_M, #L:7% M:15% Q:25% H:30%
box_size=10, #每个格子的像素大小
border=2, #边框的格子宽度大小
)
qr.add_data(str)
qr.make(fit=True)
img=qr.make_image()
img.save(save)
# 读取到的wxid
wxid = 'wxid_u3mntwd4glaq22'
qr_id = 'weixin://contacts/profile/' + wxid
make_qr(qr_id,'demo.jpg')
可以通过读取.从C:/Users/用户名/Documents/WeChat Files/wx_id/config/AccInfo.dat,获取微信号、绑定的手机号、邮箱等信息。