应急响应之公交车系统应急排查

admin 2026-09-25 05:18:54 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文为公交车系统应急响应实战记录,通过分析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 江思澄 江思澄《应急响应之公交车系统应急排查》

云安全RSS订阅源分享 网络安全文章

云安全RSS订阅源分享

文章总结: 本文分享包含89个高质量云安全RSS订阅源的开源合集,涵盖个人研究员、厂商实验室及企业博客等核心资源。结论指出RSS仍是聚合云原生安全威胁情报与攻防
评论:0   参与:  0