文章总结: 本文为公交车系统应急响应实战记录,通过分析access日志发现SQL注入漏洞并解密获取用户凭据,利用密码复用爆破FTP获取敏感文件,定位任意文件上传漏洞获取Webshell,最终排查发现挖矿木马及矿池地址,并清除后门获取最终flag。文章步骤清晰,具备较强实战参考价值。
综合评分: 90
文章分类: 应急响应,漏洞分析,恶意软件,WEB安全,内网渗透
应急响应之公交车系统应急排查
原创
江思澄
江思澄
云晞科技Sec
2026年9月21日 19:46
湖北
在小说阅读器读本章
去阅读
在公众号小说中沉浸阅读
应急响应之公交车系统应急排查
好久没更新文章了……水一篇吧
环境描述:
1. 思而听公交系统被黑客攻击,黑客通过web进行了攻击并获取了数据,然后获取了其中一位驾校师傅在FTP服务中的私密文件,其后黑客找到了任意文件上传漏洞进行了GETshell,控制了主机权限并植入了挖矿网页挖矿病毒,接下来你需要逐步排查。
注意:
1. 流量中的21端口对应2121、SSH端口为2223、80端口对应8099。
2. 当前开放端口为:2223(SSH)、8099(WEB)
3. 捕获的流量包以及对应的web日志登录系统成功后在根目录下:result.pcap、access.log
4. root的SSH密码为bussec123
1. 分析环境内的中间件日志,找到第一个漏洞(黑客获取数据的漏洞),然后通过分析日志、流量,通过脚本解出黑客获取的用户密码数据,提交获取的前两个用户名,提交格式:flag{zhangsan-wangli}
在access.log日志中发现有大量的sqlmap的痕迹,但是payload都被base64加密了
image-20260921155847011
常规使用
cat access.log |awk '{print $7}'
前面有/search.php?query= 影响批量解密
image-20260921155940744
使用以下命令(删减掉前面多余部分并替换%3d为=)
awk '{print $7}' access.log | grep '^/search.php?query=' | sed 's#^/search.php?query=##' | sed 's/%3[Dd]/=/g'
# 最后的%3d也替换成=
image-20260921160024681
import base64
with open("input.txt", "r", encoding="utf-8", errors="ignore") as f:
for line in f:
line = line.strip()
if not line:
continue
try:
decoded = base64.b64decode(line)
print(decoded.decode("utf-8", errors="ignore"))
except Exception as e:
print(f"[error] {line}")
看到这里,这里是将表中username值转成字符串,开始时间盲注用户名了
image-20260921162122275
我们可以通过查找关键字”!=”来逐个判断用户名单个字母
第一个用户名的第一个字母ascii为115
image-20260921162245683
第一个用户名的第一个字母ascii为117
image-20260921162315646
此处过程省略…
最终第一个用户名
115 117 110 121 117 101
sunyue
第二个用户名
99 104 101 110 104 97 111
chenhao
那么有道友会有疑惑,如何甄别第二个用户名呢?
答:观察mid第二个参数
image-20260921162636041
最终flag为
flag{sunyue-chenhao}
2. 黑客通过获取的用户名密码,利用密码复用技术,爆破了FTP服务,分析流量以后找到开放的FTP端口,并找到黑客登录成功后获取的私密文件,提交其文件中内容,提交格式:flag{xxx}
题目描述有讲,ftp服务端口对应2121,所以在流量包中不能直接过滤ftp
tcp.port==2121
image-20260921163215848
由于ftp是明文传输,我们挨个翻一下包
前面一堆包明显是在爆破密码,忽视掉
image-20260921163358241
直接尝试筛选登录成果的回显
tcp.port == 2121 && tcp contains "230 Login successful."
image-20260921164807789
Response:RETR # 获取文件
Response:CMD default # 切换到default目录
可以看到黑客在/home/wangqiang/ftp/该目录下获取了一个sensitive_credentials.txt 文件
image-20260921165146722
image-20260921165304993
flag{INTERNAL_FTP_ADMIN_PASSWORD=FtpP@ssw0rd_For_Admin_Backup_2025}
3. 可恶的黑客找到了任意文件上传点,你需要分析日志和流量以及web开放的程序找到黑客上传的文件,提交木马使用的密码,提交格式:flag{password}
在日志中,发现一个可疑的文件名shell1.php
image-20260921165438782
顺着路径寻找即可
image-20260921165543415
flag{woaiwojia}
4. 删除黑客上传的木马并在/var/flag/1/flag查看flag值进行提交
重命名备份即可,给自己留有挽回余地
image-20260921165702489
image-20260921165902972
flag{eb9785a18f0e69b935f22cea5b54bf19}
5. 分析流量,黑客植入了一个web挖矿木马,这个木马现实情况下会在用户访问后消耗用户的资源进行挖矿(本环境已做无害化处理),提交黑客上传这个文件时的初始名称,提交格式:flag{xxx.xxx}
筛选有关shell1.php的请求
image-20260921170407298
哥斯拉强特征:生成的cookie后面有个分号
image-20260921170656833
$key='3c6e0b8a9c15224a'
image-20260921170933655
我不行了……这个字节流看得我老眼昏花
image-20260921171225178
换马处的工具
这里使用了mv移动命令把map.php替换了index.php文件
image-20260921172129513
来到服务器中分析index.php文件,下面有段混淆的js代码
image-20260921172316112
黑客通过shell1.php操作的
image-20260921172506102
flag{map.php}
6. 分析流量并上机排查,黑客植入的网页挖矿木马所使用的矿池地址是什么,提交矿池地址(排查完毕后可以尝试删除它)提交格式:flag{xxxxxxx.xxxx.xxx:xxxx}
image-20260921172835170
有一串疑似ascii的数字,解密看看
image-20260921172939660
flag{gulf.moneroocean.stream:10128}
7. 清除掉混淆的web挖矿代码后在/var/flag/2/flag查看flag值并提交
image-20260921173122445
flag{476652839e38111f8bad544a2ff1ac19}
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:云晞科技Sec 江思澄
江思澄《应急响应之公交车系统应急排查》