ctw
capture the web

@maxammann

11. Juni, 2019

Lets talk about files

Quelle: PoC||GTFO 0x03

Vulnerabilites

Eine Lücke oder Schwäche im Design oder der Implementation eines Systems, welche ausgenutzt werden kann um die Sicherheitsrichtlinie des Systems zu verletzen.


Quelle: IETF RFC 4949

Exploit

Ein Exploit nutzt eine Vulnerability um eine bestimmte unerwartete Aktion auszuführen.

  • Vulnerability muss “exploitable” sein
  • Exploits nutzen einen Payload um gewünschte Aktionen auszuführen

Payload

Beispiel einer XSS

  • Vulterability: XSS
  • Payload: z.B. unser Cookie Stealer oder hier alert("XSS")



Quelle: XSS on Google Search - Sanitizing HTML in The Client? von liveoverflow.com
<div><script title="</div>">

<script><div title="</script>">

Aktuelle HTML-Parser sind zu komplex und zu unterschiedlich.

▶ Serverseitige Sanitisation ist nicht ausreichend!

XSS Sanitisation mit <template>

<noscript><p title="</noscript><img src=x onerror=alert("XSS")>">

DOM Tree für <template> DOM Tree für <div>

Der DOM Tree ist je nach Kontext unterschiedlich, obwohl der ursprüngliche HTML-Code der gleiche ist!

Was passiert hier?

The noscript element represents nothing if scripting is enabled, and represents its children if scripting is disabled.

Da in einem <template> tag scripting deaktiviert ist, werden unterschiedliche DOM Trees gebaut.

Quelle: https://www.w3.org/TR/html52/semantics-scripting.html#the-noscript-element

Severity: Very High

Vulnerability bestand in der Google Suche für 4 Monate!

(git commit)

Google Vulnerability Reward Program payouts in 2018
Google Vulnerability Reward Program payouts in 2018

Quelle: Google I/O 2019: Securing Web Apps with Modern Platform Features

Content-Security-Policy to the rescue



CSP is a strong defense-in-depth mechanism against XSS.

Quelle: https://www.w3.org/TR/CSP3/

Verbietet inlinen von JavaScript und lässt nur bestimmte Quellen zu.

Draft Preview: Trusted Types

Wie sieht eine typische XSS aus?

Idee: String TrustedHTML

  1. CSP Richtlinie setzten
  1. Sanitizer angeben
  1. HTML sanitizen

Was sind CTFs?

  • Capture the Flags sind Puzzle
  • Mit dem finden eines Exploits kann man die Flagge erobern
  • Anfänger: Ausnutzen eines Buffer-Overflow
  • Profi: Finden iner Zero-Day in Safari 🤯
  • Trainiert Frusttoleranz

Grab a beer and ctf!

XSS Vektoren: https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet