一觉醒来,服务器短信提醒temp里有恶意文件,一看果然如此。站点是wordpress,打开日志文件发现了特定时间的一些异常访问:
关键异常行为
1. 高度危险的请求(RCE 尝试)
172.70.215.77 - - [08/May/2025:05:01:04 +0800]
"POST /?%ADd+allow_url_include%3d1+%ADd+auto_prepend_file%3dphp://input HTTP/2.0" 200 24201
- 意图:远程代码执行(RCE)尝试。
- 解释:请求通过 URL 参数尝试开启
allow_url_include
并使用php://input
包含外部代码,这是常见的 PHP 漏洞攻击方式。 - 结论:这是一起明确的恶意攻击请求。
2. 尝试加载日志文件作为模板
172.71.24.52 - - [08/May/2025:05:06:47 +0800]
"GET /?m=home&a=assign_resume_tpl&variable=1&tpl=data/Runtime/Logs/Home/25_05_08.log HTTP/2.0"
172.71.24.132 - - [08/May/2025:05:07:09 +0800]
"GET /?a=display&templateFile=data/runtime/Logs/Portal/25_05_08.log HTTP/2.0"
- 意图:尝试通过模板注入读取/执行日志文件。
- 若系统未做防护,攻击者可将日志文件中的注入内容当作模板执行,进行代码执行(尤其是 ThinkPHP、Discuz 等旧系统易受影响)。
3. 重复的 RCE 攻击请求
162.158.91.43 - - [08/May/2025:05:07:29 +0800]
"POST /?%ADd+allow_url_include%3d1+%ADd+auto_prepend_file%3dphp://input HTTP/2.0"
- 与前面相同攻击方式,说明攻击者在持续尝试突破。
ChatGPT给出的建议

一、立刻进行的防护措施
1. 封锁恶意请求中的特征参数(.htaccess)
请将以下规则添加到你的 WordPress 根目录的 .htaccess
文件中(放在 # BEGIN WordPress
前):
<IfModule mod_rewrite.c>
RewriteEngine On
# 阻止包含 php://input 的攻击请求
RewriteCond %{QUERY_STRING} php://input [NC,OR]
RewriteCond %{QUERY_STRING} data:// [NC,OR]
RewriteCond %{QUERY_STRING} auto_prepend_file [NC,OR]
RewriteCond %{QUERY_STRING} allow_url_include [NC]
RewriteRule ^.* - [F,L]
# 禁止直接访问日志、配置文件等
<FilesMatch "\.(log|conf|ini|bak|inc|sql)$">
Order allow,deny
Deny from all
</FilesMatch>
</IfModule>
2. 安装并配置 WordPress 安全插件
推荐使用以下插件之一来强化安全:
- Wordfence Security:入侵检测、IP封锁、防火墙等功能强大。
- All In One WP Security:更轻量,适合入门用户,操作简单。
- iThemes Security:也提供模板注入、恶意 URL 防护。
3. 封锁可疑 IP 段(可选进阶)
你可以封锁如下 IP 段,方式有两种:
如果使用 .htaccess:
<Limit GET POST>
Order Allow,Deny
Allow from all
Deny from 172.70.
Deny from 172.71.
Deny from 162.158.
</Limit>
如果使用 Wordfence 插件:
进入“Blocking”功能中,添加这些 IP 段进行永久封禁。
二、清查与恢复建议
- 检查
/wp-content/uploads/
和/tmp/
目录,是否有可疑.php
文件,特别是:- 文件名混淆如
image.php
,shell.jpg.php
等。 - 修改日期为近期但你没有上传。
- 文件名混淆如
- 审查插件与主题是否存在未授权代码
- 不要使用从非官方渠道下载的插件/主题。
- 保持 WordPress、主题、插件全部为最新版本。
- 启用
disable_functions
限制危险函数(需修改 php.ini)
如果你有权限,可以在服务器配置中禁用如下函数: ini复制编辑disable_functions = exec,passthru,shell_exec,system,proc_open,popen,eval,assert
实际操作(我的)
考虑到方便,还是决定直接修改.htaccess文件
# === 防止通过 GET/POST 等方式传入敏感 PHP 参数 ===
<IfModule mod_rewrite.c>
RewriteCond %{QUERY_STRING} (\bphp://input\b|\bphp://filter\b|\bphp://stdin\b|\bdata://) [NC]
RewriteRule .* - [F,L]
</IfModule>
尘埃落定,这就是本次PHP攻击的应对,后续还要观察日志,看看实际效果怎么样。