Jak włamać się na stronę internetową? | KURS – XSS #1

Dzisiejszy wpis rozpoczyna cykl poradników o webhackingu. W tym kursie będziemy pisać i mówić językiem od ludzi, dla ludzi! Jeśli interesuje Cię bezpieczeństwo stron internetowych, audyty informatyczne (bezpieczeństwa) lub po prostu prowadzisz swoją stronę internetową albo jesteś początkującym programistą PHP/HTML/JS/technologi sieciowych to dobrze trafiłeś! W każdym wpisie z cyklu hackingu stron www na naszym blogu, pokażemy jeden rodzaj ataku. Ataków jest bardzo wiele, mogą dotyczyć samego hostingu, pojedynczej strony www a nawet serwerów DNS. Cały kurs będzie przeznaczony dla początkujących hakerów i zatytułowaliśmy go roboczo „od zera do megahakera„. Nie jesteśmy prawdziwymi profesjonalnymi hakerami, traktujemy to bardziej jako zabawę i nauke. Jeżeli chcecie osiągać jakieś sukcesy w branży IT bądź hackingu, warto już na wczesnym etapie swojego rozwoju tak podchodzić do sprawy i uczyć się uczyć się i uczyć się – to tylko informatyka (albo aż:)). Do wpisu dołączony jest również zupełnie za darmo zestaw skryptów szkoleniowych i film wideo (oczywiście w naszym ojczystym języku uzupełniający zagadnienie ataków XSS :)) Gotowy na pytanie” jak włamać się na stronę internetową”?

Kurs hackingu – jak włamać się na stronę internetową, czyli jaka wiedza jest mi potrzebna

Aby rozpocząć zabawę w webhacking potrzebna jest podstawowa wiedza programistyczna (inaczej z miejsca nie ruszysz+oprogramowanie oczywiście do trenowania) z zakresu:

  • podstaw HTML
  • podstaw PHP
  • zagadnienia bazodanowe (na początek SQL)
  • przydatna jest też znajomość JavaScript.
  • ogólna znajomość zagadnień internetowych (obsługi stron www:))
  • dodatkowo program XAMPP lub dowolny serwer w celu przećwiczenia sobie i potrenowania.
  • zwykła przeglądarka internetowa taka jak Firefox

Metod ataku na strony www jest bardzo wiele i należy pamiętać że nie każda strona jest podatna na każdy atak, należy zdać sobie sprawę, że większość stron jest w miarę dobrze zabezpieczonych ale do przejścia (jeśli znajdziesz lukę farciarzu:)!). Luk szuka się najczęściej ręcznie lub za pomocą wyspecjalizowanych narzędzi wspomagających audyty bezpieczeństwa. Dostępne są też bazy danych z exploitami (troszke o tym w naszym wpisie NMAP – skaner portów).

W każdym wpisie pod koniec postaram się pokazać jak można w miarę możliwości zabezpieczyć nasz prywatny skrypt przed tego typu atakami. Cykliczność oznacza, że będzie ten kurs kontynuowany w przyszłości. Również w miarę możliwości postaramy się tworzyć filmy do niego oczywiście z komentarzem po PL, mamy dość pseudo-crackerów dzieci, które kręcą filmy na YouTube z metodami które nie działają a mają za zadanie albo zdenerwować odbiorce, albo zarazić programem imitującym narzędzia do hakowania (np: wszelkie facebook hackery). Postaramy się również pisać dla ludzi – a więc chłopski język to podstawa (nie nie chodzi o język zastosowany w „Chłopach”, Władysława Reymonta). Dołączone będą również kody źródłowe gotowe do ataku, aby sobie samemu przećwiczyć na swoim komputerze (wymagany XAMPP lub własny hosting). Pamiętaj że bez znajomości podstaw HTML, PHP, SQL i JS nie ruszysz dalej.

Atak XSS na stronę WWW

