2013-04-02 7 views
10

Pod tym linkiem: http://www.acunetix.com/websitesecurity/cross-site-scripting/ pod numerem The Theory of XSS, jest napisane: the hacker infects a legitimate web page with his malicious client-side script. Moje pierwsze pytanie dotyczące przeczytania tego jest następujące: Jeśli aplikacja zostanie wdrożona na serwerze, który jest bezpieczny (jak na przykład w banku), w jaki sposób haker może uzyskać dostęp do kodu źródłowego strony internetowej? Czy może wstrzyknąć złośliwy skrypt bez uzyskiwania dostępu do źródłowego jsp?Co to jest skrypty krzyżowe?

+0

możliwe duplikat [? Co to jest Cross Site Script Inclusion (XSSI)] (http://stackoverflow.com/questions/8028511/what-is- cross-site-script-inclusion-xssi) –

Odpowiedz

34

Ten opis jest nieco mylący w sposobie, w jaki jest sformułowany. Strona dostarczona przez serwer, gdy ktoś o to poprosi, pozostaje niezmieniona. Zamiast tego atak XSS wykorzystuje słabość strony, która zawiera zmienną przesłaną w żądaniu pokazania się w formie nieprzetworzonej w odpowiedzi. Strona zastanawia się tylko nad tym, co zostało zgłoszone w tym żądaniu ... ale treść tego żądania może zawierać znaki, które odrywają się od zwykłej zawartości tekstowej i wprowadzają treści HTML lub JavaScript, których programista nie zamierzał.

Oto krótki przykład. Załóżmy, że masz jakiś szablonowy język do tworzenia strony HTML (np. PHP, ASP, CGI lub skrypt Velocity lub Freemarker). Przejmuje następującą stronę i zastępuje "<? = $ Name? >" z wartością bez zmiany wartości parametru zapytania "nazwa".

<html> 
<head><title>Example</title></head> 
<body>Hi, <?=$name?></body> 
</html> 

Ktoś dzwoni tę stronę z adresem:

http://example.com/unsafepage?name=Rumplestiltskin 

należy się spodziewać, aby zobaczyć tę wiadomość:

Hi, Rumplestiltskin 

Wywołanie tej samej strony z czymś więcej złośliwego mogą być używane do zmiany strony lub użytkownika znacznie.

http://example.com/unsafepage?name=Rumplestiltskin<script>alert('Boo!')</script> 

Zamiast po prostu mówiąc: "Cześć, Rumplestiltskin", ten adres URL może również spowodować, że strona pop-up komunikat ostrzegawczy, który mówi: "Boo!". Jest to oczywiście uproszczony przykład. Można podać zaawansowany skrypt, który przechwytuje naciśnięcia klawiszy lub prosi o weryfikację nazwy i hasła, lub czyści ekran i całkowicie przepisuje stronę z zawartością szoku. Wciąż będzie wyglądać tak, jakby pochodziła z witryny example.com, ponieważ sama strona to zrobiła, ale treść jest dostarczana gdzieś w żądaniu i po prostu odzwierciedlona jako część strony.

Jeśli strona po prostu odpycha zawartość dostarczoną przez osobę, która jej zażądała, a żądasz tej strony, w jaki sposób haker zaraża TWOJĄ prośbę? Zwykle odbywa się to poprzez udostępnienie linku na stronie internetowej lub przesłanego do Ciebie pocztą elektroniczną lub w żądaniu skróconym pod adresem URL, więc trudno jest dostrzec bałagan w adresie URL.

<a href="http://example.com?name=<script>alert('Malicious content')</script>"> 
Click Me! 
</a> 

Nic na serwerze nie jest "zainfekowane".XSS to tylko sztuczka, która sprawia, że ​​wygląda na to, że pochodzi z serwera, gdy strona tego serwera jest w stanie powtórzyć to, co jest wysyłane.

+0

Dzięki za wspaniałe wyjaśnienie – Victor

+0

Miałem zły pomysł, że wewnątrz intranetu firmy, kiedy próbujesz uzyskać dostęp do strony internetowej, która jest w innej domenie (tylko w tej samej firmie) tylko wtedy XSS występują problemy. Wygląda na to, że XSS może występować cały czas. Nawet jeśli próbuję uzyskać dostęp do czegoś takiego jak http: // localhost: 8080/someservlet – Victor

+0

Twoje nowe zrozumienie jest poprawne. Opisujesz jednak ważne zagrożenie. Początkowo XSS wpływa tylko na stronę, do której uzyskujesz dostęp, ale nowa treść, którą wstrzykniesz, może przekierować cię w dowolne miejsce - i jest szczególnie niebezpieczna, gdy miejsce to jest miejscem, w którym już jesteś uwierzytelniony. – phatfingers

1

Że osoba atakująca nie potrzebuje dostępu do kodu źródłowego.

Prostym przykładem może być parametr adresu URL zapisany na stronie. Można zmienić parametr adresu URL tak, aby zawierał znaczniki skryptów.

Innym przykładem jest system komentarzy. Jeśli witryna nie w odpowiedni sposób odkaża wejścia/wyjścia, atakujący może dodać skrypt do komentarza, który następnie zostanie wyświetlony i wykonany na komputerach wszystkich, którzy przeglądali ten komentarz.

Oto proste przykłady. Jest o wiele więcej i wiele różnych rodzajów ataków XSS.

1

Lepiej pomyśleć o tym, że scenariusz został wprowadzony w sam środek rozmowy między źle zakodowaną stroną internetową a przeglądarką klienta. W rzeczywistości nie jest on wstrzykiwany do kodu strony; ale raczej do strumienia danych przesyłanych do przeglądarki klienta.

Istnieją dwa rodzaje ataków XSS:

  1. Nietrwałe: Byłby to specjalnie spreparowany adres URL, który osadza skrypt jako jeden z parametrów do strony docelowej. Nieprzyjemny adres URL może zostać wysłany w wiadomości e-mail z zamiarem nakłonienia odbiorcy do kliknięcia go. Strona docelowa źle radzi sobie z parametrem i niechcący wysyła kod do komputera klienta, który został przekazany pierwotnie za pośrednictwem ciągu adresu URL.
  2. Trwałe: ten atak wykorzystuje stronę w witrynie, która zapisuje dane formularzy w bazie danych bez prawidłowego operowania danymi wejściowymi. Złośliwy użytkownik może osadzić nieprzyjemny skrypt jako część typowego pola danych (np. Nazwisko), które jest nieświadomie uruchamiane w przeglądarce klienta. Zwykle nieprzyjemny skrypt byłby przechowywany w bazie danych i ponownie uruchamiany podczas każdej wizyty klienta na zainfekowanej stronie.

można znaleźć w następujących trywialny przykład: What Is Cross-Site Scripting (XSS)?