哥斯拉二开-Websocket shell
2024-3-12 10:59:49 Author: www.freebuf.com(查看原文) 阅读量:22 收藏

freeBuf

主站

分类

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

特色

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

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

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

FreeBuf+小程序

FreeBuf+小程序

前言

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发表 0 篇文章

本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022


文章来源: https://www.freebuf.com/sectool/394065.html
如有侵权请联系:admin#unsafe.sh