Więc czym jest XSS (pełna nazwa to cross-site scripting)?

jak włamać się na stronę internetową - prosty atak XSS z JS
Uproszczony schemat ataku XSS

Wyobraź sobie że jesteś programistą lub autorem strony internetowej. Internauta ma do dyspozycji na Twojej stronie funkcje pozwalające potocznie mówiąc „dodawać treść”, która następnie jest wyświetlana, przykładowo może być to:

  • księga gości
  • mikroblog (twitter) dla gości
  • system komentarzy umożliwiający każdemu lub zarejestrowanym komentować daną treść/zdjęcia.
  • wyszukiwarka użytkowników
  • wiele wiele wiele więcej
  • tablica na fejsie (OHH Ty hakerze! Życzę i Tobie odnalezienia podatności XSS w skryptach fejsa, można nawet dostać za to prawdziwe pieniądze z programu Facebook Bug Bounty :))

Atak polega na nie przewidzeniu przez projektanta danej strony/skryptu możliwości umieszczenia oprócz komentarza/treści/itd dodatkowego kawałka swojego kodu HTML/JavaScript/itd. Jeżeli wpisujemy w formularz zamiast samej treści tag HTML pogrubiający tekst <b>:

a po wyświetleniu jest on pogrubiony (chodzi o słowo „komentarza”). To strona jest poddana na atak typu XSS (osadzania własnego kodu na oczywiście nie własnej stronie www). Pół biedy jeśli dane nie są zapisywane jawnie (tak jak w wyszukiwarkach, choć i wtedy można dokonać pewnego ataku) i tylko my widzimy wyświetlony tekst (ale gdy odświeżymy to znika), gorzej jeżeli to co napisaliśmy jest gdzieś przechowywane i wyświetli się nam i innym (np: w amatorskich księgach gości). A już gorzej być dla autora strony nie może, gdy da się osadzać kod JavaScript… więc warto nauczyć się choć trochę tego języka z darmowych kursów JavaScript dostepnych w internecie.

Za pomocą JavaScriptu możemy między innymi:

  • przekierowywać użytkowników na inną stronę (zamiast obejrzeć komentarze użytkownik strony zostanie wysłany heń daleko)
  • zmieniać dowolnie wygląd strony (praktycznie każdy element)
  • sprawić że pojawi się animacja śniegu na stronie
  • wyświetlić fajne komunikaty
  • wykraść pliki cookies i dzięki nim zalogować się na administratora lub innych użytkowników.
  • wiele wiele więcej…

Oczywiście przekierować użytkownika możemy również na fałszywą stronę phishingową, wyglądającą identycznie jak atakowana, być może się zaloguje? Zrozumiesz to gdy obejrzysz filmik dołączony do wpisu. :) Więcej o phishingu w wpisie jak włamać się na facebooka.

Przykładowo  mamy taki oto uproszczony kod na naszej stronie (równie dobrze może być to funkcja komentowania wpisów na czyimś blogu):

Co się stanie jak umieścimy taki oto kod w formularzu?

Jak włamać się na stronę internetową - xss

Czy na pewno projektant chciał, aby użytkownicy w komentarzach dołączyli swój kod i dodali za pomocą znacznika np <img> obrazki, bądź psuć wygląd strony autora za pomocą innych tagów html/js? Na pewno nie! Jak pomyślimy logicznie to, gdyby komentarz wpisany powyżej był zapisywany gdzieś w bazie danych/pliku to powinien zostać wyświetlony wszystkim internautą (łącznie z autorem strony). Jest to PRAWDA! Włamywanie się na strony www okazuje się nie zawsze jest takie trudne jeżeli na to wpadłeś sam!

Czy to jest już koniec możliwości? NIE! XSS można wykorzystać do przejęcia kont użytkowników lub nawet administratora danej strony za pomocą ciasteczek (raczej ich wykradnięcia poprzez przekierowanie zademonstrowane w tym wpisie za pomocą JS). Więcej o ciasteczkach w przyszłych wpisach.

