LinuxWeb攻防kali

Mysql蜜罐:攻击者信息拿来吧你

2022-01-26  本文已影响0人  book4yi

本文仅作学习记录,如有侵权,请联系删除!!!

前言:


遥想去年7月,一个意外的电话打过来,对话内容大致如下:

不愿意透露姓名的安全从业者:请问你是这个手机号的机主xxx吗?
机主xxx:大叔你谁啊。你怎么知道我的手机号和姓名
不愿意透露姓名的安全从业者:你今年4月份某日下午是不是攻击了某省政府机构
机主xxx:我不是,我没有,你胡说
不愿意透露姓名的安全从业者:你再仔细想想,你踩蜜罐了,最好老实交代,后面可以争取宽大处理
机主xxx:哦豁完蛋

当然最后解释清楚了,大家相安无事,人生第一次踩蜜罐真是恐怖如斯。假设你在内网发现或扫到了一些MySQL的弱口令,你会去连吗?

Mysql任意文件读取:


mysql蜜罐通过搭建一个简单的mysql服务,如果攻击者对目标客户进行3306端口爆破,并且用navicat等工具连接蜜罐服务器,就可能被防守方读取本地文件,包括微信配置文件和谷歌历史记录等等,这样很容易被防守方溯源。

mysql中有一个load data local infile函数能够读取本地文件到mysql数据库中。

LOAD DATA INFILE语句用于高速地从一个文本文件中读取行,并写入一个表中。文件名称必须为一个文字字符串。LOAD DATA INFILESELECT ... INTO OUTFILE 的相对语句。把表的数据备份到文件使用SELECT ... INTO OUTFILE,从备份文件恢复表数据,使用 LOAD DATA INFILE

这个功能默认是关闭的,查看是否开启:

show global variables like 'local_infile';
set global local_infile=1;  # 开启

尝试读取本地的C盘目录下的win.ini文件:

load data local infile 'c:/windows/win.ini' into table test1 fields terminated by '\n';

流量分析:


  1. 第一个Greeting包返回了服务端的版本等信息:
  1. 第二个包为客户端发起登录请求:
  1. 第三个包,客户端发送了请求:SET NAMES utf8mb4

补充说明:从MySQL 5.5开始,可以支持4个字节UTF编码(utf8mb4 ),一个字符能够支持更多的字符集,也能够支持更多表情符号。utf8mb4兼容utf8,且比utf8能表示更多的字符。

  1. 连接建立之后客户端向服务端发起查询请求:

接下来服务端回复一个Response TABULAR,指定要查询的文件:

这里000001是指数据包的序号,fb是指包的类型,最后一个框是指要读取的文件名,而最前面的13是指文件名的长度(从fb开始,16进制),所以payload为:chr(len(filename) + 1) + "\x00\x00\x01\xFB" + filename

最后客户端向服务器发送文件内容:

从上面过程可以看出,在客户端向服务端发起查询后,服务端会返回一个Response TABULAR的响应包。而如果在这个数据包中指定文件路径,就可以读取客户端相应的文件。而服务端可以在回复任何客户端的请求时返回Response TABULAR响应包,这样就可以在客户端登录成功后,发送Response TABULAR响应包,读取客户端的相关信息。

利用方法:


当攻击者用爆破mysql密码的扫描器扫描到我们的mysql并连接上的时候,客户端(攻击者)会自动发起一个查询,我们(服务端)会给与一个回应,我们在回应的数据包中加入load data local infile读取攻击者的本地文件到我们数据库中,达到反制的目的。

在能够实现任意文件读取的情况下,我们的目的是尽可能获取攻击者的个人信息。在Windows中,Windows下,微信默认的配置文件放在:C:\Users\username\Documents\WeChat Files\All Users\config\config.data 中含有微信ID及网络名称:

而获取该文件还需要知道电脑用户名,一般用过一段时间的电脑在 C:\Windows\PFRO.log 中较大几率能找到用户名。

获取了微信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')

运行代码生成了对方二维码,扫码可以添加对方好友,由于最近wxid规则改版,所以扫码添加会提示当前页面无法显示。这时可以通过读取.从C:/Users/用户名/Documents/WeChat Files/wx_id/config/AccInfo.dat,获取微信号、绑定的手机号、邮箱等信息。

Github上已经有大佬写好了相关利用代码,项目地址:https://github.com/qigpig/MysqlHoneypot

但由于只能获取微信id以及生成的二维码,将相关代码进行补充,实现效果如下:

除了通过读取微信配置文件,还可以去读取Chrome的账号、历史记录等

C:/Users/' + username + '/AppData/Local/Google/Chrome/User Data/Default/Login Data
C:/Users/' + username + '/AppData/Local/Google/Chrome/User Data/Default/History

参考如下:


MYSQL蜜罐反制
Mysql溯源-任意文件读取
MySQL蜜罐获取攻击者微信ID

上一篇下一篇

猜你喜欢

热点阅读