网页被植入木马的入侵链路可通过apache access.log还原,重点抓上传动作:盯住post/put到/upload、/admin/upload等路径且状态码200响应体极小(如12字节)、uri含upload/file/image关键词、同一ip短时多后缀上传、ua异常(sqlmap/curl/burp)、referer为空或异常,并关联响应结果确认文件落地。

网页被植入木马,往往不是“一次成功”,而是攻击者先试探、再上传、最后执行。Apache 的 access.log 虽不记录文件内容,但能清晰还原整个入侵链路的关键动作——尤其是上传行为本身。重点不是找“木马文件名”,而是抓“上传动作的痕迹”。
盯住上传类请求方法和路径
木马通常通过 Web 表单、后台编辑器、文件管理器等接口上传。这些操作在日志中表现为特定的 HTTP 方法和 URL 模式:
- POST 请求集中出现在 /upload、/admin/upload、/wp-admin/admin-ajax.php、/index.php?up=1 等路径——尤其当响应状态码是 200 且响应体字节数异常小(如 12 或 37 字节),可能表示后门返回了简短成功标识
- PUT 或 POST 到 /shell.php、/a.php、/x.php 等短名 PHP 路径——即使文件不存在,若服务器配置允许解析上传后的临时文件或存在解析漏洞,这类路径就是高危信号
- 请求头含 Content-Type: multipart/form-data,且 URI 中带 upload、file、image、media 等关键词——用 awk 提取: awk '$6 ~ /"POST|PUT/ && $7 ~ /upload|file|image|media/ {print $0}' /var/log/apache2/access.log
识别可疑的客户端行为特征
真实用户极少高频、短时、跨路径上传;攻击者工具则有明显模式:
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
- 同一 IP 在 1 分钟内发起 5+ 次不同后缀的上传请求(如 .php、.phtml、.php5、.phar)——说明在绕过扩展名黑名单
- User-Agent 异常:为空、为 sqlmap/1.8、curl/7.68.0、python-requests/2.28 或包含 “hackbar”、“BurpSuite” 等字样
- Referer 为空或指向外部钓鱼页,而正常后台上传应来自 /admin/ 或 /wp-admin/ 等内部页面
关联响应结果与文件落地线索
光有上传请求还不够,需确认是否真正写入服务器:
- 状态码为 200 + 响应字节数极小((如 /upload.php?act=save 返回 {"code":1})——大概率已落盘
- 后续出现对该上传路径的 GET 访问(如 192.168.1.100 - - [20/Aug/2026:10:22:33] "GET /uploads/2026/08/a123.php HTTP/1.1" 200 4122)——这是木马被执行的铁证
- 检查 error.log 是否出现 fopen()、move_uploaded_file() 失败警告,有时上传失败也会留下痕迹,比如因目录不可写而报错,反向暴露了攻击者试图写入的位置
快速筛查命令组合
不用翻全量日志,一条命令直击上传入口:
- 查近 24 小时所有含上传语义的 POST 请求(去重 IP+路径):awk -v d=$(date -d '24 hours ago' '+%d/%b/%Y') '$4 ~ /\[.*'"$d"'[^]]+/ && $6 ~ /"POST/ && $7 ~ /upload|file|media|admin\/.*ajax|\.php\?/ {print $1,$7}' /var/log/apache2/access.log | sort -u
- 筛出上传后又被访问的 PHP 文件(即“上传→执行”闭环):awk '$6 ~ /"POST/ && $7 ~ /\.php$/ {post[$7]} $6 ~ /"GET/ && $7 ~ /\.php$/ && $7 in post {print $0}' /var/log/apache2/access.log










