Bezpieczeństwo aplikacji tworzonych w technologii Ajax

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    Favorites, Groups & Events

    Bezpieczeństwo aplikacji tworzonych w technologii Ajax - Presentation Transcript

    1. Bezpieczeñstwo aplikacji tworzonych w technologii Ajax Autor: Billy Hoffman, Bryan Sullivan T³umaczenie: Robert Górczyñski ISBN: 978-83-246-1693-0 Tytu³ orygina³u: Ajax Security Format: 168x237, stron: 496 Bezpieczeñstwo aplikacji WWW w Twoich rêkach! • Jakie ataki Ci gro¿¹? • Jak zapewniæ bezpieczeñstwo Twojej aplikacji WWW? • Jak testowaæ aplikacjê AJAX? Technologia AJAX zdoby³a rynek aplikacji internetowych – to fakt. Si³a i szybkoœæ, z jak¹ tego dokona³a, robi¹ wra¿enie. Niestety, wysoka wydajnoœæ w zdobywaniu rynku odbi³a siê negatywnie na jakoœci kodu i jego odpornoœci na ataki. Oczywiœcie wiele rozwi¹zañ spe³nia najwy¿sze standardy jakoœci i bezpieczeñstwa, ale istnieje jeszcze wiele serwisów, które powinny o to zadbaæ. Je¿eli zastanawiasz siê, czy Twój serwis korzystaj¹cy z AJAX jest odpowiednio zabezpieczony, ta ksi¹¿ka odpowie na to pytanie! Ma³o tego, dziêki „Bezpieczeñstwo aplikacji tworzonych w technologii Ajax” dowiesz siê, jak optymalnie zabezpieczyæ Twoj¹ aplikacjê, a tak¿e poznasz rodzaje ataków, na które ta aplikacja mo¿e byæ nara¿ona. Poznasz tak¿e charakterystykê zagro¿eñ oraz nauczysz siê efektywnie wykorzystywaæ mechanizm SSL (skrót od ang. Secure Sockets Layer). Po lekturze tego podrêcznika bêdziesz w stanie poznaæ typowe b³êdy pope³niane przez programistów. Zrozumiesz, w jaki sposób ktoœ mo¿e wykonaæ atak na warstwê prezentacji oraz dane zgromadzone w przegl¹darce. Ponadto nauczysz siê testowaæ aplikacje AJAX. Autorzy ksi¹¿ki przedstawi¹ równie¿ wady i zalety popularnych szkieletów aplikacji AJAX. • Podstawy technologii AJAX • Asynchronicznoœæ • Rodzaje ataków • Wykorzystanie SSL • Walidacja przyjmowanych danych • Skomplikowanie kodu a bezpieczeñstwo • Typowe b³êdy programistów • Przechwytywanie danych po stronie klienta • Bezpieczeñstwo w Google Gears oraz Dojo.Offline • Zagro¿enia zwi¹zane z warstw¹ prezentacji • Testowanie aplikacji AJAX • Zalety i wady dostêpnych szkieletów aplikacji AJAX Zapewnij bezpieczeñstwo Twojej aplikacji!
    2. Spis tre ci Przedmowa ............................................................................................ 15 Przedmowa (ta rzeczywista) .................................................................. 17 PodziÚkowania ...................................................................................... 21 O autorach ............................................................................................. 23 Rozdziaï 1. Wprowadzenie do bezpieczeñstwa technologii Ajax ............................. 25 Elementarz technologii Ajax ..................................................................................26 Czym jest Ajax? ................................................................................................26 Asynchroniczny ................................................................................................28 JavaScript ..........................................................................................................30 XML ..................................................................................................................34 Dynamiczny HTML (DHTML) ....................................................................35 Przechodzenie na architekturÚ Ajax ......................................................................35 Architektura grubego klienta ...........................................................................36 Architektura cienkiego klienta .........................................................................37 Ajax: zïotowïosa architektura ...........................................................................39 Architektura grubego klienta z punktu widzenia bezpieczeñstwa ................40 Architektura cienkiego klienta z punktu widzenia bezpieczeñstwa ..............41 Aplikacje Ajax z punktu widzenia bezpieczeñstwa .........................................42 Burza luk bezpieczeñstwa ......................................................................................43 ZwiÚkszony poziom zïo ono ci, przejrzysto ci i wielko ci ...........................43 Kwestie socjologiczne ......................................................................................46 Aplikacja Ajax: cel atrakcyjny i strategiczny ....................................................47 Podsumowanie .......................................................................................................48
    3. 8 Spis tre ci Rozdziaï 2. Wïamanie .............................................................................................. 49 Ewa ..........................................................................................................................49 Atak na witrynÚ HighTechVacations.net ..............................................................50 Zïamanie systemu kuponowego .....................................................................50 Atak na doïÈczanie danych po stronie klienta .................................................56 Atak na API Ajax ...............................................................................................61 Kradzie w jednÈ noc .............................................................................................66 Rozdziaï 3. Ataki sieciowe ....................................................................................... 69 Podstawowe kategorie ataków ...............................................................................69 Wyliczanie zasobów .........................................................................................70 Manipulacje parametrami ................................................................................74 Inne rodzaje ataków ...............................................................................................98 Cross-Site Request Forgery (CSRF) ..............................................................98 Phishing ............................................................................................................99 Denial of Service (DoS) .................................................................................100 Ochrona aplikacji sieciowej przed atakiem wyliczania zasobów lub manipulacji parametrami ............................................................................101 Secure Sockets Layer ......................................................................................102 Podsumowanie .....................................................................................................102 Rozdziaï 4. Sposoby ataków na Ajax ..................................................................... 105 Zrozumienie sposobów ataków na aplikacje Ajaksa ...........................................105 Sposoby ataków na tradycyjne aplikacje sieciowe ..............................................107 Pola danych wej ciowych formularzy sieciowych .......................................107 Mechanizm cookies .......................................................................................109 Nagïówki ........................................................................................................110 Ukryte pola formularza sieciowego ..............................................................110 Parametry ciÈgu tekstowego zapytania ..........................................................111 Pliki przekazywane na serwer ........................................................................114 Ataki na tradycyjne aplikacje sieciowe: ogólna ocena .........................................115 Rodzaje ataków sieciowych ..................................................................................116 Metody usïugi sieciowej ................................................................................117 Definicje usïugi sieciowej ..............................................................................118 Ataki na aplikacje Ajaksa ......................................................................................119 ½ródïa ataków na aplikacje Ajaksa .................................................................120 Najlepsze z poïÈczenia obu wiatów — z punktu widzenia hakera ............122 Prawidïowa weryfikacja danych wej ciowych ....................................................123 Problem z czarnÈ listÈ oraz innymi okre lonymi poprawkami ...................124 Leczenie objawów zamiast choroby ..............................................................126 Weryfikacja danych wej ciowych na podstawie biaïej listy ..........................129 Wyra enia regularne .......................................................................................133 Dodatkowe przemy lenia dotyczÈce weryfikacji danych wej ciowych .......133
    4. Spis tre ci 9 Weryfikacja rozbudowanych danych wej ciowych u ytkownika ......................135 Weryfikacja kodu znaczników .......................................................................136 Weryfikacja plików binarnych .......................................................................138 Weryfikacja kodu ródïowego JavaScript ......................................................138 Weryfikacja serializowanych danych .............................................................144 Mit dotyczÈcy tre ci dostarczanej przez u ytkownika .......................................146 Podsumowanie .....................................................................................................147 Rozdziaï 5. Zïo ono Ê kodu Ajaksa ......................................................................... 149 Wiele jÚzyków i architektur .................................................................................149 Indeksowanie tablicy ......................................................................................150 Operacje na ciÈgach tekstowych ....................................................................152 Komentarze w kodzie ....................................................................................153 Problem innej osoby ......................................................................................154 Dziwactwa JavaScript ...........................................................................................156 Interpretowany, a nie kompilowany .............................................................156 Sïaba kontrola typów ......................................................................................157 Asynchroniczno Ê ................................................................................................159 Problem tak zwanych wy cigów ...................................................................159 Zakleszczenia i problem jedzÈcych filozofów ..............................................163 Synchronizacja po stronie klienta ..................................................................167 Zachowaj ostro no Ê podczas przyjmowania rad ..................................................168 Podsumowanie .....................................................................................................169 Rozdziaï 6. Przejrzysto Ê aplikacji Ajaksa ............................................................... 171 Czarne pudeïka kontra biaïe pudeïka ..................................................................172 Przykïad: witryna MyLocalWeatherForecast.com .......................................174 Przykïad: witryna MyLocalWeatherForecast.com wykonana z u yciem technologii Ajax .........................................................................176 Podsumowanie porównania ..........................................................................179 Aplikacja sieciowa jako API .................................................................................180 Rodzaje danych i sygnatury metod ...............................................................181 Szczególne bïÚdy dotyczÈce bezpieczeñstwa ......................................................182 Nieprawidïowe uwierzytelnienie ..................................................................182 Nadmierne rozdrobnienie API serwera ........................................................184 Przechowywanie stanu sesji w jÚzyku JavaScript .........................................187 Ujawnianie u ytkownikom poufnych danych .............................................188 Komentarze i dokumentacja w kodzie dziaïajÈcym po stronie klienta .......190 Transformacja danych wykonywana po stronie klienta ...............................191 Bezpieczeñstwo poprzez zaciemnianie ...............................................................195 Techniki zaciemniania kodu .........................................................................196 Podsumowanie .....................................................................................................198
    5. 10 Spis tre ci Rozdziaï 7. Przechwytywanie aplikacji Ajaksa ....................................................... 199 Przechwycenie struktury Ajaksa ..........................................................................200 Przypadkowe nadpisanie funkcji ...................................................................200 Nadpisywanie funkcji dla rozrywki lub w celu osiÈgniÚcia korzy ci ..........202 Przechwytywanie technologii Ajax na Èdanie ...................................................208 Przechwytywanie API JSON ..............................................................................213 Przechwycenie obiektu ..................................................................................218 Geneza przechwycenia danych JSON ..........................................................218 Obrona przed atakiem przechwycenia API ..................................................219 Podsumowanie .....................................................................................................222 Rozdziaï 8. Ataki na magazyny danych po stronie klienta ..................................... 223 Ogólny opis systemów magazynowania danych po stronie klienta ..................223 Ogólne informacje dotyczÈce bezpieczeñstwa magazynu danych po stronie klienta .........................................................................................225 Mechanizm HTTP cookies .................................................................................226 Reguïy kontroli dostÚpu do cookie ...............................................................229 Pojemno Ê cookie HTTP ..............................................................................234 Czas ycia cookie ............................................................................................237 Dodatkowe informacje w zakresie bezpieczeñstwa cookie ..........................238 Podsumowanie rozwa añ dotyczÈcych u ywania cookie jako magazynu danych .................................................................................239 Obiekty Flash Local Shared Objects ...................................................................240 Podsumowanie informacji o obiektach Local Shared Object ......................248 Magazyn danych DOM .......................................................................................249 Magazyn danych sesji .....................................................................................250 Globalny magazyn danych .............................................................................252 Diabelskie szczegóïy dotyczÈce magazynu danych DOM ..............................254 Bezpieczeñstwo magazynu danych DOM ...................................................256 Podsumowanie informacji dotyczÈcych magazynu danych DOM .............257 Magazyn userData w przeglÈdarce Internet Explorer ........................................258 Podsumowanie dotyczÈce bezpieczeñstwa ...................................................263 Ogólne informacje o atakach i obronie magazynów danych po stronie klienta ......264 Ataki typu cross-domain ................................................................................264 Ataki cross-directory ......................................................................................265 Ataki cross-port ..............................................................................................266 Podsumowanie .....................................................................................................267 Rozdziaï 9. Ajaksowe aplikacje offline ................................................................... 269 Ajaksowe aplikacje offline ....................................................................................269 Google Gears ........................................................................................................271 Rodzime funkcje bezpieczeñstwa i niedociÈgniÚcia Google Gears .............272 Luki bezpieczeñstwa w komponencie WorkerPool .....................................276 Ujawnienie danych LocalServer i ska enie danych .....................................277 Bezpo redni dostÚp do bazy danych Google Gears .....................................281 Ataki typu SQL Injection i struktura Google Gears .....................................282 Jak niebezpieczny jest atak SQL Injection po stronie klienta? ....................287
    6. Spis tre ci 11 Dojo.Offline .........................................................................................................289 Bezpieczne przechowywanie klucza .............................................................290 Zapewnienie bezpieczeñstwa danych ...........................................................291 Dobre hasïa dla dobrych kluczy ....................................................................292 Weryfikacja danych wej ciowych po stronie klienta staïa siÚ istotna ................293 Inne podej cia do aplikacji offline .......................................................................294 Podsumowanie .....................................................................................................295 Rozdziaï 10. Kwestie zwiÈzane z pochodzeniem Èdañ ........................................... 297 Roboty, pajÈki, przeglÈdarki internetowe oraz inne koszmary ..........................297 „Cze Ê! Nazywam siÚ Firefox. LubiÚ programowanie, pliki PDF oraz dïugie spacery po pla y” .....................................................299 Niepewno Ê dotyczÈca ródïa pochodzenia Èdania oraz JavaScript ................300 ¿Èdania Ajaksa z perspektywy serwera .........................................................300 U ytkownik lub kto podszywajÈcy siÚ pod niego .......................................304 Wysyïanie Èdañ HTTP za pomocÈ JavaScriptu ..........................................306 Ataki JavaScript z u yciem Èdañ HTTP w aplikacjach niestosujÈcych technologii Ajax ...........................................308 Kradzie tre ci za pomocÈ obiektu XMLHttpRequest ................................310 PoïÈczenie ataków XSS i XHR w praktyce ...................................................315 Sposoby obrony ....................................................................................................317 Podsumowanie .....................................................................................................319 Rozdziaï 11. Aplikacje mashup oraz agregatory ...................................................... 321 Dane z Internetu nadajÈce siÚ do u ycia .............................................................322 Wczesne lata 90. ubiegïego wieku — poczÈtek wspóïczesnego Internetu ........................................................322 Poïowa lat 90. XX wieku — narodziny machiny sieciowej .........................323 XXI wiek — machina sieciowa staïa siÚ dojrzaïa ..........................................324 Publicznie dostÚpne usïugi sieciowe .............................................................325 Aplikacja mashup: frankenstein Internetu ..........................................................327 ChicagoCrime.org .........................................................................................328 HousingMaps.com .........................................................................................329 Inne aplikacje typu mashup ...........................................................................330 Budowanie aplikacji mashup ...............................................................................331 Aplikacje mashup i Ajax .................................................................................332 Pomost, proxy, brama — och nie! .......................................................................334 Alternatywy dla proxy Ajax ............................................................................335 Ataki na proxy Ajax ..............................................................................................336 Halo, HousingMaps.com? .............................................................................338 Weryfikacja danych wej ciowych w aplikacji mashup .......................................341 Witryny agregujÈce ...............................................................................................343 Zdegradowane bezpieczeñstwo i zaufanie ..........................................................351 Podsumowanie .....................................................................................................354
    7. 12 Spis tre ci Rozdziaï 12. Ataki na warstwÚ prezentacji ................................................................ 357 Szczypta prezentacji mo e zabiÊ tre Ê .................................................................357 Ataki na warstwÚ prezentacyjnÈ ...........................................................................361 Analiza danych w kaskadowych arkuszach stylów .............................................362 Sztuczki dotyczÈce wyglÈdu i dziaïania ...............................................................365 Zaawansowane sztuczki dotyczÈce wyglÈdu i dziaïania ...............................369 Osadzona logika programu ..................................................................................372 Ataki na kaskadowe arkusze stylów .....................................................................374 Modyfikacja bufora przeglÈdarki internetowej .............................................376 Uniemo liwianie ataków na warstwÚ prezentacyjnÈ .........................................379 Podsumowanie .....................................................................................................381 Rozdziaï 13. Robaki JavaScript ................................................................................. 383 Opis robaków JavaScript ......................................................................................383 Tradycyjne wirusy komputerowe .................................................................384 Robaki JavaScript ...........................................................................................387 Konstrukcja robaka JavaScript .............................................................................389 Ograniczenia jÚzyka JavaScript ......................................................................391 Rozprzestrzenianie siÚ robaków JavaScript ..................................................392 Operacje wykonywane przez robaki JavaScript ............................................392 Podsumowanie czÚ ci teoretycznej ...............................................................401 Studium przypadku: robak Samy ........................................................................401 Jak dziaïaï robak Samy? ..................................................................................402 Dziaïalno Ê robaka Samy ...............................................................................405 Podsumowanie analizy robaka Samy ............................................................407 Studium przypadku: robak Yamanner (JS/Yamanner-A) ..................................408 W jaki sposób dziaïaï robak Yamanner? ........................................................409 Dziaïalno Ê robaka Yamanner .......................................................................412 Podsumowanie analizy robaka Yamanner ....................................................413 Lekcje wyciÈgniÚte po analizie rzeczywistych przykïadów robaków JavaScript ......416 Podsumowanie .....................................................................................................417 Rozdziaï 14. Testowanie aplikacji Ajaksa ................................................................. 419 Czarna magia ........................................................................................................420 Nie ka dy do przeglÈdania Internetu u ywa przeglÈdarki internetowej ...........424 Paragraf 22 ......................................................................................................427 NarzÚdzia sïu Èce do sprawdzania bezpieczeñstwa, czyli dlaczego prawdziwe ycie nie przypomina Hollywood? ........................428 Katalogowanie witryny ..................................................................................429 Wykrywanie luk bezpieczeñstwa ...................................................................431 NarzÚdzie analizy: Sprajax .............................................................................433 NarzÚdzie analizy: Paros Proxy .....................................................................435 NarzÚdzie analizy: LAPSE (Lightweight Analysis for Program Security in Eclipse) ...........................437 NarzÚdzie analizy: WebInspect™ ..................................................................439 Dodatkowe przemy lenia dotyczÈce testów pod kÈtem bezpieczeñstwa ..........440
    8. Spis tre ci 13 Rozdziaï 15. Analiza struktur Ajaksa ........................................................................ 443 ASP.NET ..............................................................................................................443 ASP.NET AJAX (dawniej Atlas) ...................................................................444 ScriptService ...................................................................................................448 Ostateczna rozgrywka bezpieczeñstwa: UpdatePanel kontra ScriptService ....... 449 ASP.NET AJAX i WSDL ...............................................................................450 ValidateRequest ..............................................................................................454 ViewStateUserKey .........................................................................................455 Konfiguracja i usuwanie bïÚdów w ASP.NET .............................................456 PHP .......................................................................................................................457 Sajax ................................................................................................................458 Struktura Sajax i ataki Cross-Site Request Forgery .....................................459 Java EE ..................................................................................................................461 Direct Web Remoting (DWR) ......................................................................461 Struktury JavaScript .............................................................................................464 Ostrze enie dotyczÈce kodu dziaïajÈcego po stronie klienta .......................464 Prototype ........................................................................................................465 Podsumowanie .....................................................................................................467 Dodatek A Kod ródïowy robaka Samy ................................................................. 469 Dodatek B Kod ródïowy robaka Yamanner .......................................................... 477 Skorowidz ............................................................................................ 483
    9. 2 Wïamanie Mit: Hakerzy rzadko atakujÈ przedsiÚbiorstwa, wykorzystujÈc do tego celu ich aplikacje wykonane w Ajaksie. Poznaj bezpo redniego wiadka obalajÈcego ten mit, czyli EwÚ. Ewa Nie poznasz jej nawet wtedy, gdy pojawi siÚ ponownie. To nie tak, e dwudziestokilku- letnia kobieta siedzÈca w rogu lokalu pozostaje niewidzialnÈ osobÈ — przecie fizycznie siÚ tam znajduje. Jednak ona celowo byïa ubrana zupeïnie przeciÚtnie, nie wypowiedziaïa wiÚcej ni dziesiÚÊ sïów do wszystkich i nie zrobiïa niczego, co przyciÈgnÚïoby uwagÚ innych osób. Oprócz tego, lokal Caribou Coffee znajduje siÚ na rogu dziesiÈtej ulicy i Piedmont, czyli w samym modnym centrum Atlanty. Mo na wiÚc znale Ê tutaj znacznie wiÚcej interesujÈcych rzeczy do podziwiania ni obserwacja noszÈcej okulary kobiety, która u ywa laptopa ThinkPad i siedzi przy stole stojÈcym w rogu lokalu. Po przyj ciu do lokalu zamówiïa kawÚ i rogala, a godzinÚ pó niej kolejnÈ kawÚ. Oczywi- cie, zapïaciïa gotówkÈ, nie pozostawiajÈc adnego elektronicznego ladu, e znajdowaïa siÚ w danym miejscu o okre lonej godzinie. Dokonany przez niÈ zakup byï wystarczajÈcy na tyle, aby upewniÊ sprzedawcÚ, e kobieta nie jest paso ytem, który chciaï jedynie wyïu- dziÊ bezpïatny dostÚp do bezprzewodowego Internetu WiFi. Sygnaï bezprzewodowy prze- nika przez ciany budynku, wiÚc równie dobrze mogïaby skorzystaÊ z Internetu, pozostajÈc w samochodzie zaparkowanym w pobli u lokalu. Jednak widok kobiety w volkswagenie jetta zaparkowanym na oblÚ onym parkingu i trzymajÈcej laptop w rÚkach mógïby wydawaÊ siÚ podejrzany — znacznie lepszym rozwiÈzaniem byïo wej cie do lokalu i rozpïyniÚcie siÚ w tïumie. Ucieszyïa siÚ, gdy na rodku lokalu zobaczyïa siedzÈcego dzieciaka o blond wïosach w czarnej podkoszulce. Chïopak pisaï co na przeciÚtnym laptopie marki Dell,
    10. 50 Rozdziaï 2 • Wïamanie na obudowie którego znajdowaïy siÚ naklejki „FreeBSD 4 Life”, „2600” oraz „Free Kevin!”. W gïÚbi duszy byïa bardzo zadowolona, script kiddies zawsze wyglÈdajÈ kiepsko, podobnie jak ich tani sprzÚt komputerowy. Nawet przy zaïo eniu, e jej obecna dziaïalno Ê pozostawi lady prowadzÈce do tego lokalu (w co szczerze wÈtpiïa), za hakera zostanie uznany osobnik w koszulce zespoïu Metallica, czyli jedyna osoba, którÈ inni bÚdÈ pamiÚtali. Nikt nie bÚdzie nawet podejrzewaï Ewy. I to bardzo jej odpowiadaïo. Atak na witrynÚ HighTechVacations.net Tego dnia jej celem byïa witryna internetowa HighTechVacations.net1 nale Èca do biura podró y. O witrynie dowiedziaïa siÚ z artykuïu zamieszczonego w Ajaxianie, popularnej witrynie zawierajÈcej informacje na temat technologii Ajax. Ewa lubi aplikacje sieciowe. Caïy Internet jest dla niej terenem, na którym mo e polowaÊ. Kiedy skre li danÈ witrynÚ jako cel ataku, po prostu u ywa wyszukiwarki Google w celu znalezienia tysiÚcy kolejnych. Ewa szczególnie lubi aplikacje Ajaksa. Istnieje caïa masa implikacji bezpieczeñstwa po- wiÈzanych z procesem tworzenia aplikacji ywo reagujÈcych na dziaïania u ytkownika, które majÈ bogate funkcje dziaïajÈce po stronie klienta. A poniewa technologia jest na tyle nowa, posïugujÈcy siÚ niÈ programi ci nadal popeïniajÈ podstawowe bïÚdy i wydaje siÚ, e nikt nie jest w stanie zaproponowaÊ dobrych rozwiÈzañ w zakresie bezpieczeñstwa tego rodzaju aplikacji. Co najlepsze, caïa rzesza nowych, podekscytowanych programistów sie- ciowych codziennie wydaje mnóstwo aplikacji w Ajaksie, wypeïniajÈc tym samym prze- strzeñ niebezpiecznymi programami. Ewa jest zachwycona, uwielbia rodowisko peïne potencjalnych celów ataku! Do witryny HighTechVacations.net Ewa podeszïa w taki sam sposób jak do innych celów. Przede wszystkim upewniïa siÚ, e jej caïy ruch sieciowy odbywaï siÚ poprzez proxy HTTP na jej komputerze lokalnym i rozpoczÚïa przeglÈdanie witryny. NastÚpnie utwo- rzyïa konto u ytkownika, u yïa funkcji wyszukiwania, wprowadziïa dane w formularzu przeznaczonym do wysïania i rozpoczÚïa proces rezerwacji biletów na lot z Atlanty do Las Vegas. Zwróciïa uwagÚ, e na witrynie zostaï zastosowany protokóï SSL. Przeanalizowaïa wiÚc certyfikat SSL i u miechnÚïa siÚ — zostaï utworzony samodzielnie przez autorów wi- tryny. Takie podej cie to nie tylko du y bïÈd w trakcie wdra ania bezpiecznej witryny internetowej, ale równie sygnaï zaanga owania niechlujnych administratorów lub dziaïu IT wynikajÈcy prawdopodobnie z pogoni za pieniÈdzem, a dla Ewy to bardzo dobry znak. Zïamanie systemu kuponowego Ewa kontynuowaïa korzystanie z witryny, a po dotarciu do fazy finalizacji zamówienia zauwa yïa co interesujÈcego — pole Coupon Code w formularzu zamówienia. Wpisaïa wiÚc sïowo FREE i nacisnÚïa klawisz Tab, przechodzÈc tym samym do kolejnego pola formularza. 1 Witryna testowa autorów ksiÈ ki — przyp. red.
    11. Atak na witrynÚ HighTechVacations.net 51 PrzeglÈdarka internetowa natychmiast wy wietliïa komunikat bïÚdu informujÈcy EwÚ, e podany kod kuponu jest nieprawidïowy. To dziwne. W jaki sposób witryna internetowa tak szybko okre liïa, e podany kod kuponu jest nieprawidïowy? Prawdopodobnie w celu wysïania Èdania do serwera zostaïa u yta technologia Ajax. Ewa zdecydowaïa siÚ na przejrzenie kodu ródïowego, aby zorientowaÊ siÚ, co naprawdÚ zachodzi na stronie. Po klikniÚciu w oknie prawym przyciskiem myszy w celu wy wietlenia kodu ródïowego na ekranie pojawiï siÚ komunikat pokazany na rysunku 2.1. RYSUNEK 2.1. Strona finalizacji zamówienia na witrynie HighTechVacations.net uniemo liwia klikanie prawym przyciskiem myszy Ewa jest oszoïomiona. Czy autorzy witryny HighTechVacations.net naprawdÚ uwa ajÈ, e nie bÚdzie mogïa wy wietliÊ kodu ródïowego HTML? To naprawdÚ niedorzeczne! Przecie to jej przeglÈdarka internetowa wygenerowaïa kod HTML, tak wiÚc nie mo e zostaÊ ukryty. Odrobina kodu JavaScript przechwytujÈcego klikniÚcie prawym przyci- skiem myszy i blokujÈcego menu kontekstowe nie zatrzyma Ewy. Jej kolejnym krokiem jest uruchomienie rozszerzenia przeglÈdarki Firefox o nazwie Firebug. Jak pokazano na rysunku 2.2, to podrÚczne narzÚdzie wy wietla caïy kod JavaScript doïÈczony do bie Ècej strony.
    12. 52 Rozdziaï 2 • Wïamanie RYSUNEK 2.2. Firebug, czyli miÚdzy innymi debuger JavaScript, wy wietla zaciemniony kod na witrynie HighTechVacations.net W tym miejscu wystÈpiï problem — kod JavaScript zostaï zaciemniony. Oznacza to, e usuniÚto z niego wszystkie spacje, a niektóre nazwy zmiennych i funkcji zostaïy celowo skrócone, tak aby maksymalnie utrudniÊ czïowiekowi zrozumienie zasady dziaïania kodu. Ewa wie, e ten kod JavaScript, choÊ trudny do odczytania przez czïowieka, pozostaje do- skonale czytelny dla interpretera JavaScript w jej przeglÈdarce internetowej. Uruchomiïa wiÚc wïasne narzÚdzie o nazwie JavaScript Reverser. Wymieniony program pobiera kod JavaScript (zaciemniony lub nie), a nastÚpnie przetwarza go w taki sam sposób jak inter- preter JavaScript wbudowany w przeglÈdarkÚ internetowÈ. NarzÚdzie wy wietla nazwy wszystkich zmiennych i funkcji, miejsce ich wystÚpowania i czÚstotliwo Ê u ywania, a tak e informacje, które funkcje sÈ wywoïywane przez inne funkcje oraz argumenty stosowane w tych wywoïaniach. Dodatkowo narzÚdzie JavaScript Reverser umieszcza w kodzie spacje, przez co staje siÚ ïatwiejszy do odczytania przez czïowieka. Ewa jest bardzo zaciekawiona tym, co zobaczy w kodzie JavaScript, poniewa programista podjÈï wiele kroków, aby uniemo liwiÊ innym jego poznanie. Na rysunku 2.3 pokazano kod wygenerowany przez narzÚdzie Ewy o nazwie JavaScript Reverser. Ewa szybko odnajduje funkcjÚ o nazwie addEvent(), która doïÈcza nasïuch zdarzeñ Java- Script w sposób niezale ny od u ywanej przeglÈdarki internetowej. Po przejrzeniu wszyst- kich wystÈpieñ wywoïañ addEvent() Ewa zauwa yïa, e funkcja jest u ywana do doïÈczenia funkcji checkCoupon() zdarzenia onblur pola tekstowego, w którym u ytkownik podaje kod kuponu. To zatem jest funkcja, która zostaïa wywoïana, gdy Ewa nacisnÚïa klawisz Tab, opuszczajÈc tym samym pole tekstowe sïu Èce do podania kodu kuponu. Funkcja ta okre- liïa równie , e ciÈg tekstowy FREE nie jest prawidïowym kodem kuponu. Zadaniem funkcji checkCoupon() jest po prostu wyodrÚbnienie kodu podanego przez u ytkownika w polu tekstowym i wywoïanie kolejnej funkcji o nazwie isValidCoupon(). Poni ej przed- stawiono niezaciemniony fragment kodu obejmujÈcy miÚdzy innymi funkcjÚ isValid ´Coupon():
    13. Atak na witrynÚ HighTechVacations.net 53 RYSUNEK 2.3. NarzÚdzie JavaScript Reverser analizuje kod JavaScript znajdujÈcy siÚ na witrynie HighTechVacations.net i pomaga w zrozumieniu jego dziaïania var coupons = ["oSMR0.]1/381Lpnk", "oSMR0._6/381LPNK", "oSWRN3U6/381LPNK", "oSWRN8U2/561O.WKE", "oSWRN2[.0:8/O15TEG", "oSWRN3Y.1:8/O15TEG", "oSWRN4_.258/O15TEG", "tQOWC2U2RY5DkB[X", "tQOWC3U2RY5DkB[X", "tQOWC3UCTX5DkB[X", "tQOWC4UCTX5DkB[X", "uJX6,GzFD", "uJX7,GzFD", "uJX8,GzFD"]; function crypt(s) { var ret = ''; for(var i = 0; i < s.length; i++) { var x = 1; if( (i % 2) == 0) { x += 7;
    14. 54 Rozdziaï 2 • Wïamanie } if( (i % 3) ==0) { x *= 5; } if( (i % 4) == 0) { x -= 9; } ret += String.fromCharCode(s.charCodeAt(i) + x); } return ret; } function isValidCoupon(coupon) { coupon = coupon.toUpperCase(); for(var i = 0; i < coupons.length; i++) { if(crypt(coupon) == coupons[i]) return true; } return false; } Kod kuponu wprowadzony w formularzu przez EwÚ zostaï przekazany funkcji isValid ´Coupon(), w której wszystkie jego znaki zostaïy zmienione na du e, zaszyfrowane, a na- stÚpnie porównane z listÈ zaszyfrowanych warto ci. Ewa spojrzaïa na funkcjÚ crypt() i ro- ze miaïa siÚ. Funkcja szyfrujÈca to po prostu kilka podstawowych operacji matematycznych, które u ywajÈ pozycji znaku w ciÈgu tekstowym w celu obliczenia pewnej warto ci. War- to Ê ta zostaje nastÚpnie dodana do kodu ASCII znaku, a wynikiem jest kod ASCII zaszy- frowanego znaku. Ten algorytm „szyfrowania” jest klasycznym przykïadem trywialnego algorytmu szyfrowania, czyli takiego, którego dziaïanie mo na bardzo ïatwo odwróciÊ i zïamaÊ (na przykïad tak zwana „ wiñska ïacina” jest trywialnym algorytmem szyfrowania w jÚzyku angielskim). Proces szyfrowania i deszyfrowania kodu kuponu jest bardzo prosty i sprowadza siÚ do odjÚcia warto ci kodu ASCII znaku od warto ci zaszyfrowanego znaku. W swoim komputerze Ewa szybko skopiowaïa do nowego pliku HTML utworzonÈ tablicÚ kodów kuponów oraz funkcjÚ crypt(), a nastÚpnie zmodyfikowaïa jÈ, tworzÈc nowÈ funk- cjÚ decrypt(). Dokument HTML opracowany przez EwÚ przedstawia siÚ nastÚpujÈco: <html> <script> var coupons = ["oSMR0.]1/381Lpnk", "oSMR0._6/381LPNK", "oSWRN3U6/381LPNK", "oSWRN8U2/561O.WKE", "oSWRN2[.0:8/O15TEG", "oSWRN3Y.1:8/O15TEG", "oSWRN4_.258/O15TEG", "tQOWC2U2RY5DkB[X", "tQOWC3U2RY5DkB[X",
    15. Atak na witrynÚ HighTechVacations.net 55 "tQOWC3UCTX5DkB[X", "tQOWC4UCTX5DkB[X", "uJX6,GzFD", "uJX7,GzFD", "uJX8,GzFD"]; function decrypt(s) { var ret = ''; for(var i = 0; i < s.length; i++) { var x = 1; if( (i % 2) == 0) { x+=7; } if( (i%3) ==0) { x *=5; } if( (i%4) == 0) { x -=9; } ret += String.fromCharCode(s.charCodeAt(i) - x); } return ret; } for(var i = 0; i < coupons.length; i++) { alert("Coupon " + i + " is " + decrypt(coupons[i])); } </script> </html> Po wy wietleniu w przeglÈdarce internetowej powy szego dokumentu HTML w serii wy- skakujÈcych okien zostaïy podane wszystkie prawidïowe kody kuponów dostÚpne podczas rezerwacji lotów na witrynie HighTechVacations.net. Peïna lista kodów jest nastÚpujÈca: Q PREM1—500.00—OFF Q PREM1—750.00—OFF Q PROMO2—50.00—OFF Q PROMO7—100.00—OFF Q PROMO13—150.00—OFF Q PROMO14—200.00—OFF Q PROMO21—250.00—OFF Q PROMO37—300.00—OFF Q UPGRD1—1ST—CLASS
    16. 56 Rozdziaï 2 • Wïamanie Q UPGRD2—1ST—CLASS Q UPGRD2—BUS—CLASS Q UPGRD3—BUS—CLASS Q VIP1—FREE Q VIP2—FREE Q VIP3—FREE Ewa zanotowaïa wszystkie powy sze kody. Zebrane informacje mo e wykorzystaÊ na wïasny u ytek bÈd sprzedaÊ je w Internecie. Teraz Ewa doskonale wie, e w tym roku nie bÚdzie musiaïa pïaciÊ za podró do Las Vegas. Atak na doïÈczanie danych po stronie klienta Ewa, wciÈ Èdna jeszcze wiÚkszej ilo ci cennych danych, zdecydowaïa siÚ na przeanali- zowanie funkcji wyszukiwania zaimplementowanej na witrynie HighTechVacations.net. Przeprowadziïa wiÚc kolejnÈ operacjÚ wyszukania lotu z Atlanty do Las Vegas. Zwróciïa równie uwagÚ na fakt, e strona z wynikami wyszukiwania nie zostaje od wie ona lub przekierowana na inny adres URL. Staïo siÚ oczywiste, e funkcja wyszukiwania u ywa technologii Ajax w celu komunikacji z usïugÈ sieciowÈ i wykonania pewnego rodzaju dynamicznego pobrania wyników wyszukiwania. Ewa dwukrotnie sprawdziïa i upewniïa siÚ, e caïy jej ruch internetowy nadal odbywa siÚ poprzez proxy HTTP, który jest uru- chomiony na jej komputerze. W ten sposób mo e podglÈdaÊ Èdania i odpowiedzi Ajaksa. Ewa zapisaïa wiÚc kopiÚ caïego przechwyconego dotychczas ruchu poprzez proxy HTTP i ponownie uruchomiïa serwer. NastÚpnie powróciïa do przeglÈdarki internetowej i wyko- naïa wyszukiwanie lotów z miÚdzynarodowego lotniska Hartsfield-Jackson w Atlancie do miÚdzynarodowego lotniska McCarran w Las Vegas na 27 lipca. Po chwili opó nienia otrzymaïa listÚ lotów. Wróciïa wiÚc z powrotem do serwera proxy i rozpoczÚïa analizÚ Èdañ i odpowiedzi Ajaksa, co pokazano na rysunku 2.4. Ewa zauwa yïa, e w witrynie HighTechVacations.net zastosowano format JSON (Java- Script Object Notation) w charakterze warstwy prezentacji danych, co jest rozwiÈzaniem do Ê czÚsto spotykanym w aplikacjach ajaksowych. Szybkie przeszukanie Internetu za pomocÈ Google pomogïo okre liÊ, e ATL i LAS to kody lotnisk w Atlancie oraz Las Vegas. Pozostaïa czÚ Ê tablicy JSON jest ïatwa do rozszyfrowania: 2007-07-27 okre la datÚ, a cyfra 7 wskazuje liczbÚ dni, które Ewa zamierzaïa spÚdziÊ w Las Vegas. Na tym etapie Ewa rozumiaïa ju format Èdania wysïanego do usïugi sieciowej wykonujÈcej wyszukiwanie lotów. Ponadto Ewa wiedziaïa, e port wylotu, port docelowy oraz numer lotu sÈ prawdo- podobnie przekazywane do bazy danych, w której jest wykonywane pewnego rodzaju wyszukiwanie w celu dopasowania lotu. Postanowiïa przeprowadziÊ prostÈ próbÚ i spraw- dziÊ, czy baza danych jest podatna na atak typu SQL Injection. Dlatego te skonfigurowaïa proxy z u yciem reguï typu „znajd i zastÈp”. Kiedy proxy wychwyci warto ci ATL, LAS
    17. Atak na witrynÚ HighTechVacations.net 57 RYSUNEK 2.4. ¿Èdania i odpowiedzi Ajaksa wystÚpujÈce podczas przeprowadzonej przez EwÚ operacji wyszukiwania lotów lub 2007-07-27 w wychodzÈcych Èdaniach HTTP, bÚdzie je przed wysïaniem Èdania do witryny HighTechVacations.net zastÚpowaïo warto ciami ' OR. CiÈg tekstowy ' OR w ka dej warto ci mo e wygenerowaÊ bïÈd skïadni w zapytaniu bazy danych i wy wietliÊ komunikat bïÚdu bazy danych. Szczegóïowy komunikat bïÚdu pochodzÈcy z bazy danych jest najlepszym przyjacielem Ewy! Ewa powraca do przeglÈdarki internetowej i ponownie inicjuje wyszukiwanie lotów z Atlanty do Las Vegas. Czeka… i czeka… i nic siÚ nie dzieje. To dziwne. Ewa sprawdza wiÚc proxy i otrzymuje wynik pokazany na rysunku 2.5. Wysïane przez EwÚ Èdanie z próbÈ ataku SQL Injection zostaïo przekazane do serwera, który z kolei odpowiedziaï eleganckim i szczegóïowym komunikatem bïÚdu. Funkcja JavaScript wywoïania zwrotnego obsïugujÈca odpowied Ajaksa z informacjami o dostÚp- nych lotach najwyra niej zatrzymaïa dane przekazane przez serwer. ½le siÚ staïo, e czytelny komunikat bïÚdu bazy danych zostaï wysïany przez Internet, tak aby Ewa mogïa siÚ z nim zapoznaÊ! Powy szy komunikat bïÚdu ujawnia, e serwer bazy danych to Microsoft SQL Server. Ewa wie, e ma do czynienia z klasycznym przykïadem ataku SQL Injection, ale podejrzewa równie , i po stronie klienta sÈ przetwarzane pewne dane.
    18. 58 Rozdziaï 2 • Wïamanie RYSUNEK 2.5. Próba przeprowadzona przez EwÚ spowodowaïa wygenerowanie bïÚdu ODBC. Kod JavaScript dziaïajÈcy po stronie klienta przechwyciï ten komunikat bïÚdu, tak aby nie zostaï wy wietlony w oknie przeglÈdarki internetowej Serwer WWW witryny HighTechVacations.net pobiera dane lotów zwrócone przez zapytanie do bazy danych, a nastÚpnie bezpo rednio odsyïa je do klienta, który z kolei formatuje dane i wy wietla u ytkownikowi. Kiedy dane sÈ przetwarzane po stronie serwera, wyniki zapyta- nia do bazy danych sÈ zbierane i formatowane po stronie serwera, a nie u klienta. Oznacza to, e dodatkowe dane lub dane sformatowane nieprawidïowo zwrócone z bazy danych sÈ odrzucane przez serwer podczas doïÈczania ich do warstwy prezentacyjnej. Zatem Ewa ich nie pozna. Natomiast podczas przetwarzania danych po stronie klienta, które zwykle jest wykorzystywane w aplikacjach Ajaksa, atakujÈcy — taki jak Ewa — mo e umie ciÊ w za- pytaniu wrogi kod SQL. NastÚpnie napastnik mo e przechwyciÊ peïne wyniki operacji w bazie danych, które sÈ wysyïane do skryptu JavaScript formatujÈcego dane dla u ytkow- nika koñcowego. Ewa uruchamia kolejne narzÚdzie, którym jest edytor HTTP. NarzÚdzie to pozwala jej na utworzenie czystego Èdania HTTP do serwera (zamiast polegania na reguïach „znajd i zastÈp” zdefiniowanych w proxy) oraz wstawienie wrogich danych. Po chwili prób i bïÚ- dów Ewie udaje siÚ odkryÊ, e mo e wstawiÊ wrogie polecenie SQL na poczÈtku parametru
    19. Atak na witrynÚ HighTechVacations.net 59 danych wewnÈtrz formatu JSON jej Èdania. Poniewa atakowany serwer to Microsoft SQL Server, zapytanie jest kierowane do tabeli SYSOBJECTS, jak pokazano na rysunku 2.6. Celem zapytania jest otrzymanie peïnej listy wszystkich tabel zdefiniowanych przez programistów w bazie danych witryny HighTechVacations.net. RYSUNEK 2.6. Za pomocÈ tylko jednego polecenia Ewa otrzymuje listÚ wszystkich tabel zdefiniowanych przez programistów w bazie danych witryny HighTechVacations.net W bazie danych istnieje wiele interesujÈcych EwÚ tabel, miÚdzy innymi Specials, Orders, Billing oraz Users. Ewa postanawia wy wietliÊ wszystkie dane z tabeli Users, co pokazano na rysunku 2.7. Cudownie! Za pomocÈ pojedynczego zapytania Ewie udaïo siÚ pobraÊ informacje o wszyst- kich u ytkownikach. Witryna HighTechVacations.net jest wiÚc podatna na atak typu SQL Injection. Fakt, e autorzy u yli przetwarzania danych po stronie klienta zamiast po stronie serwera, oznacza, i Ewa mo e ukra Ê caïÈ bazÚ danych, korzystajÈc z kilku zapytañ. Nie musi po wiÚcaÊ du ej ilo ci czasu na u ywanie zautomatyzowanego narzÚdzia ataków SQL Injection, takiego jak Absinthe.
    20. 60 Rozdziaï 2 • Wïamanie RYSUNEK 2.7. Przy u yciu pojedynczego zapytania Ewa otrzymaïa wszystkie kolumny ka dego rekordu tabeli Users Ewa jest zadowolona, otrzymaïa bowiem listÚ nazw u ytkowników oraz ich haseï dostÚpu. Warto wspomnieÊ, e u ytkownicy bardzo czÚsto u ywajÈ tych samych nazw i haseï na wielu ró nych witrynach internetowych. Dane uzyskane w wyniku tego ataku Ewa mo e wy- korzystaÊ podczas kolejnych. Udany atak na witrynÚ HighTechVacations.net spowodowaï, e Ewa uzyskaïa mo liwo Ê wïamania siÚ na nieokre lonÈ ilo Ê zupeïnie innych witryn internetowych, niepowiÈzanych z tÈ, której zabezpieczenia wïa nie przeïamaïa. Kto wie, byÊ mo e jeszcze przed witem Ewa bÚdzie mogïa uzyskaÊ dostÚp do czyjego konta ban- kowego, po yczki studenckiej, kredytu hipotecznego lub nawet pracowniczego funduszu emerytalnego. WyodrÚbnienie z wyników zapytania nazw u ytkowników i zaszyfrowanych haseï zabiera chwilÚ. Wprawdzie Ewa nie jest pewna, czy hasïa sÈ zaszyfrowane, ale ka de z nich jest liczbÈ szesnastkowÈ o dïugo ci dokïadnie trzydziestu dwóch znaków. Prawdopo- dobnie jest to warto Ê MD5 wygenerowana na podstawie rzeczywistego hasïa. Kolejnym krokiem Ewy jest uruchomienie narzÚdzia John the Ripper sïu Ècego do ïamania haseï i rozpoczÚcie ïamania listy haseï potrzebnych do rzucenia siÚ na tabele Billing oraz JOIN_ ´Billing_Users. Wymienione tabele zawierajÈ informacje finansowe u ytkowników, takie jak numery kart kredytowych, daty ich wyga niÚcia oraz adresy wszystkich u ytkowni- ków witryny HighTechVacations.net.
    21. Atak na witrynÚ HighTechVacations.net 61 Atak na API Ajax Ewa postanowiïa przyjrzeÊ siÚ bli ej stronom, które dotÈd odwiedziïa. Po sprawdzeniu zauwa yïa, e ka da strona zawiera odwoïanie do skryptu o nazwie common.js. Jednak nie w ka dej stronie internetowej u yto wszystkich funkcji zdefiniowanych w wymienionym skrypcie. Przykïadowo skrypt common.js zawiera definicjÚ funkcji isCouponValid(), mimo e jest u ywana jedynie na stronie finalizujÈcej zamówienie. Ewa uznaïa wiÚc za mo liwe, i inne funkcje znajdujÈce siÚ w skrypcie common.js sÈ u ywane przez strony internetowe, których dotÈd nie odwiedziïa. Przecie mogÈ to byÊ funkcje administracyjne, których u ytkownicy witryny nie powinni poznaÊ! Ewa przejrzaïa wiÚc dokïadnie listÚ zmiennych i funkcji wy wietlonÈ przez narzÚ- dzie JavaScript Reverser i niemal przeoczyïa tÚ wïa ciwÈ. W rodku listy nudnych funkcji Ajaksa znajdowaïo siÚ co ciekawego — funkcja o nazwie AjaxCalls.admin.addUser() (zobacz rodkowÈ czÚ Ê rysunku 2.8). RYSUNEK 2.8. Odniesienie w pliku common.js prowadzi do nieu ywanej funkcji administracyjnej o nazwie AjaxCalls.admin.addUser()
    22. 62 Rozdziaï 2 • Wïamanie Sama nazwa funkcji nie przekazywaïa zbyt wielu informacji. Stanowiïa opakowanie, które wywoïuje usïugÚ sieciowÈ wykonujÈcÈ pozostaïÈ czÚ Ê zadania. Jednak nazwa funkcji wska- zuje, e nale y ona do zbioru funkcji administracyjnych. Ewa szybko przeanalizowaïa wszystkie odpowiedzi przechwycone przez proxy HTTP. W danych nie znalazïa adnego odniesienia do funkcji addUser() na którejkolwiek z dotÈd odwiedzonych stron. Byïa ju bardzo zaintrygowana. Dlaczego definicja tej funkcji znajduje siÚ w skrypcie common.js? Czy to zwykïa pomyïka? Ponownie uruchomiïa edytor Èdañ HTTP. Wprawdzie znaïa adres URL usïugi sieciowej, z którÈ kontaktuje siÚ funkcja addUser(), i wiedziaïa, e podczas wysyïania Èdañ trzeba zastosowaÊ metodÚ POST, ale na tym koniec. Wszystkie pozostaïe usïugi u ywajÈ formatu JSON, tak wiÚc Ewa wysïaïa Èdanie POST do strony /ajaxcalls/addUser.aspx wraz z pustÈ tablicÈ JSON, jak pokazano na rysunku 2.9. RYSUNEK 2.9. Na nieprawidïowo sformatowane Èdanie usïuga sieciowa addUser.aspx odpowiada komunikatem bïÚdu InteresujÈce. Witryna internetowa odpowiedziaïa komunikatem bïÚdu, informujÈcym EwÚ, e w jej Èdaniu zabrakïo niektórych parametrów. Ewa podaïa wiÚc zmy lony parametr i ponownie wysïaïa Èdanie. Wynik drugiej próby zostaï pokazany na rysunku 2.10. Ewa usiadïa na krawÚdzi krzesïa. Jej strzaï na o lep w rzeczywisto ci spowodowaï pewnÈ reakcjÚ. Wprawdzie usïuga sieciowa nie utworzyïa nowego u ytkownika, ale poinformo- waïa o braku trzech parametrów zamiast — jak dotÈd — czterech. Ewa zaczÚïa siÚ zasta- nawiaÊ. Doskonale wiedziaïa, e do usïugi sieciowej musi przekazaÊ cztery parametry w formacie JSON. Mogïa jedynie zgadywaÊ, jakiego rodzaju dane sÈ potrzebne: praw- dopodobnie nazwa konta u ytkownika, prawdziwe imiÚ i nazwisko, hasïo oraz pewien
    23. Atak na witrynÚ HighTechVacations.net 63 Rysunek 2.10. Wymy lony przez EwÚ parametr spowodowaï wygenerowanie przez usïugÚ sieciowÈ nieco innego komunikatu bïÚdu rodzaj opcji. Ewa wiedziaïa, e opcje to najczÚ ciej warto ci typu Boolean, ale nie byïa pewna, jaki format powinien zostaÊ zastosowany. Szybko utworzyïa Èdanie z prawdo- podobnymi warto ciami i wysïaïa je, co pokazano na rysunku 2.11. RYSUNEK 2.11. Usïuga sieciowa odrzuciïa Èdanie utworzone przez EwÚ z powodu nieprawidïowej warto ci debugflag
    24. 64 Rozdziaï 2 • Wïamanie Och tak. WystÈpiïa sytuacja, której Ewa siÚ obawiaïa. Wysyïa parametry w poprawnej for- mie, ale wyglÈda na to, e ostatni z nich — debugflag — jest nieprawidïowy. Opcja zwykle jest wïÈczona bÈd wyïÈczona. Ewa pomy laïa, e wysïanie warto ci true powinno zadziaïaÊ, ale myliïa siÚ. Spróbowaïa zastosowaÊ jeszcze kilka innych warto ci, miÚdzy innymi true umieszczone w cudzysïowie, true napisane du ymi literami, warto Ê false, ale wszystkie próby okazaïy siÚ nieudane. W koñcu podaïa 1 jako warto Ê opcji debugflag. Niektóre jÚzyki programowanie, takie jak C, nie posiadajÈ rodzimych warto ci true i false, ale zamiast nich u ywajÈ odpowiednio 1 oraz 0. Wynik tej operacji zostaï pokazany na rysunku 2.12. RYSUNEK 2.12. Ewa u yïa 1 jako warto ci opcji debugflag, po czym jej Èdanie zostaïo zaakceptowane Ewa nie wierzyïa wïasnym oczom. Zadziaïaïo! Nie byïa do koñca pewna, jakiego rodzaju konto i gdzie zostaïo utworzone, ale na pewno utworzyïa konto o nazwie eve6. NastÚpnie powróciïa do edytora HTTP i przeprowadziïa kolejny atak typu SQL Injection, ponownie pobierajÈc listÚ u ytkowników. W ten sposób przekonaïa siÚ, e na li cie znajduje siÚ nowe konto o nazwie eve6. Nadal jednak nie wiedziaïa, do czego sïu y flaga debugflag oraz gdzie jest przechowywana jej warto Ê. Chocia mogïa bardziej zagïÚbiÊ siÚ w bazÚ danych, poszukujÈc tej opcji, to jednak zdecydowaïa siÚ na utworzenie kolejnego konta. W prze- glÈdarce internetowej otworzyïa kolejnÈ kartÚ i zalogowaïa siÚ do nowo utworzonego konta eve6. Na rysunku 2.13 pokazano witrynÚ HighTechVacations.net po zalogowaniu siÚ do konta eve6. Wszystko byïo zupeïnie inne! Ewa zobaczyïa dane dotyczÈce u ywanej przez niÈ usïugi sieciowej, obciÈ enie serwera oraz informacje dotyczÈce wysïanego Èdania. EwÚ naj- bardziej zainteresowaï pasek menu o nazwie Debug. Chocia zawieraï kilka opcji, Ewa natychmiast skoncentrowaïa siÚ na ïÈczu Return to Admin. Na bie ÈcÈ stronÚ nie dostaïa siÚ
    25. Atak na witrynÚ HighTechVacations.net 65 RYSUNEK 2.13. Witryna HighTechVacations.net prezentuje inny interfejs dla kont u ytkowników debug ze strony administracyjnej, wiÚc zastanawiaïa siÚ, co bÚdzie, gdy spróbuje kliknÈÊ ïÈcze i powróciÊ na stronÚ administracyjnÈ. KliknÚïa wymienione ïÈcze i zobaczyïa stronÚ poka- zanÈ na rysunku 2.14. RYSUNEK 2.14. Obszar administracyjny dostÚpny z poziomu wersji debug witryny HighTechVacations.net
    26. 66 Rozdziaï 2 • Wïamanie Znakomicie! Ewie wydawaïo siÚ, e spowodowaïa wygenerowanie pewnego rodzaju wy- jÈtku. Ponadto poznaïa poïo enie obszaru administracyjnego witryny. CzÚsto u ywaïa narzÚdzi, takich jak Nikto, w celu siïowego odgadniÚcia czÚsto spotykanych katalogów typu admin lub logs, ale na li cie katalogów nie znalazïa /SiteConfig/, wiÚc mogïa pominÈÊ ten portal administracyjny. Dziwne, e w niektórych czÚ ciach witryny internetowej konto eve6 byïo traktowane jak konto nale Èce do administratora lub osoby odpowiedzialnej za za- pewnienie jako ci, podczas gdy w innych uniemo liwiaïo dostÚpu. Wygenerowanie wyjÈtku mogïo nastÈpiÊ wtedy, gdy kod wewnÚtrzny próbowaï pobraÊ informacje o koncie eve6, których tam nie byïo, poniewa w rzeczywisto ci konto eve6 nie jest kontem admini- stratora. Prawdopodobnie programi ci tworzÈcy witrynÚ HighTechVacations.net popeïnili bïÈd, sÈdzÈc, e usïugi administracyjne, takie jak addUser(), bÚdÈ dostÚpne jedynie z poziomu portalu administracyjnego. Z tego powodu proces uwierzytelniania i autoryzacji zachodziï najprawdopodobniej tylko wtedy, gdy u ytkownik próbowaï uzyskaÊ dostÚp do portalu. Poprzez bezpo rednie dziaïanie z addUser() lub innÈ usïugÈ sieciowÈ Ewa mogïa wykonaÊ wszystkie operacje zarezerwowane dla administratorów, ale bez faktycznego wykorzystania portalu administracyjnego. Kradzie w jednÈ noc Ewa ziewnÚïa, wypiïa ostatni ïyk kawy i przeciÈgnÚïa siÚ. Jej wïamanie zakoñczyïo siÚ peïnym sukcesem. Udaïo siÚ zdobyÊ wszystkie kody promocyjne pozwalajÈce na bezpïatnÈ rezerwacjÚ biletów. Zdobyïa listÚ wszystkich nazw u ytkowników oraz zïamaïa ich hasïa dostÚpu. Uzyskaïa kopiÚ danych kart kredytowych ka dego, kto kiedykolwiek rezerwowaï lot za pomocÈ witryny HighTechVacations.net. Utworzyïa sobie tylnÈ furtkÚ w postaci (niestabilnego) konta z uprawnieniami administratora lub osoby odpowiedzialnej za za- pewnienie jako ci produktu. Wreszcie okre liïa login portalu administracyjnego, który prawdopodobnie mo e jej daÊ dostÚp do innych witryn poza HighTechVacations.net. Jednak nadal pozostaïy pewne mo liwo ci, które mogïaby sprawdziÊ, je li miaïaby na to ochotÚ. Przykïadowo zwróciïa uwagÚ, e podczas rezerwacji lotu nastÚpuje wywoïanie serii usïug sieciowych o nazwach startTrans, holdSeat, checkMilesClub, debitACH, pushItinerary, pushConfirmEmail oraz commitTrans. Jaki byïby skutek, gdyby Ewa wywoïaïa wymienione usïugi w innej kolejno ci? Czy nadal zostaïaby obciÈ ona pïatno ciÈ, gdyby pominÚïa funkcjÚ debitACH? Czy mo e przeprowadziÊ atak typu odmowa dostÚpu (ang. DoS — Denial of Service) poprzez rozpoczÚcie tysiÚcy transakcji bazy danych, które nigdy nie zostanÈ sfi- nalizowane? Czy usïugÚ pushConfirmEmail mogïaby wykorzystaÊ do wysïania ogromnej ilo ci spamu lub do phishingu? Mo liwo ci te pozostajÈ do sprawdzenia w innym terminie, teraz zdobyïa listÚ haseï. Najlepszym rozwiÈzaniem bÚdzie sprzeda spamerom zdobytych danych i poszukanie kolejnego celu ataku. Co mo na zrobiÊ za pomocÈ portalu administra- cyjnego? Ewa pomy laïa o poïowicznie gotowym skrypcie w jÚzyku Perl, który napisaïa w celu siïowego ïamania sieciowych formularzy logowania. ByÊ mo e dzisiejszy atak bÚdzie dobrym powodem, aby dokoñczyÊ pracÚ nad tym skryptem?
    27. Kradzie w jednÈ noc 67 Ewa spoglÈda na zegarek, prawie dochodzi dwudziesta pierwsza. W czasie gdy wraca do domu, kto z jej partnerów biznesowych na Ukrainie wïa nie koñczy dïugÈ noc w klubie. Ewa u miecha siÚ do siebie, poniewa wie, e posiada dane, które mogÈ go zainteresowaÊ. Partner zawsze dobrze pïaci, to tylko kwestia negocjacji. Ewa wyïÈcza laptop, pakuje plecak i wyrzuca kubek po kawie do kosza znajdujÈcego siÚ przy wyj ciu. Nie zdÈ yïa przejechaÊ nawet jednego kilometra, gdy na jej miejscu w lokalu siada kolejny klient i równie wyciÈga laptop. NierzucajÈca siÚ w oczy kobieta, która siedziaïa przy stole stojÈcym w rogu lokalu, znika w mroku nocy, nie pamiÚtajÈ jej inni klienci i obsïuga lokalu Caribou. Nikt nie bÚdzie pamiÚtaï Ewy. I taki stan rzeczy bardzo jej odpowiada.

    + Wydawnictwo HelionWydawnictwo Helion, 4 months ago

    custom

    90 views, 0 favs, 0 embeds more stats

    Bezpieczeństwo aplikacji WWW w Twoich rękach!


    more

    More info about this document

    © All Rights Reserved

    Go to text version

    • Total Views 90
      • 90 on SlideShare
      • 0 from embeds
    • Comments 0
    • Favorites 0
    • Downloads 0
    Most viewed embeds

    more

    All embeds

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel
    File a copyright complaint
    Having problems? Go to our helpdesk?