主页 > 网络知识 > 内网渗透测试:MySql的利用与提权思路总结

内网渗透测试:MySql的利用与提权思路总结

 

image

 

MySQL 是世界上最流行的关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的 RDBMS(Relational Database Management System:关系数据库管理系统)应用软件之一。全球很多著名公司和站点都使用Mysql作为其数据库支撑,并且很多架构都以Mysql作为数据库管理系统,例如LAMP、和WAMP等,在针对网站渗透中,很多都是跟Mysql数据库有关,各种Mysql注入,利用Mysql来getshell、Mysql提权,等等。本文,笔者我对Mysql在渗透测试中的常见的基础利用进行了详细的总结,包括利用MySQL获取webshell、MySQL提权以及几个MySQL的0day漏洞等。

MySQL相关信息收集

不管是你渗透什么玩意儿,信息收集都是首要的一步。在行动之前,我们需要搞清楚,目标主机上是否存在MySQL、MySQL运行在默认的端口还是指定的端口、MySQL的版本信息、MySQL用户信息等等。

Mysql默认端口是3306端口,但也有自定义端口,针对默认端口扫描主要利用扫描软件进行探测。我们可以用nmap等端口扫描工具对MySQL的端口进行扫描。

如果已经获得了目标MySQL的密码,我们可以使用该用户名和密码扫描获取指定IP地址的端口信息以及mysql数据库相关信息:

nmap -sV -sC 192.168.1.13 nmap -sV -sC 192.168.1.13 -p 3306

Nmap还内置了多个mysql相关脚本,有审计,暴力破解,hash、空密码扫描、枚举、基本信息、查询、变量等等:

/usr/share/nmap/scripts/mysql-audit.nse /usr/share/nmap/scripts/mysql-brute.nse /usr/share/nmap/scripts/mysql-databases.nse /usr/share/nmap/scripts/mysql-dump-hashes.nse /usr/share/nmap/scripts/mysql-empty-password.nse /usr/share/nmap/scripts/mysql-enum.nse /usr/share/nmap/scripts/mysql-info.nse /usr/share/nmap/scripts/mysql-query.nse /usr/share/nmap/scripts/mysql-users.nse /usr/share/nmap/scripts/mysql-variables.nse /usr/share/nmap/scripts/mysql-vuln-cve2012-2122.nse

能不能用不知道,反正我是没用过。

Metasploit也有几个可用于收集MySQL信息的模块:

获取MySQL相关信息: auxiliary/admin/mysql/mysql_enum auxiliary/scanner/mysql/mysql_version 文件枚举和目录可写信息枚举: auxiliary/scanner/mysql/mysql_file_enum auxiliary/scanner/mysql/mysql_writable_dirs

另外,我们还可以使用sqlmap通过注入点扫描获取目标数据库的信息。sqlmap在测试注入点时,会枚举出目标主机的数据库类型、版本等信息。

通过MySql获取服务器权限 获取MySql连接密码

假设目标服务器开启3389端口,并且允许我们进行远程访问的话,我们可以采取爆破MySQL用户密码的方法,获取MySQL的权限。

在渗透测试中,获取MySql连接密码的思路大致有以下几种:

MySQL 口令爆破

当我们通过信息收集已经知道目标主机上运行有MySql服务时,我们可以对其连接密码进行爆破,但这种方法一般是不会成功的,爆破成功的几率近乎为零。除非管理员用的是弱口令,我们才有尝试一下爆破的必要。但为了提高爆破成功的概率,社工也是不可缺少的。我们可以通过收集一个人的各种信息,例如姓名、社交平台账号/昵称、手机号、生日、伴侣姓名/生日、职业等信息,通过这些写信息生成针对性的字典,利用该字典进行爆破。

如若你真想进行 MySQL 口令爆破,可以用以下几种方法:

(一)通过metasploit相关模块进行爆破

Metasploit的auxiliary/scanner/mysql/mysql_login模块可用来登录mysql,亦可用来爆破mysql口令:

use auxiliary/scanner/mysql/mysql_login set RHOSTS 192.168.1.13 set pass_file /tmp/wordlists.txt # 设置字典 set username root run

 

image-20210123210756275

 

(二)使用nmap扫描并破解密码

(1)对某一个IP或者IP地址段进行mysql root默认密码暴力扫描并破解:

nmap --script=mysql-brute.nse 192.168.1.13 nmap --script=mysql-brute.nse 192.168.1.13 -p 3306 nmap --script=mysql-brute.nse 192.168.1.1-255

也可以自定义账号密码字典。

nmap -p 3306 --script=mysql-brute.nse userdb=/tmp/passdb.txt passdb=/tmp/pass.txt 192.168.1.13

(2)检查mysql root空口令

nmap --script=mysql-empty-password.nse 192.168.195.130

MySQL 哈希值爆破

MySQL的用户名密码哈希值保存在mysql库的user表中:

mysql> select host, user, password from mysql.user; +-----------+------+-------------------------------------------+ | host | user | password | +-----------+------+-------------------------------------------+ | localhost | root | *36BCFC********************C617716EE3DC63 | | ubuntu | root | *36BCFC********************C617716EE3DC63 | | 127.0.0.1 | root | *36BCFC********************C617716EE3DC63 | | ::1 | root | *36BCFC********************C617716EE3DC63 | +-----------+------+-------------------------------------------+ 4 rows in set (0.00 sec) mysql>

直接将获取到的哈希值放到cmd5.com在线哈希破解网站上在线破解即可。

从网站泄露的源代码中寻找数据库密码

说点什么吧
  • 全部评论(0
    还没有评论,快来抢沙发吧!