SlideShare a Scribd company logo
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
     • ”Hemlig” data?
     • ”Icke editerbar” data?
  – Var sker datavalidering?
     • På serversidan eller klientsidan?
  – Hur ser datavalidering ut?
     • Vitlistebaserad eller svartlistebaserad?
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.
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 (än).
  – Oftast inte bara en quickfix, eftersom det är en
    helt annan modell.
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   Opera
draft-hixie-                                4    5.0.0
thewebsocketprotocol-75
draft-hixie-                   4.0 beta     6    5.0.1    11.00(DISABLED)
thewebsocketprotocol-76        (DISABLED)
draft-ietf-hybi-
thewebsocketprotocol-00
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(?)
I praktiken
Jetty Java server API
Node.js Socket.IO API
Browser API
Klient exempel
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å
Manipulering av klient-API




       Monkeypatching
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:
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
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
Demo
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…
Demo - Mallory
             Mallory
Victim       Default      Internet
             Gateway
Frågor?
     Presenterat av:
  Martin Holst Swende
http://martin.swende.se
   martin@swende.se
  twitter:@mhswende

More Related Content

PDF
LocalStorage
PPTX
Integration mule
PDF
VT2018 - DA355A - Phonegap, react, vue.js
PDF
VT16 - DA355A - Geolocation & media
PDF
Cms - WordPress
PDF
Webboptimering 25 min
PPT
RIA-utveckling Kalmar
PDF
jQuery and Ajax
LocalStorage
Integration mule
VT2018 - DA355A - Phonegap, react, vue.js
VT16 - DA355A - Geolocation & media
Cms - WordPress
Webboptimering 25 min
RIA-utveckling Kalmar
jQuery and Ajax

Viewers also liked (17)

PPT
Vietnam power point
PPTX
искусство,музыка,живопись,кино
PPTX
ամենաաղտոտ գետերը
PPTX
VocalPress Overview
PPT
Vietnam Power Point
PPTX
Մխիթար Սեբաստացի
PPTX
Presentación proyecto enuy ingles
PPTX
Halloween
PPTX
талусни растения
PPTX
նախագիծ
PPTX
Republica bolivariana de venezuela1
PPTX
եսապատում
PPT
Hatkit Project - Datafiddler
PPT
The very hungry_caterpillar_book
PPTX
90’s cartoons
PPTX
Tranter Australia Information
PPTX
հեքիաթներ
Vietnam power point
искусство,музыка,живопись,кино
ամենաաղտոտ գետերը
VocalPress Overview
Vietnam Power Point
Մխիթար Սեբաստացի
Presentación proyecto enuy ingles
Halloween
талусни растения
նախագիծ
Republica bolivariana de venezuela1
եսապատում
Hatkit Project - Datafiddler
The very hungry_caterpillar_book
90’s cartoons
Tranter Australia Information
հեքիաթներ
Ad

Similar to WebSockets för applikationstestare (20)

PDF
HT17 - DA354A - Webbapplikation
PDF
HT18 - DA354A - Bottle web app
PDF
jQuery & Ajax
PDF
VT2019 - DA355A - jQuery och Ajax
PDF
VT24 - jQuery & Ajax - Flerplattformsapplikationer med webbtekniker
PDF
HT19 - DA354A - Webbprogrammering med bottle
PDF
DA395A -jQuery och Ajax - Flerplattformsapplikationer med webbtekniker
PPTX
HT15, DA354A - Introduktion till Webbprogrammering - Bottle (2)
KEY
PDF
VT2019 - DA355A - JS-ramverk
PPTX
HT15, DA354A - Introduktion till Webbprogrammering - Bottle
PPTX
Snabbt och användbart webbgränssnitt
PDF
Molntjänster som it superhjältar
PPTX
Lär dig ajaxifiera dina tillägg med jQuery
PPT
PHP och MySQL
PDF
HT23 - DA354A - Webbprogrammering med Python
PDF
DA354B - Introduktion till programmering - Webbprogrammering
PDF
FullStackDeveloper
PDF
Cookies och Websockets
PDF
HT17 - DA156A - Sammanfattning av kursen
HT17 - DA354A - Webbapplikation
HT18 - DA354A - Bottle web app
jQuery & Ajax
VT2019 - DA355A - jQuery och Ajax
VT24 - jQuery & Ajax - Flerplattformsapplikationer med webbtekniker
HT19 - DA354A - Webbprogrammering med bottle
DA395A -jQuery och Ajax - Flerplattformsapplikationer med webbtekniker
HT15, DA354A - Introduktion till Webbprogrammering - Bottle (2)
VT2019 - DA355A - JS-ramverk
HT15, DA354A - Introduktion till Webbprogrammering - Bottle
Snabbt och användbart webbgränssnitt
Molntjänster som it superhjältar
Lär dig ajaxifiera dina tillägg med jQuery
PHP och MySQL
HT23 - DA354A - Webbprogrammering med Python
DA354B - Introduktion till programmering - Webbprogrammering
FullStackDeveloper
Cookies och Websockets
HT17 - DA156A - Sammanfattning av kursen
Ad

WebSockets för applikationstestare

  • 1. WebSockets för applikationstestare Owasp Sweden Martin Holst Swende 2011-01-31
  • 2. Summary • Applikationstestning – Vanliga misstag • WebSockets – På serversidan – På klientsidan – Analys av kommunikation
  • 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. 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. Okej, vad är det för speciellt med WebSockets?
  • 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. 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 Opera draft-hixie- 4 5.0.0 thewebsocketprotocol-75 draft-hixie- 4.0 beta 6 5.0.1 11.00(DISABLED) thewebsocketprotocol-76 (DISABLED) draft-ietf-hybi- thewebsocketprotocol-00
  • 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(?)
  • 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. Manipulering av klient-API Monkeypatching
  • 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. 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. 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. Demo
  • 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. Demo - Mallory Mallory Victim Default Internet Gateway
  • 23. Frågor? Presenterat av: Martin Holst Swende http://martin.swende.se martin@swende.se twitter:@mhswende