Mysql_exec流量分析(应急响应实操)

题目溯源

1
2
3
4
5
1. 攻击者登录mysql失败多少次,提交答案例如:123
2. 攻击者执行的第一个命令返回结果是什么?提交的字符串例如:www-data
3. 攻击者通过udf提权的方式上传了一个插件,提交该插件的小写md5值
4. 该插件被写入到什么位置?提交答案例如:/usr/lib/mysql.elf
5. 攻击者窃取了哪些文件?提交的文件名称全小写,并更具小写字母的顺序提交,例如aa.txt-ab.txt-aa.txt

攻击者登录mysql失败多少次?

溯源其实就是找特征的过程。发现登录失败的包都有Error Code,直接过滤就好。

image-20250308230917702

攻击者执行的第一个命令返回结果是什么?

小知识:一个竖线包含的就是同一个会话。

题目的问题其实就是就是找udf返回的结果是什么,我们直接跟踪流,最终我们在最长的这个会话发现了异常。

image-20250308231208569

把so文件写入到 /usr/local/mysql/lib/plugin,后面还有自定义函数sys_eval

image-20250308232438507

把16进制解码一下就能看到执行的命令

image-20250309135100758

攻击者通过udf提权的方式上传了一个插件,提交该插件的小写md5值。

还是在这个流里面,0x7f454c46表明存入的是一个 ELF 可执行文件的二进制数据。可以看到这个插件是分段传输的

image-20250308231804540

根据数据包的特征,我们可以用这个语法过滤所有的包,mysql contains “sqlmapfile” && mysql contains “0x”

image-20250309005532038

用python脚本复原即可

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
import pyshark
import re
import binascii

def extract_mysql_hex_data(pcap_file):
display_filter = 'mysql contains "sqlmapfile" && mysql contains "0x"'
cap = pyshark.FileCapture(pcap_file, display_filter=display_filter)
hex_pattern = re.compile(r"0x([0-9a-fA-F]+)")
hex_data = ""

for packet in cap:
if 'MYSQL' in packet:
mysql_data = str(packet['mysql'].query)
matches = hex_pattern.findall(mysql_data)
for match in matches:
hex_data += match

return hex_data

def main():
pcap_file = input("请输入PCAP文件路径: ")
hex_data = extract_mysql_hex_data(pcap_file)

if hex_data:
print(f"提取的十六进制数据: {hex_data}")
save_option = input("是否保存为文件?(y/n): ")
if save_option.lower() == 'y':
output_file = input("请输入要保存的文件名(如 recovered_udf.so): ")
binary_data = binascii.unhexlify(hex_data)
with open(output_file, "wb") as udf_file:
udf_file.write(binary_data)
print(f"UDF .so 插件已成功保存为 {output_file}")
else:
print("未保存文件。")
else:
print("没有提取到有效的十六进制数据。")

if __name__ == "__main__":
main()
1
ab27f6c7634e9efc13fb2db29216a0a8

image-20250309135229885

该插件被写入到什么位置?

查看流即可

image-20250309005648396

攻击者窃取了哪些文件?

查看流即可

image-20250309010429476

原来还有一个题目 数据库的第一个用户的登录密码是多少?

这里出题失误,不能解密这个密码,不过无伤大雅。

image-20250309010618118

参考连接

第一期Mysql_exec.pcap题解


Mysql_exec流量分析(应急响应实操)
https://sp4rks3.github.io/2025/03/08/应急响应/Mysql_exec流量分析/
作者
Sp4rks3
发布于
2025年3月8日
许可协议