freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

深信服华中天慧战队:哥斯拉二开-Websocket shell
2024-03-15 17:55:52

前言

WebSocket是一种全双工通信协议,即客户端可以向服务端发送请求,服务端也可以主动向客户端推送数据。这样的特点,使得它在一些实时性要求比较高的场景效果斐然(比如微信朋友圈实时通知、在线协同编辑等)。主流浏览器以及一些常见服务端通信框架(Tomcat、Spring、Jetty、WebSphere、WebLogic等)都对WebSocket进行了技术支持。

本文主要讲解如何让哥斯拉支持Websocket协议的shell。

添加SocketClient

首先,需要在util中,添加SocketClient类,实现“打开连接”、“发送数据”、“接收数据”、“关闭连接”等功能
image.pngimage.pngimage.png

Shell生成界面修改

添加"WS Shell类型"下拉框
image.png添加选项
image.png整体设计完成后,界面如下图所示
image.png

算法实现

在src/main/java/shells/cryptions/JavaAes/中新建JavaAesBase64WebSocket.java并定义算法名称
image.png修改init方法,实现SocketClient.sendMsg发送payload
image.png修改shells.payloads.java.JavaShell#evalFunc。添加SocketClient.sendMsg发送data数据
image.png

Shell代码实现

这里可以根据wsMemShell模板作为参考,进行修改。
参考模板:https://github.com/veo/wsMemShell
image.png这里需要注意,要添加setDefaultMaxTextMessageBufferSize和setDefaultMaxBinaryMessageBufferSize方法。解决payload传输的大小限制问题。
这里需要注意,要添加setDefaultMaxTextMessageBufferSize和setDefaultMaxBinaryMessageBufferSize方法。解决payload传输的大小限制问题。

container.setDefaultMaxTextMessageBufferSize(52428800);
container.setDefaultMaxBinaryMessageBufferSize(52428800);

image.png

功能预览

shell连接时,填写url为ws://开头。例如 ws://192.168.136.72:8080/ws.jsp
加密器选择JAVA_AES_BASE64_WebSocket
image.png通过抓包,可看到通信协议及流量
image.png

# 哥斯拉
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录