纪录片:Websocket长连接接口渗透测试过程

# 1 前言

最近接到公司的一个API接口测试的项目,除了常规的HTTP协议的API接口外,其中还有一部分是需要测试Websocket接口的。

回想了一下除了之前复现Jumpserver漏洞时候用过Websocket,以外就没有对它有过什么研究了。

这次也算是第一次与它交手,开始测试的时候就不是很顺利,但是好在最后解决了,故在此做下简单的记录。


# 2 希望达到的目标

能够使用Burpsuite来测试Websocket接口。


# 3 测试过程

1、使用Burpsuite自带的Websocket建立连接(失败)


2、使用浏览器插件测试(失败)

这里使用的是一款叫做"WebSocket King"的chrome插件进行测试的。

但是使用插件多次连接WS接口发现都是403,研究了一番后发现,目标会检测Origin头,如果不是自己站点,就直接返回403,因此需要用Burp来修改请求头。

修改了请求头后,浏览器插件终于可以正常连接到目标了,可以看到已经收到了来自服务器的Ping包。

这里要说明一下,该Websocket接口存在心跳检测的机制,服务端会定期向客户端发送ping包,需要客户端回复pong包来证明存活。

然而在我寻找了插件的各个角落,也没有发现存在自动回复pong包的功能,很遗憾这种方法失败。


3、既然没有现成的工具(也许是我没找到),只能自己造了,思路非常简单,如下:

  • 能够自动给服务器回复pong包

  • 能够将流量打到Burpsuite上

  • 使用Python编写代码

基于以上思路,开始搜索python相关的websocket的教程,最后发现利用"websocket-client"库,可以很便捷的实现我的需求,代码如下:

复制代码
import websocket``from websocket._exceptions import *``from urllib.parse import urlparse``import json`

`url = "wss://xxxxxxxx.com/xxxxxxxx"`
`# proxy = ""``proxy = "http://127.0.0.1:8080"`
`options = {}`
`if proxy != "":`    `p = urlparse(proxy)`    `options["http_proxy_host"] = p.hostname`    `options["http_proxy_port"] = p.port`
`ws = websocket.create_connection(url, **options)`
`while True:`    `try :`        `data = ws.recv()`        `print(data)`        `j = json.loads(data)`        `if j["type"] == "ping":`            `send_data = '{"type":"pong","data":"%s"}' % j["data"]`            `print(send_data)`            `ws.send(send_data)`
    `except WebSocketConnectionClosedException:`        `print("[!] Connection to remote host was lost.")`        `break`
`ws.close()

ps:临时使用的代码,请不要在意编写细节

使用起来还是很方便的,脚本中的代理服务器指向Burpsuite,然后开始运行,发现数据包ping、pong正常交互。

打开bp,找到repeater,新建一个websocket会话,选择刚刚已经建立连接的Websocket会话,并点击下方的Attach。

接下来就可以开始发送数据,测试这个接口了,自此问题得到解决。

今天的内容就分享到这里,如果你喜欢这篇文章的话,麻烦请动动你的手点个赞或者点个关注吧,这将是我最大的动力!谢谢,这里说点题外话,想学习黑客技术的,这里有我以前整理的大量自学资料。

🐵需要的可以点这里自取👉:网安入门到进阶资源

相关推荐
2301_7807896616 小时前
DDoS 攻击溯源:DNS 水印标记 + 区块链存证的双保险
运维·服务器·网络·云原生·ddos
全麦面包 time展天17 小时前
瀚海拾贝(一)HTTP协议/IIS 原理及ASP.NET运行机制浅析【图解】
网络协议·http·asp.net
微硬创新18 小时前
耐达讯自动化16路0-20mA转PROFINET协议转换模块技术说明
人工智能·网络协议·自动化·信息与通信
2601_9494999421 小时前
芯瑞科技 DT-1414 光模块工程实测:完美兼容博通(安华高) HFBR-1414PTZ,VCSEL 替代方案
大数据·网络·人工智能·科技·光模块
2501_9159184121 小时前
iOS 怎么抓包?抓包鹰系统级 网卡 应用层三种方式对比,不越狱抓 iPhone 流量
网络协议·计算机网络·网络安全·ios·adb·https·udp
云边云科技_云网融合1 天前
连锁门店 POS、监控、IoT 设备网络不稳定怎么解决?
网络·物联网
XR1234567881 天前
学校宿舍区网络方案对比:多终端高并发下的认证、管理与体验
网络
March.s1 天前
IP 存储核心 iSCSI:原理拆解 + 无报错实战指南
网络·网络协议·tcp/ip
星恒讯工业路由器1 天前
远程访问技术解析:从内网穿透到安全隧道的三种主流方案
网络·信息与通信·内网穿透·远程访问·vpn隧道
超智算科技1 天前
超智算领衔协办“NVIDIA创业企业展示·西安站”,全栈AI服务赋能行业生态协同发展
大数据·网络·人工智能·物联网·百度