Atak cross-site scripting – JavaScript

JavaScript jest językiem programowania umożliwiającym wykonanie wiele bardzo ciekawych „akcji” przez przeglądarkę (łącznie z liczeniem). Zbiór ciekawych skryptów w JavaScripcie możecie znaleźć w swojej wyszukiwarce.




DYGRESJA: Jeśli już programowałeś to podpowiem Ci że JavaScript się nie kompiluje gdzieś tam na serwerze, ale wykonuje go przeglądarka www internauty na jego prywatnym komputerze taka jak FireFox, Chrome, Opera. 
Na czym polega ten atak XSS z JavaScript, bo już nie wiem!? Na tym samym – umieszczeniu skryptu JS na stronie. Tyle że skrypt JS  nie dość, że nie jest widoczny przez użytkownika (zależnie od funkcji którą użyjemy, JS jest widoczny w kodzie strony jeśli go podejrzymy) to może dodatkowo Nas nawet Nas przekierować wraz z kilkoma danymi od użytkownika takimi jak ciasteczka, godzina komputera i wiele więcej…

Przykładowe funkcje:

Pierwsza funkcja alert() wyświetli monit o danej treści (czyż nie jest to złośliwe)? Druga natomiast, każe przeglądarce bez żadnego pytania przekierować użytkownika przeglądarki na stronę haker.edu.pl. Pamiętaj że jeżeli będzie to księga gości… oberwie każdy użytkownik ją czytający.

atak Cross-site scripting - przykład

Funkcje przetestowałem w najnowszym na dzień dzisiejszy Firefox’ie 25.0.1, (ponieważ chrome niedawno wprowadziło w przeglądarce mechanizm anty-XSS, lecz jest prosty do obejścia… więcej w googlu najwyżej nie oberwą użytkownicy Chrome, chyba że dane są zapisywane to jak zobaczycie na filmiku nie wiele Chrome chroni (jedyne co to użytkownika przed wykradaniem ciasteczek ale i to da się obejść)) :).

Przypuśćmy że mamy oto taką stronę internetową (dostępna w zestawie szkoleniowym dalej):

strona podatna na xss

Co możemy przykładowo zrobić za pomocą JavaScriptu? Podmienić logo na inne, aby skompromitować autora strony. Wystarczy mówiąc w przenośni zmodyfikować pierwszą linijkę kodu z odnośnikiem do obrazka i zmienić na dowolnie inny, jak wymieniałem wcześniej kilka możliwości JS jest to możliwe w ten sposób (wpisując w formularz):

Adres do zdjęcia wyszukałem w google, można wrzucić swój obrazek na stronę taką jak fotosik lub imageshack i umieścić go na stronie ofiary, możesz również wykorzystać swój serwer (jakiś tani hosting z domeną), lecz nie jest to za bezpieczne.

Za pomocą obiektu document, metody getElementById pobieramy uchwyt do danego elementu na stronie (w tym przypadku do obrazka bo jest w nim id=”logo”) a następnie wykorzystując atrybut .src (ścieżki do zdjęcia) zmieniamy go na dowolny adres. Możemy tak edytować każdy element na hostingu www (danej stronie internetowej), wystarczy że znamy troszeczkę html, javascript i css.
Strona po ataku:

 

shakowana strona XSS

Zaraz zaraz… ale przecież tylko ja widzę to zdjęcie…

Tak to fakt – dane nie są zapisywane, ale jeśli skrypt byłby prawdziwą księgą gości, bądź dowolną funkcjonalnością co zapisuje a następnie wyświetla ogółowi nasz komentarz/obojętnie co, to zobaczą to wszyscy odwiedzający stronę. Taki skrypt treningowy znajduje się nieco dalej do pobrania w treningu hackingu XSS.

Czy tylko formularze HTML są narażone na atak XSS?

