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

admin 2026-10-16 11:01:14 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

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

原创

江思澄
江思澄

云晞科技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}

应急响应之公交车系统应急排查" 网络安全文章

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

本文为公交车系统应急响应实战记录,通过分析access日志发现SQL注入漏洞并解密获取用户凭据,利用密码复用爆破FTP获取敏感文件,定位任意文件上传漏洞获取Webshell,最终排查发现挖矿木马及矿池地址,并清除后门获取最终flag。文章步骤清晰,具备较强实战参考价值。
智谱开源!真把“裤子脱了”给社区看了" 网络安全文章

智谱开源!真把“裤子脱了”给社区看了"

智谱因ZCode产品安全问题被质疑后,选择开源全部代码以示透明,并邀请信通院与绿盟科技审计,确认云端零数据留存。同时砍掉争议功能并建立常态化漏洞赏金机制,以可验证方式回应信任危机。建议开发者自查代码仓库与本地配置,关注后续安全公告。
关基行业网安宣教行动:国网武汉供电公司" 网络安全文章

关基行业网安宣教行动:国网武汉供电公司"

该文档报道2026年国家网络安全宣传周期间武汉市聚焦关基行业,组织志愿者走进国网武汉供电公司开展网络安全宣教与专题培训。活动结合电力行业特点,围绕数据安全、办公网络防护、防范钓鱼邮件等开展宣讲,并面向市民科普防诈骗与个人信息保护知识,同时开展实战演练和隐患排查,提升企业应急处置能力。
评论:0   参与:  0