我们已经准备好了,你呢?

2025我们与您携手共赢,为您的企业形象保驾护航!

最近很多南京的老杆子找到大师兄,说是他们自己官网和客户公司官网频繁被攻击挂马,而现在自媒体发达、上级部门监管严格,一旦形成互联网舆情,会很麻烦,于是大师兄决定腾出点时间,把这些攻击原理和手法梳理清楚。

一、网站被挂马攻击的原因和目的

1. ThinkPHP 框架历来存在被公开利用的 RCE/漏洞链,攻击者会利用这些已知漏洞或通用的文件上传/弱口令等手段一步步把 webshell 丢进网站,从而维持持久后门。

2. 攻击者上传的“木马 / webshell / 跳转脚本 / 引用外站”目的远不只是流量——常见目的包括持久化后门、投放广告/SEO 牟利、重定向到钓鱼/恶意下载、挖矿、代理/跳板、数据窃取并为更高级攻击(如勒索)做跳板。

3. 处置优先级:先隔离 → 保留证据(日志/快照)→ 扫描/定位后门 → 从干净备份恢复或彻底替换可疑文件 → 全面修补与加固

二、黑客常用的一步步攻陷流程(攻击链与说明)

下面按时间顺序给出典型流程,并在每一步标注“攻击痕迹/如何发现”与“对应缓解”。

1. 侦察(Reconnaissance)

- 收集站点 URL、ThinkPHP 版本、公开接口、第三方插件/主题、目录结构、暴露的管理入口等。

- 痕迹:大量扫描请求、爬虫样访问、指纹探测日志。

- 缓解:限制对敏感管理端点的公网访问(IP 白名单 / VPN / 管理端口改名)。

2. 批量扫描并利用已知漏洞(Exploit known CVEs)

- ThinkPHP 已有多个被大规模利用的 RCE 漏洞(历史上 CVE 与公开 PoC 被广泛利用,导致 webshell 投放)。攻击者会对互联网上的 ThinkPHP 实例自动化扫描并触发漏洞。

- 痕迹:同一时间对某 URL 发起异常请求、access.log 出现带有长 query 或奇怪路径的请求。

- 缓解:及时打官方补丁 / 升级框架;对已知漏洞设置 WAF 规则阻断。

3. 利用文件上传/不当验证(File upload bypass)

- 攻击者绕过上传检查,把 PHP 脚本当作图片/其他文件上传并放在可执行目录,从而执行 webshell。文件上传是最常见且高危的入口之一。

- 痕迹:uploads 目录出现 `.php`、可疑小名文件、文件修改时间异常。

- 缓解:上传目录禁止 PHP 执行、严格校验 MIME 与文件内容、重命名并保存到不可执行路径。

4. 弱口令/暴力破解或泄露凭证

- FTP/SSH/管理后台口令弱或凭证泄漏,攻击者通过上传工具直接写入 webroot。

- 痕迹:多次登录失败、异常来源 IP 的成功登录、未知账号创建。

- 缓解:强密码、2FA、限制登录 IP、关闭 FTP(改用 SFTP)、监控失败尝试并封禁。

5. LFI/RFI/SQLi 等链式利用(本地/远程包含、SQL 注入等)

- 通过包含漏洞或 SQL 注入写入文件或执行命令,从而落后门。

- 痕迹:access.log 中带有 `../`、`union/select`、或异常 POST 数据。

- 缓解:输入校验、参数化查询、最小权限 DB 账号、WAF。

6. 后门持久化(webshell、cron、后门账号)

- 一旦写入 webshell,攻击者会建立持久访问(修改 .htaccess、定时任务、添加管理员)。webshell 能远程执行命令、上传更多 payload、搭建代理、用于挖矿或大量重定向。

- 痕迹:网站目录中出现可执行 php 文件、.htaccess 被篡改、crontab 有陌生任务、web 访问返回异常跳转。

- 缓解:文件完整性监控、定期扫描、审查 crontab、关闭不必要服务。

7. 后续滥用:投放流量/SEO/挖矿/代理等

- 攻击者使用被控站点做多种事:SEO poisoning(注入大量垃圾页面以骗取搜索流量)、插入 iframe / 跳转投放广告或恶意软件下载、部署 JavaScript 挖矿、把服务器当代理/跳板等。目的:直接获利(广告/联盟/暗链/挖矿)、以站点流量做中转或扩散恶意软件。

三、“木马跳转 / 引用外站”的真实目的(不仅仅是“流量”)

常见动机:

- 快速获利:在页面插入广告/跳转到广告联盟、假商城,用广告点击/联盟返利赚钱(SEO 毒化 + 假站点获流量)。

