Preorder drugiego tomu książki sekuraka: Wprowadzenie do bezpieczeństwa IT. -15% z kodem: sekurak-book
Burp Suite i obsługa protokołu WebSocket w narzędziu Repeater
W najnowszej wersji Burp Suite 2.1.01 pojawiła się obsługa WebSocket w Burp Repeater.
Wykorzystajmy poniższą aplikację, aby zobaczyć nową funkcjonalność w akcji.
Część serwerowa (nodejs):
var WebSocketServer = require('websocket').server; var http = require('http'); var server = http.createServer(function(req, res){}); var ws_server = new WebSocketServer({ httpServer: server }); server.listen(1337, function(){}); ws_server.on('request', function(req) { var conn = req.accept(null, req.origin); conn.on('message', function(msg) { conn.send(msg.utf8Data); }); });
Uruchomienie serwera (zakładamy, że nodejs jest już zainstalowany):
npm install websocket # instalacja zależności nodejs ./server.js # kod serwera znajduje się w pliku server.js
Część kliencka:
<!DOCTYPE html> <html> <body> <script> var conn = new WebSocket('ws://192.168.56.105:1337'); // zmień na adres własnego serwera conn.onmessage = function(msg) { document.write('<p>' + msg.data + '</p>'); }; setTimeout(function() { conn.send('Hello'); }, 1000); </script> </body> </html>
Z poziomu Burp Proxy (Proxy -> WebSockets history) możemy zobaczyć komunikację pomiędzy przeglądarką i serwerem:
Do tej pory możliwości Burpa w zakresie testowania komunikacji odbywającej się za pośrednictwem WebSocket były bardzo ograniczone. Sprowadzały się do przechwycenia zapytania (Proxy -> Intercept), modyfikacji i przesłania komunikatu dalej. Każdy kto choć chwilę spędził przy testowaniu aplikacji webowych doskonale wie, jak nieefektywne jest to podejście.
W najnowszej wersji Burp komunikaty WebSocket możemy wysyłać bezpośrednio z poziomu Burp Repeater:
Zapytanie wysłane z poziomu Burp Repeater:
Co ciekawe, jeśli połączenie jest aktywne, możemy wysłać komunikaty do klienta:
Widok po stronie przeglądarki:
— Dariusz Tytko, hakuje w Securitum.