
核心要点(TL;DR)
- 暗链多为批量注入的隐藏外链,优先用grep按特征串全站扫描定位。
- 清理暗链前必须先查杀webshell并修复入口,否则会二次感染。
- 用文件哈希基线比对可快速找出被篡改的页面文件。
- 恢复后配置网页防篡改与只读权限,并提交搜索引擎申诉。
早上打开搜索资源平台,发现站点出现大量陌生外链、快照被篡改,或者用户反馈点进页面跳转到博彩站——这大概率是网页被植入暗链了。暗链的可怕之处在于它通常对访客不可见,却在悄悄消耗你的域名权重,还可能伴随webshell后门。本文面向要立刻动手的运维和站长,按“发现—定位—查杀—修复—加固—恢复”的顺序给出可执行命令和检查清单,帮你尽快止损。
一、先判断:暗链的常见形态与危害
暗链指攻击者在你页面中插入的隐藏外链,常见隐藏手法包括:
- CSS隐藏:
display:none、visibility:hidden、font-size:0; - 定位隐藏:
position:absolute;left:-9999px; - 颜色伪装:文字与背景同色;
- 脚本注入:JS动态写入链接,源码中不易直接看到;
- 数据库注入:动态页面从被篡改的字段渲染出暗链。
危害不止SEO:搜索引擎可能判定站点被黑导致降权,暗链常与webshell、恶意跳转共存,攻击者还可能借此长期控制服务器。因此排查暗链本质是一次完整的入侵应急。
二、定位:全站扫描暗链代码
第一步先隔离现场:暂停发布、备份站点目录与数据库,避免清理时破坏证据。然后按特征串扫描:
grep -rn --include=*.html --include=*.php -E "display:\s*none|visibility:\s*hidden|left:\s*-[0-9]{3,}px" /var/www/site再按可疑外链域名与常见黑词扫描:
grep -rniE "(casino|porn|彩票|博彩)" /var/www/site | head -50
缩小范围的两个技巧:
- 按修改时间找最近被动过的文件:
find /var/www/site -type f -mtime -7 -name "*.php"; - 与发布包或版本库比对:
diff -r /var/www/site /backup/site_clean。
动态站点还要查数据库中被注入的字段,例如文章内容、友情链接、配置表,导出后同样用grep匹配可疑域名。
三、查杀:找入口,清后门
只删暗链等于没处理。暗链能进来,说明存在写入入口,常见为弱口令后台、上传漏洞、过期插件、被拿下的webshell。排查清单:
| 检查项 | 命令/方法 | 关注点 |
|---|---|---|
| webshell | grep -rnE "eval\(|assert\(|base64_decode\(" 站点目录 | 可疑单文件、加密马 |
| 异常文件 | find 按-mtime与权限排序 | 777权限、随机名文件 |
| 定时任务 | crontab -l;/etc/cron* | 回连下载脚本 |
| 账号与密钥 | last、/root/.ssh/authorized_keys | 陌生登录与公钥 |
| 访问日志 | grep POST access.log | 异常上传与后台爆破 |
确认后门文件后先备份再删除,同时修改后台、数据库、SSH、FTP全部口令,下线可疑账号与公钥。
四、修复:清理暗链并补齐漏洞
清理顺序建议:先修漏洞,再清暗链,避免清理过程中再次被写入。
- 升级CMS与插件到最新版本,删除不用的主题与插件;
- 上传目录禁止执行脚本,Nginx示例:
location ~* /uploads/.*\.(php|jsp)$ { deny all; }; - 批量清理暗链代码,优先用干净文件覆盖,而不是逐行手删;
- 数据库注入字段用备份或SQL批量清洗,并校验页面输出;
- 清理模板缓存与CDN缓存,确保线上不再返回旧内容。
清理完成后全站复查一次grep,确认特征串为零命中。
五、加固与恢复:防篡改与搜索引擎申诉
恢复上线前做三件事:
- 收敛权限:Web目录对运行账号只读,仅上传与缓存目录可写;
- 文件完整性监控:对页面与程序文件建立哈希基线,变更即告警;
- 网页防篡改:对核心页面启用防篡改保护,异常修改自动拦截或回滚。AegisX的网页防篡改与文件完整性校验能力可用于这一层,缩短从发现到处置的时间。
上线后检查首页、robots.txt、sitemap是否被篡改,向搜索引擎站长平台提交安全申诉与最新sitemap,说明已清理并加固。随后连续观察一到两周日志与文件变更,确认没有二次注入。
六、行动清单
- 隔离备份,暂停发布;
- grep特征串+修改时间+版本比对定位暗链;
- 查webshell、定时任务、账号与日志;
- 改全部口令,修漏洞,清暗链与缓存;
- 上只读权限、完整性监控与网页防篡改;
- 复查、申诉、持续观察。
暗链排查的关键不是删代码,而是堵住入口并建立持续监控。建议今天就把全站扫描命令固化成巡检脚本,给核心页面加上防篡改保护,把被动救火变成主动发现。
常见问题(FAQ)
网页被植入暗链后,只删掉暗链代码就够了吗?
不够。暗链只是结果,攻击者通常留有webshell或篡改模板的入口。只删暗链而不查杀后门、不修复漏洞,往往几天内再次被注入。正确顺序是先隔离取证、查杀webshell、修复入口漏洞,再批量清理暗链,最后做防篡改加固并复查日志,确认没有残留定时任务与异常账号。
怎么快速找出网站里被植入的暗链代码?
最有效的是按特征串全站扫描。常见暗链多用display:none、visibility:hidden、position:absolute配合负偏移隐藏,可用grep -rn在站点目录搜索这些样式与可疑外链域名;再结合页面源码对比与文件修改时间排序(find按-mtime)缩小范围。对动态站点还要检查数据库中被写入的挂马字段与模板缓存。
暗链会影响SEO吗,需要向搜索引擎申诉吗?
会。暗链属于典型的SEO作弊与站点被黑信号,可能导致关键词排名下降甚至被标注风险。清理并加固后,应通过搜索引擎站长平台的死链/安全反馈渠道提交申诉,说明已修复并附整改说明;同时提交最新sitemap、检查robots与首页是否被篡改,加快恢复收录与信任。
没有备份的情况下,网站被篡改后怎么恢复?
优先从干净备份恢复;若无备份,可先隔离受感染文件,用同版本程序原始包覆盖核心程序文件,保留用户数据与上传目录并逐个核查。模板与页面文件按版本库或发布包比对还原,数据库中被注入的字段手工清洗。恢复后立即改密、下线旧后门、上线防篡改,避免带病运行。
如何防止网页再次被植入暗链?
核心是收敛入口与加防篡改。关闭不必要的上传与写入权限,Web目录设只读、上传目录禁执行;统一改强密码并启用双因素,及时打补丁;部署网页防篡改或文件完整性监控,对页面变更实时告警;定期用grep特征串巡检并留存日志。AegisX可提供网页防篡改与文件完整性校验能力,缩短发现与处置时间。