WebSockets för applikationstestare        Owasp Sweden        Martin Holst Swende            2011-01-31
Summary• Applikationstestning  – Vanliga misstag• WebSockets  – På serversidan  – På klientsidan  – Analys av kommunikation
Applikationstestning i urval
Applikationstestning• Kartlägga kommunikationsflöden  – Vad skickas?     • Direkta eller indirekta referenser     • ”Hemli...
Vanliga misstag• Direkta referenser, typiska konsekvenser:    – Path traversal    – Remote file inclusion    – Byta använd...
Okej, vad är det för speciellt med          WebSockets?
WebSockets• Paradigmskifte i HTTP-världen.  – Verktyg för att analysera HTTP-trafik (proxies)    stöder inte WebSockets (ä...
WebSocket - användning• Server:   –   Java: Jetty, jWebSocket   –   PHP: phpWebSocket, WaterSpout   –   Python: pyWebSocke...
Klientstöd, forts• Javascript API definierat av W3C, dock bara ’native’ support i vissa  browsers.• Både Flash och Silverl...
I praktiken
Jetty Java server API
Node.js Socket.IO API
Browser API
Klient exempel
Analys av WebSocket-kommunikation              Applikation                               • Man kan använda                ...
Manipulering av klient-API       Monkeypatching
Javascript tampering• När applikation skickar data, kallas send()-  metoden:  socket.send(’foo’);• Implicit kallas på send...
Javascript tampering• När data tas emot är det svårare, eftersom onMessage-  metoden sitter på instansen, inte i en supert...
Att nämna• Nackdel: Koden måste köras innan någon  websocket-uppkoppling gjorts för att receive()  skall kunna fungera• Na...
Demo
TCP tampering• Lura datorn att koppla upp sig till en (tcp-)proxy   – Ändra i /etc/hosts eller motsv   – Använda Mallory s...
Demo - Mallory             MalloryVictim       Default      Internet             Gateway
Frågor?     Presenterat av:  Martin Holst Swendehttp://martin.swende.se   martin@swende.se  twitter:@mhswende
Upcoming SlideShare
Loading in …5
×

WebSockets för applikationstestare

2,000
-1

Published on

Talk given at Owasp Sweden 2011-01-31 about WebSockets for application testers

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
2,000
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

WebSockets för applikationstestare

  1. 1. WebSockets för applikationstestare Owasp Sweden Martin Holst Swende 2011-01-31
  2. 2. Summary• Applikationstestning – Vanliga misstag• WebSockets – På serversidan – På klientsidan – Analys av kommunikation
  3. 3. Applikationstestning i urval
  4. 4. Applikationstestning• Kartlägga kommunikationsflöden – Vad skickas? • Direkta eller indirekta referenser • ”Hemlig” data? • ”Icke editerbar” data? – Var sker datavalidering? • På serversidan eller klientsidan? – Hur ser datavalidering ut? • Vitlistebaserad eller svartlistebaserad?
  5. 5. Vanliga misstag• Direkta referenser, typiska konsekvenser: – Path traversal – Remote file inclusion – Byta användarkonto• Datavalidering på klientsidan – Diverse injection-brister: XSS, SQLi etc. – Ändra priset på en vara / summan på betalning• Svartlistebaserad filtrering – Alltför snäv lista (släpper igenom för mycket). UTF-7? Overlong UTF-8?• Fokus på filtrering istället för korrekt transcoding – Injection-brister är egentligen fel i transformering av data mellan olika format-kontexter.
  6. 6. Okej, vad är det för speciellt med WebSockets?
  7. 7. WebSockets• Paradigmskifte i HTTP-världen. – Verktyg för att analysera HTTP-trafik (proxies) stöder inte WebSockets (än). – Oftast inte bara en quickfix, eftersom det är en helt annan modell.
  8. 8. WebSocket - användning• Server: – Java: Jetty, jWebSocket – PHP: phpWebSocket, WaterSpout – Python: pyWebSocket (Apache httpd), Tornado (Facebook) – Javascript: Node.js• Klient: – WebSocket stöd:Protocol IE FF Ch Safari Operadraft-hixie- 4 5.0.0thewebsocketprotocol-75draft-hixie- 4.0 beta 6 5.0.1 11.00(DISABLED)thewebsocketprotocol-76 (DISABLED)draft-ietf-hybi-thewebsocketprotocol-00
  9. 9. Klientstöd, forts• Javascript API definierat av W3C, dock bara ’native’ support i vissa browsers.• Både Flash och Silverlight har stöd för råa sockets, så det kräver inget nytt i ’core’ för att prata websockets. Det finns olika ramverk för att skapa implementera javascript-WebSockets via Flash – gimite/web-socket-js – jWebSocket/FlashBridge• Eller Silverlight: – http://40interop.ep.interop.msftlabs.com/html5/ClientBin/Microsoft.ServiceM odel.Websockets.xap – http://40interop.ep.interop.msftlabs.com/html5/js/jquery.slws.js• WebSockets finns även för IE med CromeFrame• Således kan websockets användas på de flesta browsers som stöder Flash/Silverlight/JavaFX(?)
  10. 10. I praktiken
  11. 11. Jetty Java server API
  12. 12. Node.js Socket.IO API
  13. 13. Browser API
  14. 14. Klient exempel
  15. 15. Analys av WebSocket-kommunikation Applikation • Man kan använda Javascript javascript-debugger för Initierar Websocket att påverka applikationen Browser-API • Man kan koppla in sig Javascript mellan applikationen och Browser-API Hanterar WebSocket TCP- • Man kan övervaka och OS modifiera trafiken på TCP- proxies nivåSköter nätverkskommunikation på låg nivå
  16. 16. Manipulering av klient-API Monkeypatching
  17. 17. Javascript tampering• När applikation skickar data, kallas send()- metoden: socket.send(’foo’);• Implicit kallas på send()-metoden i ”prototyp”- objektet, (ungf superklassen).• Det går att skriva över send i prototypen:
  18. 18. Javascript tampering• När data tas emot är det svårare, eftersom onMessage- metoden sitter på instansen, inte i en supertyp.• Man kan dock skriva över hela WebSocket-konstruktorn och ’minera’ den
  19. 19. Att nämna• Nackdel: Koden måste köras innan någon websocket-uppkoppling gjorts för att receive() skall kunna fungera• Nackdel: Fungerar bara för javascript websockets, ej för Silverlight eller Flash• Fördel: går att lägga som bookmarklet, bör vara oberoende av browser• Finns även packeterat som en plugin till chrome
  20. 20. Demo
  21. 21. TCP tampering• Lura datorn att koppla upp sig till en (tcp-)proxy – Ändra i /etc/hosts eller motsv – Använda Mallory som default gateway• Proxyn vidarebefordrar all data till den korrekta hosten• Fördelar: Oberoende av klientteknik (js, silverlight, flash)• Nackdelar: väldigt låg nivå (bits & bytes)• Exempel: Mallory, Hatkit proxy, em-proxy (?), socat (?) etc…
  22. 22. Demo - Mallory MalloryVictim Default Internet Gateway
  23. 23. Frågor? Presenterat av: Martin Holst Swendehttp://martin.swende.se martin@swende.se twitter:@mhswende
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×