Przykłady XSS, których mogę użyć do testowania wprowadzania strony?

Miałem problemy z XSS. W szczególności miałem indywidualny Alert inject JS pokazujący, że moje wejście miało luki. Zrobiłem badania nad XSS i znalazłem przykłady, ale z jakiegoś powodu nie mogę ich uruchomić.

Czy Mogę dostać przykład (y) XSS, który mogę wrzucić do mojego wejścia i kiedy wypowiem go z powrotem do użytkownika zobaczyć jakąś zmianę, jak alert, aby wiedzieć, że jest podatny?

Używam PHP i zamierzam zaimplementować htmlspecialchars() ale najpierw próbuję odtworzyć te luki.

Dzięki!

Author: KRB, 2011-08-29

4 answers

Możesz użyć tego dodatku do Firefoksa:

XSS - Me jest narzędziem Exploit-Me używanym do testowania odbitej strony Skryptów (XSS). Obecnie nie testuje przechowywanych XSS.

The narzędzie działa poprzez przesyłanie formularzy HTML i zastępowanie formularza wartość z łańcuchami reprezentującymi atak XSS. Jeśli wynikowa strona HTML ustawia określoną wartość JavaScript (dokument.vulnerable = true)następnie narzędzie zaznacza stronę as vulnerable do podanego ciągu XSS. Narzędzie nie próbuje kompromisu bezpieczeństwo danego systemu. Szuka możliwych punktów wejścia za atak na system. Nie ma skanowania portów, pakiet sniffing, password hacking lub firewall ataki wykonywane przez narzędzie.

Można myśleć o pracy wykonanej przez narzędzie jak o Testery QA dla strony ręcznie wprowadzając wszystkie te ciągi do pola formularza.

 14
Author: Sarfraz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-07-13 14:06:50

Na przykład:

<script>alert("XSS")</script>
"><b>Bold</b>
'><u>Underlined</u>
 4
Author: ComFreek,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-08-29 20:41:40

Bardzo dobrze jest korzystać z niektórych zautomatyzowanych narzędzi, jednak nie uzyskasz z nich żadnego wglądu ani doświadczenia.

Celem ataku XSS jest uruchomienie javascript w oknie przeglądarki, które nie jest dostarczane przez witrynę. Najpierw musisz sprawdzić, w jakim kontekście dane dostarczone przez użytkownika są drukowane na stronie; może to być w bloku kodu <script></script>, może być w bloku <style></style>, może być używany jako atrybut elementu <input type="text" value="USER DATA" /> lub na przykład w <textarea>. W zależności od że zobaczysz, jakiej składni użyjesz, aby uciec od kontekstu (lub go użyć); na przykład, jeśli znajdujesz się w znacznikach <script>, może wystarczyć zamknięcie paretezy funkcji i zakończenie linii średnikiem, więc ostateczne wstrzyknięcie będzie wyglądało jak ); alert(555);. Jeśli dostarczone dane są używane jako atrybut html, Wtrysk może wyglądać jak " onclick="alert(1)", co spowoduje wykonanie js po kliknięciu na element(ten obszar jest bogaty do zabawy, szczególnie z html5). Chodzi o to, że kontekst xss jest tak samo ważne jak wszelkie funkcje filtrowania/sanatyzacji, które mogą być na miejscu, a często mogą występować małe niuanse, których zautomatyzowane narzędzie nie wychwyci. Jak widać powyżej, nawet bez cudzysłowów i znaczników html, w ograniczonej liczbie przypadków możesz być w stanie ominąć filtry i wykonać js.

Należy również wziąć pod uwagę kodowanie przeglądarki, na przykład możesz ominąć filtry, jeśli docelowa przeglądarka ma kodowanie utf7 (i kodujesz wstrzyknięcie tędy). Filter evasion to zupełnie inna historia, jednak obecne funkcje PHP są dość kuloodporne, jeśli są używane poprawnie.

Również tutaj jest wystarczająco długa lista wektorów XSS

Jako ostatnia rzecz, oto rzeczywisty przykład ciągu XSS, który został znaleziony na stronie, i gwarantuję ci, że żaden skaner nie znalazłby tego (były różne filtry i czarne listy słów, strona pozwalała wstawić podstawowe formatowanie html, aby dostosować swój profil Strona):

<a href="Boom"><font color=a"onmouseover=alert(document.cookie);"> XSS-Try ME</span></font>

 4
Author: cyber-guard,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-01-17 09:39:15

Testy Ad-hoc są w porządku, jednak zalecam również wypróbowanie narzędzia do skanowania luk w aplikacji internetowej, aby upewnić się, że niczego nie przeoczyłeś.

Acunetix jest całkiem dobry i ma darmową wersję próbną swojej aplikacji:

Http://www.acunetix.com/websitesecurity/xss.htm

(uwaga nie mam powiązania z tą firmą, jednak używałem produktu do testowania własnych aplikacji).

 1
Author: JJ.,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-08-29 15:47:50