Nie! Również parametry przekazywane za pomocą adresu strony www (metody GET) jeżeli są zapisywane=to są groźne! Przykładowo taki link:

W miejscu parametru dodaj= wstrzyknęliśmy skrypt JS. Przykładowo w poprzednich skryptach wystarczy zmienić echo $_POST[‚wpisane’]; na echo $_GET[‚wpisane’]; i odwoływać się zamiast formularza w ten sposób (skrypt dostępny w zadaniu domowym do pobrania zupełnie za darmo!):

 

Zadanie domowe z ataku XSS – DOWNLOAD!

Przygotowałem również dla Was szkoleniowy skrypt hakerski (taka darmowa szkoła hakerów :)), który zapisuje komentarze w pliku tekstowym a następnie je wyświetla, jest to super prosty skrypt i nie używa bazy danych, ale świetnie obrazuje atak. Atak na wielkie strony praktycznie nie odbiega od tego zaprezentowanego. Wystarczy go wrzucić do folderu XAMPP (wybieramy w programie start dla Apache, a gdy zmieni się kolor na zielony wybieramy Explore i wrzucamy do folderu htdocs pliki, możemy również wykorzystać swój darmowy serwer ftp taki jak cba.pl).

Spróbujcie się pobawić JavaScriptem i HTML (wiele tutoriali na temat tych języków dostępnych jest w internecie za darmo) . Skrypt zawiera oczywiście (przykłady powyższe+logo.jpg+treningowa księga gości w php):

Przykładowy skrypt szkoleniowy XSS
Przykładowy skrypt szkoleniowy XSS księga gości

 >>>Pobierz skrypt treningowy xss1-trenning.zip<<<

Dla ciekawskich, polecam pobawić się różnymi atrybutami użytymi na stronie np. tym jeżeli lubicie różowe strony internetowe:

Jeśli znasz htmla to nawet bez znajomości JS zmienisz i inne elementy intuicyjnie, a że komentarze są zapisywane to zmiany są widoczne przez wszystkich. Jeżeli chcesz usunąć zmiany ze skryptu wystarczy usunąć plik komentarze.txt (on je przechowuje), który znajduje się obok plików treningowych.

Czy dzisiaj ataki XSS mają sens?

TAK! Nawet dzisiaj wiele stron jest podatnych na ataki XSS takich jak nawet onet, wp, demotywatory i ich klony, starsze i obecne wersje wordpressa, CMS, wtyczki do CMS (w tym rządowych, niedawno nawet na facebooku było kilka publicznych podatności XSS). Wiele nowych podatności XSS różnego typu oprogramowań dostępnych jest na http://1337day.com.

Zabezpieczenie się przed XSS

Zabezpieczanie skryptów przed cross-site scripting w teorii jest proste (w praktyce trudniejsze, bo trudno przewidzieć co wpisze użytkownik, nawet jak coś filtrujemy często da się to obejść znakami specjalnymi) – filtruj wszystkie dane przesyłane przez użytkownika. Używaj JavaScript do walidacji formularzy (lecz tylko na tym nie polegaj, bo napastnik może zmienić kod walidacyjny ponieważ jest on dostępny w kodzie html), z poziomu PHP możesz używać takich funkcji jak addslashes(), htmlspecialchars(), strip_tags() bądź własnej obsługi stringów.

Materiał video szkoleniowy uzupełniający wpis XSS

Wideo jest do pobrania w zakładce WIDEO / DOWNLOAD lub bezpośrednio tutaj.

Następna część nr 2 wpisu o metodach ataków na strony www

Poniżej znajduje się kolejna część cyklu metod audytowania bezpieczeństwa stron internetowych i ich zabezpieczania przed cyberprzestępcami.

Jak włamać się na stronę internetową? | KURS UPLOADERA #2

Podsumowanie