- 传播恶意软件 / 钓鱼:把访客重定向到含恶意载荷的页面或钓鱼表单,实现二次感染或偷取凭证。

- 持久控制 & 基础设施利用:站点变成命令&控制(C2)、代理/跳板或暗链服务器,为其它攻击者或服务(如 proxy-as-a-service)提供资源。

- 资源滥用:部署浏览器挖矿脚本或把服务器变成挖矿节点,或使用服务器带宽/带宽代理获利。

- 掩饰更深层目标:有时候攻击者先做 SEO/跳转掩盖真正目标(例如长期数据窃取或为后续勒索做 SSR)。总体上,这些活动通常是“多重目的并行”的。

四、常见的“可检索”的入侵痕迹(便于快速定位)

建议首先做这些快速排查(不涉及破坏性操作):

- 查看最近被修改文件:找出 webroot 下最近 30 天内被改动的文件(例如 find /var/www -type f -mtime -30)并重点审查。

- 搜索常见可疑字符串(只是检测用途):eval(base64_decode(gzinflate(str_rot13(preg_replace.*/esystem($_assert($_

(这类是 webshell 常见的混淆/执行模式)。注:这仅用于检测/排查,不要把这些字符串作为判定唯一依据。

- 检查 .htaccess、index.php、模板文件是否被篡改(被插入 iframe、meta refresh、script 重定向)。

- 检查 crontab(尤其是 www-data 用户)是否有陌生定时任务,检查 /etc/cron.*

- 审查 access.log:是否有大量异常请求、同一 IP 的暴力登录、或对某些 URL 的探测尝试(指纹/PoC 请求)。

- 数据库查找:检索页面内容是否被注入后门 iframe 或隐藏链接(SEO 毒化通常会把垃圾页面写入 DB)。

- 远程回连/网络检测:webshell 常会建立到 C2 的外部连接(可用 IDS/WAF 或主机防护查看异常外连)。

五、紧急应对步骤(入侵发现后,按优先级做)

1. 立刻把站点设为维护/下线(对外只返回维护页),防止继续传播与二次感染。

2. 备份并保全证据:拷贝当前文件(只读快照)与完整访问/错误日志、数据库快照(用于事后溯源)。

3. 把服务器网络隔离或关闭对外写入权限(视情况可把站点从负载均衡下线)。

4. 扫描并定位后门(结合上面的字符串检测与 FIM 工具),把可疑文件移到 quarantine 目录(不要直接删除原始证据)。

5. 用干净备份或重新从源代码部署(不要直接清理可疑文件然后继续上线——清理不彻底会留后门)。

6. 全量更换所有相关密码/密钥/证书(FTP、DB、管理后台、第三方 API 密钥、加密盐等)。

7. 修补漏洞并升级(ThinkPHP 及第三方插件),在修补前开启 WAF 临时防护拦截已知利用尝试。

8. 上线后强化监控:FIM(文件完整性监控)、IDS、日志告警与频繁的远程扫描。

六、可立即落地的加固清单(优先级排序)

紧急(0~7 天)

- 升级 ThinkPHP 到官方推荐的最新稳定版本并应用所有安全补丁。

- 禁止上传目录执行 PHP:Apache 用 `.htaccess` 加 `php_flag engine off` 或移除 handler;Nginx 在上传目录 `location` 中拒绝 `.php` 执行。示例:

- Apache(uploads 目录下 `.htaccess`):

php_flag engine off RemoveHandler .php .phtml .php3

- Nginx(配置示例):

location /uploads/ {  location ~ .php$ { deny all; } }

- 立刻更换所有管理口令与相关服务密码、禁用匿名/明文 FTP(改 SFTP)。

- 在 WAF/Cloudflare/安全边界临时阻断已知 exploit 模式与可疑请求。

中期(1~4 周)

- 实施文件完整性监控(FIM),一旦 webroot 被修改立即告警(Wazuh、OSSEC 等)。

- 审计并最小化文件/目录权限:网站文件属主与运行用户分离,敏感配置(如数据库配置)权限 600,web 可读可执行权限限制最少。

- 关闭 PHP 中不必要的函数(`disable_functions` 中加入 `exec, system, shell_exec, passthru, popen, proc_open` 等)并设置 `open_basedir`。

- 对文件上传做严格校验:基于 MIME 检测 + 文件内容(magic bytes) + 扩展名白名单 + 保存到不可执行目录并重命名。

长期(1~3 个月)

- 把代码部署流程改为 CI/CD:不直接在生产服务器上编辑/上传代码,所有变更走代码仓库并做审计。

- 定期第三方安全扫描(SAST/DAST)与渗透测试,定期查看补丁公告(特别是针对 ThinkPHP 的安全通告)。

- 强化日志与告警(异常请求速率、异常写入、未知用户登录等自动告警),并制定明确的应急响应流程(playbook)。

- 对外公开接口限速、做 WAF 规则持续演化(参考社区/厂商规则),并把管理端限制到内网或 VPN。

七、检测工具与参考

- 检测/监控:Wazuh / OSSEC(文件改动/行为检测)、ClamAV + Maldet(恶意文件扫描)、Nessus / Tenable 做 webshell & 漏洞扫描。

- 情报/案例参考:Akamai、Fortinet、Tenable、Sucuri 的事件报告与漏洞通告,能帮助对抗针对 ThinkPHP 的活跃攻击。

八、优先操作清单(可复制执行的步骤)

1. 立即把站点切换到维护模式(避免访客继续被感染)。

2. 备份并下载:`/var/www`、`logs/access.log`、`logs/error.log`、数据库快照(保存为只读证据)。

3. 快速定位可疑文件:查看 7 天内改动文件并导出清单;检索包含 `eval(base64_decode`、`gzinflate` 等字符串的文件(仅作检测)。

4. 如果有干净的备份:优先从干净备份恢复站点并立即升级框架;没有备份则在隔离环境里人工清理 + 复查。

5. 更换密码/密钥,删除未知账号,关闭 FTP,打开 SFTP + 强口令。

6. 上线后立即部署 WAF 与 FIM,并保持 24–72 小时的高频日志监控。

九、具体解决办法

一、常用检测命令清单(Linux环境)

1. 查找最近7天被修改的可疑文件:

find /var/www/html -type f -mtime -7 -exec ls -l {} ;

2. 查找PHP文件中包含可疑函数的文件:

grep -R --include="*.php" "eval(" /var/www/html

grep -R --include="*.php" "base64_decode" /var/www/html

grep -R --include="*.php" "assert(" /var/www/html

grep -R --include="*.php" "system(" /var/www/html

3. 查找隐藏木马(含长字符串混淆代码):

grep -R --include="*.php" "preg_replace.*/e" /var/www/html

grep -R --include="*.php" "shell_exec" /var/www/html

grep -R --include="*.php" "gzinflate" /var/www/html

4. 查找网站目录下可疑的 .ico / .jpg / .png 文件内是否包含PHP代码:

find /var/www/html -name "*.ico" -o -name "*.jpg" -o -name "*.png" | xargs grep "

5. 查找可疑.htaccess 文件:

find /var/www/html -name ".htaccess" | xargs grep "RewriteRule"

二、Nginx 防护配置片段

在 server { } 配置块中添加:

location ~* .(php|php5|php7|phtml)$ {
  try_files $uri =404;
  fastcgi_pass unix:/run/php/php7.4-fpm.sock;
  fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  include fastcgi_params;
}

location ~* .(bak|zip|tar|gz|sql)$ {
  deny all;
}}

location ~ /.ht {
  deny all;
}}

三、Apache 防护配置片段(.htaccess)

<FilesMatch ".(bak|zip|tar|gz|sql)$">
  Order allow,deny
  Deny from all
</FilesMatch>

<FilesMatch "^(phpinfo|info).php$">
  Order allow,deny
  Deny from all
</FilesMatch>

<Directory "/var/www/html/uploads">
  php_admin_flag engine off
  Options -ExecCGI
  AllowOverride None
</Directory>

四、目录权限设置建议

1. 网站代码目录:chmod -R 755 /var/www/html

2. 上传目录:chmod -R 755 /var/www/html/uploads

3. 配置文件(含数据库密码):chmod 640 /var/www/html/application/config.php

4. 禁止 www 用户对非上传目录有写权限,只允许上传目录具备写权限。

5. 建议上传目录独立存储,开启防跨目录执行。

参考与来源(节选)

- Akamai: “Active exploitation of ThinkPHP” 分析报告(关于 CVE 被利用并投放 webshell)。

- Tenable / FortiGuard:关于 ThinkPHP RCE 被用来部署各种恶意软件的通报。

- Sucuri:web shell、网站被挂马与清理/防护实践的研究报告与年报。

- PortSwigger(Web Security Academy):文件上传漏洞原理与绕过方法(用于理解攻击面和如何防护)。

- Wazuh / Acunetix / F5 等关于 webshell 检测与长期监控的建议与工具说明。


我们凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设、网站改版、域名注册、主机空间、手机网站建设、网站备案等方面的需求...
请立即点击咨询我们或拨打咨询热线: 138-519-41123,我们会详细为你一一解答你心中的疑难。项目经理在线

我们已经准备好了,你呢?

2025我们与您携手共赢,为您的企业形象保驾护航!

在线客服
联系方式

热线电话

138-519-41123

上班时间

周一到周五

公司电话

138-519-41123

二维码
微信
线