Metasploit MySQL目录与文件暴力枚举技术详解

本文详细介绍了基于Metasploit框架的MySQL目录与文件暴力枚举模块的开发与应用,涵盖技术原理、权限配置、目录验证及实际扫描示例,帮助渗透测试人员高效识别目标系统的敏感文件与目录结构。

上周Tim Tomes在Pauldotcom博客上发表了一篇关于使用MySQL枚举文件和目录的文章。一看到这篇文章,我就认为它非常适合自动化[1],因此我为其编写了一个Metasploit模块[2]。

Tim已经很好地解释了扫描的工作原理,因此我仅补充在测试模块时发现的几个要点。

首先,如果启用了严格模式,MySQL会抛出关于尝试将过多数据挤入小空间或错误数据类型的错误,这没关系——如果它成功获取数据并尝试挤入,就意味着文件存在。

要使此功能正常工作,您唯一需要的权限是FILE权限。根据MySQL规则,该权限必须作为全局选项授予,而不是授予单个数据库。如果您想测试,可以使用以下命令设置用户:

1
2
3
4
5
mysql> grant file on *.* to filetest identified by 'xxx';
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

如果要检查的文件存在但MySQL用户无法读取(例如/etc/shadow),则MySQL会报告该文件不存在,我未能找到解决方法。

最后,至少在Linux上,目录不需要尾部斜杠。如下例所示,/tmp和/tmp/都被识别为目录。

非常感谢Juan Vazquez帮助我完成了以正确格式将文件提交到仓库的过程。使用Git比我们过去仅向票务系统提交文件要困难得多,但经过几次尝试后,它开始变得有意义。

该模块名为auxiliary/scanner/mysql/mysql_file_enum,现已纳入主Metasploit仓库,您只需更新即可获取。以下是实际操作示例:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
msf auxiliary(mysql_file_enum) > show options

Module options (auxiliary/scanner/mysql/mysql_file_enum):

   Name           Current Setting  Required  Description
   ----           ---------------  --------  -----------
   DATABASE_NAME  test             yes       要使用的数据库名称
   FILE_LIST      /tmp/files       yes       要枚举的目录列表
   PASSWORD       xxx              no        指定用户的密码
   RHOSTS         127.0.0.1        yes       目标地址范围或CIDR标识符
   RPORT          3306             yes       目标端口
   TABLE_NAME     gUtLyhCi         yes       要使用的表名 - 警告:如果表已存在,其内容将被破坏
   THREADS        1                yes       并发线程数
   USERNAME       root             yes       认证用户名

msf auxiliary(mysql_file_enum) > run

[+] 127.0.0.1:3306 - /tmp是目录且存在
[+] 127.0.0.1:3306 - /tmp/是目录且存在
[+] 127.0.0.1:3306 - /etc/是目录且存在
[+] 127.0.0.1:3306 - /etc/passwd是文件且存在
[*] 已完成1台主机的扫描(100%完成)
[*] 辅助模块执行完成

[1] 正如我之前所说,您不必会编码才能成为渗透测试员,但在这种情况下,它确实很有帮助。

[2] 最近有人写博客抱怨Metasploit正在接管漏洞利用市场,并迫使每个人在框架中编写漏洞利用程序。我将此编写为Metasploit模块的原因不是被迫,而是因为这意味着其他人已经完成了所有艰苦的工作,包括用户输入、样式化输出和访问库。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计