Dziękuje za przeczytanie pierwszego wpisu z cyklu podstaw webhackingu. Teraz już znasz jedną (do tego najpopularniejszą i najczęściej występującą) metodę włamań na strony internetowe www. Mam nadzieje, że podobał Wam się zarówno wpis jak i filmik (kręcony późną porą).

Jeśli myślisz że hacking www i luki z podatnością XSS nie występują/nie istnieje, to bardzo się mylisz… po prostu portale są tak duże, że ciężko je znaleźć (kilka lat temu w wujku google była również luka XSS) i białym kapeluszą i hakerą – black hat. To już koniec pilotażowego wpisu od lamera do megahakera. Podobało się?

Może zainteresuje Cię jeszcze:

Pozdrawiamy! :-)




86 myśli na temat “Jak włamać się na stronę internetową? | KURS – XSS #1

    1. Gratuluje, jednak należy mieć na uwadze że wiele formularzy umożliwia użytkownikom formatować tekst. Polecam Tobie zainteresować się naszym zupełnie darmowym kursem na YouTube o nazwie Web Application Pentesting.

  1. Warto czytać takie informacje, chociażby dlatego, aby każdy z nas wiedział, co na nas czeka, jakie zagrożenia czyhają w internecie.

    1. W logach serwera Apatche/Web Analyzera na hostingu (w statystykach często te opcje są dostępne) można przejrzeć szczegółowe logi zapytań HTTP i skorelować to z godziną włamania. Analiza powłamywaniowa to temat rzeka. O ile się nie mylę niestety WordPress bez wtyczek nie posiada odpowiednich mechanizmów logujących ruch użytkowników. Polecam do tego celu świetny darmowy plugin (też jest wersja premium) o nazwie Wordfence. Aktualizuj oczywiście stale WordPressa i wtyczki/motywy. Jest to skaner, zbieracz logów, system IDS (reagowania na włamania/autobanowania itd). Używaj też silnego hasła!. Pozdrawiam Hanno

    1. Tutaj jest treść komentarza.
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12

      Od „lamera do superhakera” – haker.edu.pl #1
      Atak XSS

      Wpisz co chcesz:

  2. Czy ktoś może pomóc zabezpieczyć stronę przed włamaniem?
    Na stronę / na serwer FTP zostaly wgrane zainfekowane pliki PHP. Zresztą nie pierwszy raz.
    Strona główna (szablon) zrobiona jako index.php i podstrony galeria.php, cennik.php itp.
    Brak na niej żadnych formularzy do wpisania kodu, ani księgi gości.

  3. Proszę jeśli to możliwe aby ktoś for fun zabawił się z witryną ********** . Chciałbym aby dokonał tego ktoś kto ma wprawę w takie sprawy. Gra ssie totalne Pay2Win czas na jej koniec

    1. Bardzo zabawne. Na złą stronę trafiłeś. My nie popieramy przestępców i crackerów. :-)

    1. Nie, zależy jak to rozumiesz :-) Najpierw trzeba znać podstawy webmasteringu.

  4. Jakimi skrotami wejsc do tego aby moc edytowac ten kod bo to nie zostalo wytlumaczone ^^ zeby jakims sposobem wejsc i muc zmienic kod tej strony bo chce zmienic kod zeby przenosilo na moja strone pishingowa pozdrawiam :D

    1. To są zwykłe pliki tekstowe i można je edytować wrzucone do folderu serwera XAMMP:-). Podstawy podstaw.

    1. To co opisuje to działa, ale żeby zrozumieć warto chociaż podstawy tych języków znać.

    1. Pracujemy nad tym, zostaliśmy po prostu na serwerze zablokowani za za duży transfer :-). Więcej czytelników spowodowało te problemy. Dziękujemy PLO za informacje!

  5. co jeśli na stronie jest tylko powiedzmy księga gości i to jest jedyny sposób na dodawanie treści i jest odporna na xss to czy nie ma innego sposbu na wstrzyknięcie kodu ?
    Na localhoście próbowałem i się nic nie wymyśliłem ;p

    1. Może być nie odprorna na SQL injection, albo mieć jak podejrzysz kod HTML jakieś ukryte pole formularza (hidden) które też posiadają wpisaną wartość „value=” tam też czasem da się coś niespodziewanego wstrzelić.

  6. Słuchajcie mam problem, bo na localhoscie nie dzialaja mi JS. chodzi o to, ze jak napisze przykkladowo alert(„hdhadaf”) to i tak nie działa, a html działa

    1. Poczytaj jakiś kurs js (sam początek) i sprawdź czy ogólnie JS Ci działa w przeglądarce.

  7. Zawsze byłem ciekawy jakie ma hasło kolega. Nie wpadłem na wpisywanie innych niż login ‚admin’ hasło ‚password’. W zasadzie to zwyczajnie mi się nie chciało :) Wczoraj kolega do mnie dzwoni że nie wie jakie ma hasło. Przypomniał mi się ten niezastąpiony haker.edu.com ( :] ) no i: login ‚admin’ hasło ‚admin’, i jesteśmy w domu :) DZIĘKI BARDZO! (to hasło mi się przyda, oj przyda :) )

    1. Bo to ma być w przyszłości kurs, a to tylko zalążek o atakach XSS.

  8. czesc mam pytanie czy mozliwe jest jezeli ktos wlamal mi sie lub podlozyl mi keyloggerana kompa na konto do gry i zmienil haslo i email?jest mozliwe odzyskanie hasla do konta i lub chociarz email? chodzi mi o gre mmorpg pt.”The pride of taern” prosze o szybka odpowiedz z gory dzieki

    1. Nie. Nie jesteśmy włamywaczami i przestępcami, prowadzimy tylko blog dotyczący bezpieczeństwa komputerowego.

  9. Dalej nie rozumiem, :( mam prostą stronę html, pewno w notatniku pisana, i jak w niej zmienić wygląd czy coś? W sensie to nie moja strona. Piszecie o szukaniu luk, ale jak ja znaleźć, a nawet jak znajdę, to co z taką luką zrobić? nie napisalibyście porandika od 0, dla całkiem, zielonych?

    1. Naucz się PHP/HTML i formularzy (GET/POST) wtedy Ci się wiele rozjaśni. Szukasz w miejscach gdzie można wprowadzać dane na stronie (za pomocą paska adresu/formularzy (POST) lub nagłówków http). Następnie jak znajdziesz podatność to ją wykorzystujesz.

  10. A jak można nabić punkty na stronie? Każda osoba ma tylko po 5 punktów na dzień do dodania a chciałbym nabić punktów, żeby wygrać, dałoby radę?

    1. Wygląda na autorski CMS więc ciężko powiedzieć cokolwiek o dziurach w tym systemie bez zgody pisemnej autora. Ew. logowanie bruteforce.

  11. Witam

    Moje pytanie brzmi :
    Czy można się „wbić” na stronę x nie robiąc żadnych zmian tylko mieć dostęp do ukrytych treści owej strony ?

    1. Tak, ale nie zawsze za pomocą XSS. Najczęściej są to ataki typu SQL Injection, musisz znać silnik bazodanowy i SQL i poaudytować skrypty na stronie w celu wydobycia z bazy danych informacji których potrzebujesz.

    1. Zgadza się, próbujemy odpowiadać na najczęstsze pytania na forach, zbierać informacje i opracowywać w przystępny sposób. Ma być to wstęp do zainteresowania się bezpieczeństwem systemów informatycznym i problemami współczesnego świata, nie kurs hackingu.

      Dziękuje z komentarz!

  12. Bardzo fajny poradnik, wiele się nauczyłem dzięki twojemu blogowi :3 Już nie mogę się doczekać kolejnych części webhackingu, to jest coś co naprawdę mnie interesuje ^^ Oby tak dalej !!!

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *