Bezpieczeństwo aplikacji tworzonych w technologii Ajax

27
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 Ajaxdowiesz 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!

description

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!

Transcript of Bezpieczeństwo aplikacji tworzonych w technologii Ajax

Page 1: Bezpieczeństwo aplikacji tworzonych w technologii Ajax

Bezpieczeñstwo aplikacji tworzonych w technologii AjaxAutor: Billy Hoffman, Bryan SullivanT³umaczenie: Robert Górczyñski ISBN: 978-83-246-1693-0Tytu³ orygina³u: Ajax SecurityFormat: 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!

Page 2: Bezpieczeństwo aplikacji tworzonych w technologii Ajax

Spis tre�ci

Przedmowa ............................................................................................ 15

Przedmowa (ta rzeczywista) .................................................................. 17

Podzi�kowania ...................................................................................... 21

O autorach ............................................................................................. 23

Rozdzia� 1. Wprowadzenie do bezpiecze�stwa technologii Ajax ............................. 25Elementarz technologii Ajax ..................................................................................26

Czym jest Ajax? ................................................................................................26Asynchroniczny ................................................................................................28JavaScript ..........................................................................................................30XML ..................................................................................................................34Dynamiczny HTML (DHTML) ....................................................................35

Przechodzenie na architektur� Ajax ......................................................................35Architektura grubego klienta ...........................................................................36Architektura cienkiego klienta .........................................................................37Ajax: z�otow�osa architektura ...........................................................................39Architektura grubego klienta z punktu widzenia bezpieczestwa ................40Architektura cienkiego klienta z punktu widzenia bezpieczestwa ..............41Aplikacje Ajax z punktu widzenia bezpieczestwa .........................................42

Burza luk bezpieczestwa ......................................................................................43Zwi�kszony poziom z�o�ono�ci, przejrzysto�ci i wielko�ci ...........................43Kwestie socjologiczne ......................................................................................46Aplikacja Ajax: cel atrakcyjny i strategiczny ....................................................47

Podsumowanie .......................................................................................................48

Page 3: Bezpieczeństwo aplikacji tworzonych w technologii Ajax

8 Spis tre�ci

Rozdzia� 2. W�amanie .............................................................................................. 49Ewa ..........................................................................................................................49Atak na witryn� HighTechVacations.net ..............................................................50

Z�amanie systemu kuponowego .....................................................................50Atak na do��czanie danych po stronie klienta .................................................56Atak na API Ajax ...............................................................................................61

Kradzie� w jedn� noc .............................................................................................66

Rozdzia� 3. Ataki sieciowe ....................................................................................... 69Podstawowe kategorie ataków ...............................................................................69

Wyliczanie zasobów .........................................................................................70Manipulacje parametrami ................................................................................74

Inne rodzaje ataków ...............................................................................................98Cross-Site Request Forgery (CSRF) ..............................................................98Phishing ............................................................................................................99Denial of Service (DoS) .................................................................................100

Ochrona aplikacji sieciowej przed atakiem wyliczania zasobówlub manipulacji parametrami ............................................................................101

Secure Sockets Layer ......................................................................................102Podsumowanie .....................................................................................................102

Rozdzia� 4. Sposoby ataków na Ajax ..................................................................... 105Zrozumienie sposobów ataków na aplikacje Ajaksa ...........................................105Sposoby ataków na tradycyjne aplikacje sieciowe ..............................................107

Pola danych wej�ciowych formularzy sieciowych .......................................107Mechanizm cookies .......................................................................................109Nag�ówki ........................................................................................................110Ukryte pola formularza sieciowego ..............................................................110Parametry ci�gu tekstowego zapytania ..........................................................111Pliki przekazywane na serwer ........................................................................114

Ataki na tradycyjne aplikacje sieciowe: ogólna ocena .........................................115Rodzaje ataków sieciowych ..................................................................................116

Metody us�ugi sieciowej ................................................................................117Definicje us�ugi sieciowej ..............................................................................118

Ataki na aplikacje Ajaksa ......................................................................................119ród�a ataków na aplikacje Ajaksa .................................................................120Najlepsze z po��czenia obu �wiatów — z punktu widzenia hakera ............122

Prawid�owa weryfikacja danych wej�ciowych ....................................................123Problem z czarn� list� oraz innymi okre�lonymi poprawkami ...................124Leczenie objawów zamiast choroby ..............................................................126Weryfikacja danych wej�ciowych na podstawie bia�ej listy ..........................129Wyra�enia regularne .......................................................................................133Dodatkowe przemy�lenia dotycz�ce weryfikacji danych wej�ciowych .......133

Page 4: Bezpieczeństwo aplikacji tworzonych w technologii Ajax

Spis tre�ci 9

Weryfikacja rozbudowanych danych wej�ciowych u�ytkownika ......................135Weryfikacja kodu znaczników .......................................................................136Weryfikacja plików binarnych .......................................................................138Weryfikacja kodu �ród�owego JavaScript ......................................................138Weryfikacja serializowanych danych .............................................................144

Mit dotycz�cy tre�ci dostarczanej przez u�ytkownika .......................................146Podsumowanie .....................................................................................................147

Rozdzia� 5. Z�o�ono�� kodu Ajaksa ......................................................................... 149Wiele j�zyków i architektur .................................................................................149

Indeksowanie tablicy ......................................................................................150Operacje na ci�gach tekstowych ....................................................................152Komentarze w kodzie ....................................................................................153Problem innej osoby ......................................................................................154

Dziwactwa JavaScript ...........................................................................................156Interpretowany, a nie kompilowany .............................................................156S�aba kontrola typów ......................................................................................157

Asynchroniczno�� ................................................................................................159Problem tak zwanych wy�cigów ...................................................................159Zakleszczenia i problem jedz�cych filozofów ..............................................163Synchronizacja po stronie klienta ..................................................................167

Zachowaj ostro�no�� podczas przyjmowania rad ..................................................168Podsumowanie .....................................................................................................169

Rozdzia� 6. Przejrzysto�� aplikacji Ajaksa ............................................................... 171Czarne pude�ka kontra bia�e pude�ka ..................................................................172

Przyk�ad: witryna MyLocalWeatherForecast.com .......................................174Przyk�ad: witryna MyLocalWeatherForecast.com wykonana

z u�yciem technologii Ajax .........................................................................176Podsumowanie porównania ..........................................................................179

Aplikacja sieciowa jako API .................................................................................180Rodzaje danych i sygnatury metod ...............................................................181

Szczególne b��dy dotycz�ce bezpieczestwa ......................................................182Nieprawid�owe uwierzytelnienie ..................................................................182Nadmierne rozdrobnienie API serwera ........................................................184Przechowywanie stanu sesji w j�zyku JavaScript .........................................187Ujawnianie u�ytkownikom poufnych danych .............................................188Komentarze i dokumentacja w kodzie dzia�aj�cym po stronie klienta .......190Transformacja danych wykonywana po stronie klienta ...............................191

Bezpieczestwo poprzez zaciemnianie ...............................................................195Techniki zaciemniania kodu .........................................................................196

Podsumowanie .....................................................................................................198

Page 5: Bezpieczeństwo aplikacji tworzonych w technologii Ajax

10 Spis tre�ci

Rozdzia� 7. Przechwytywanie aplikacji Ajaksa ....................................................... 199Przechwycenie struktury Ajaksa ..........................................................................200

Przypadkowe nadpisanie funkcji ...................................................................200Nadpisywanie funkcji dla rozrywki lub w celu osi�gni�cia korzy�ci ..........202

Przechwytywanie technologii Ajax na ��danie ...................................................208Przechwytywanie API JSON ..............................................................................213

Przechwycenie obiektu ..................................................................................218Geneza przechwycenia danych JSON ..........................................................218Obrona przed atakiem przechwycenia API ..................................................219

Podsumowanie .....................................................................................................222

Rozdzia� 8. Ataki na magazyny danych po stronie klienta ..................................... 223Ogólny opis systemów magazynowania danych po stronie klienta ..................223

Ogólne informacje dotycz�ce bezpieczestwa magazynu danychpo stronie klienta .........................................................................................225

Mechanizm HTTP cookies .................................................................................226Regu�y kontroli dost�pu do cookie ...............................................................229Pojemno�� cookie HTTP ..............................................................................234Czas �ycia cookie ............................................................................................237Dodatkowe informacje w zakresie bezpieczestwa cookie ..........................238Podsumowanie rozwa�a dotycz�cych u�ywania cookie

jako magazynu danych .................................................................................239Obiekty Flash Local Shared Objects ...................................................................240

Podsumowanie informacji o obiektach Local Shared Object ......................248Magazyn danych DOM .......................................................................................249

Magazyn danych sesji .....................................................................................250Globalny magazyn danych .............................................................................252Diabelskie szczegó�y dotycz�ce magazynu danych DOM ..............................254Bezpieczestwo magazynu danych DOM ...................................................256Podsumowanie informacji dotycz�cych magazynu danych DOM .............257

Magazyn userData w przegl�darce Internet Explorer ........................................258Podsumowanie dotycz�ce bezpieczestwa ...................................................263

Ogólne informacje o atakach i obronie magazynów danych po stronie klienta ......264Ataki typu cross-domain ................................................................................264Ataki cross-directory ......................................................................................265Ataki cross-port ..............................................................................................266

Podsumowanie .....................................................................................................267

Rozdzia� 9. Ajaksowe aplikacje offline ................................................................... 269Ajaksowe aplikacje offline ....................................................................................269Google Gears ........................................................................................................271

Rodzime funkcje bezpieczestwa i niedoci�gni�cia Google Gears .............272Luki bezpieczestwa w komponencie WorkerPool .....................................276Ujawnienie danych LocalServer i ska�enie danych .....................................277Bezpo�redni dost�p do bazy danych Google Gears .....................................281Ataki typu SQL Injection i struktura Google Gears .....................................282Jak niebezpieczny jest atak SQL Injection po stronie klienta? ....................287

Page 6: Bezpieczeństwo aplikacji tworzonych w technologii Ajax

Spis tre�ci 11

Dojo.Offline .........................................................................................................289Bezpieczne przechowywanie klucza .............................................................290Zapewnienie bezpieczestwa danych ...........................................................291Dobre has�a dla dobrych kluczy ....................................................................292

Weryfikacja danych wej�ciowych po stronie klienta sta�a si� istotna ................293Inne podej�cia do aplikacji offline .......................................................................294Podsumowanie .....................................................................................................295

Rozdzia� 10. Kwestie zwi�zane z pochodzeniem ��da� ........................................... 297Roboty, 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 .........................................................300U�ytkownik lub kto� podszywaj�cy si� pod niego .......................................304Wysy�anie ��da HTTP za pomoc� JavaScriptu ..........................................306Ataki JavaScript z u�yciem ��da HTTP

w aplikacjach niestosuj�cych technologii Ajax ...........................................308Kradzie� tre�ci za pomoc� obiektu XMLHttpRequest ................................310Po��czenie ataków XSS i XHR w praktyce ...................................................315

Sposoby obrony ....................................................................................................317Podsumowanie .....................................................................................................319

Rozdzia� 11. Aplikacje mashup oraz agregatory ...................................................... 321Dane 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 .........................323XXI wiek — machina sieciowa sta�a si� dojrza�a ..........................................324Publicznie dost�pne us�ugi sieciowe .............................................................325

Aplikacja mashup: frankenstein Internetu ..........................................................327ChicagoCrime.org .........................................................................................328HousingMaps.com .........................................................................................329Inne aplikacje typu mashup ...........................................................................330

Budowanie aplikacji mashup ...............................................................................331Aplikacje mashup i Ajax .................................................................................332

Pomost, proxy, brama — och nie! .......................................................................334Alternatywy dla proxy Ajax ............................................................................335

Ataki na proxy Ajax ..............................................................................................336Halo, HousingMaps.com? .............................................................................338

Weryfikacja danych wej�ciowych w aplikacji mashup .......................................341Witryny agreguj�ce ...............................................................................................343Zdegradowane bezpieczestwo i zaufanie ..........................................................351Podsumowanie .....................................................................................................354

Page 7: Bezpieczeństwo aplikacji tworzonych w technologii Ajax

12 Spis tre�ci

Rozdzia� 12. Ataki na warstw� prezentacji ................................................................ 357Szczypta prezentacji mo�e zabi� tre�� .................................................................357Ataki na warstw� prezentacyjn� ...........................................................................361Analiza danych w kaskadowych arkuszach stylów .............................................362Sztuczki dotycz�ce wygl�du i dzia�ania ...............................................................365

Zaawansowane sztuczki dotycz�ce wygl�du i dzia�ania ...............................369Osadzona logika programu ..................................................................................372Ataki na kaskadowe arkusze stylów .....................................................................374

Modyfikacja bufora przegl�darki internetowej .............................................376Uniemo�liwianie ataków na warstw� prezentacyjn� .........................................379Podsumowanie .....................................................................................................381

Rozdzia� 13. Robaki JavaScript ................................................................................. 383Opis robaków JavaScript ......................................................................................383

Tradycyjne wirusy komputerowe .................................................................384Robaki JavaScript ...........................................................................................387

Konstrukcja robaka JavaScript .............................................................................389Ograniczenia j�zyka JavaScript ......................................................................391Rozprzestrzenianie si� robaków JavaScript ..................................................392Operacje wykonywane przez robaki JavaScript ............................................392Podsumowanie cz��ci teoretycznej ...............................................................401

Studium przypadku: robak Samy ........................................................................401Jak dzia�a� robak Samy? ..................................................................................402Dzia�alno�� robaka Samy ...............................................................................405Podsumowanie analizy robaka Samy ............................................................407

Studium przypadku: robak Yamanner (JS/Yamanner-A) ..................................408W jaki sposób dzia�a� robak Yamanner? ........................................................409Dzia�alno�� robaka Yamanner .......................................................................412Podsumowanie analizy robaka Yamanner ....................................................413

Lekcje wyci�gni�te po analizie rzeczywistych przyk�adów robaków JavaScript ......416Podsumowanie .....................................................................................................417

Rozdzia� 14. Testowanie aplikacji Ajaksa ................................................................. 419Czarna magia ........................................................................................................420Nie ka�dy do przegl�dania Internetu u�ywa przegl�darki internetowej ...........424

Paragraf 22 ......................................................................................................427Narz�dzia s�u��ce do sprawdzania bezpieczestwa,

czyli dlaczego prawdziwe �ycie nie przypomina Hollywood? ........................428Katalogowanie witryny ..................................................................................429Wykrywanie luk bezpieczestwa ...................................................................431Narz�dzie analizy: Sprajax .............................................................................433Narz�dzie analizy: Paros Proxy .....................................................................435Narz�dzie analizy: LAPSE

(Lightweight Analysis for Program Security in Eclipse) ...........................437Narz�dzie analizy: WebInspect™ ..................................................................439

Dodatkowe przemy�lenia dotycz�ce testów pod k�tem bezpieczestwa ..........440

Page 8: Bezpieczeństwo aplikacji tworzonych w technologii Ajax

Spis tre�ci 13

Rozdzia� 15. Analiza struktur Ajaksa ........................................................................ 443ASP.NET ..............................................................................................................443

ASP.NET AJAX (dawniej Atlas) ...................................................................444ScriptService ...................................................................................................448Ostateczna rozgrywka bezpieczestwa: UpdatePanel kontra ScriptService ....... 449ASP.NET AJAX i WSDL ...............................................................................450ValidateRequest ..............................................................................................454ViewStateUserKey .........................................................................................455Konfiguracja i usuwanie b��dów w ASP.NET .............................................456

PHP .......................................................................................................................457Sajax ................................................................................................................458Struktura Sajax i ataki Cross-Site Request Forgery .....................................459

Java EE ..................................................................................................................461Direct Web Remoting (DWR) ......................................................................461

Struktury JavaScript .............................................................................................464Ostrze�enie dotycz�ce kodu dzia�aj�cego po stronie klienta .......................464Prototype ........................................................................................................465

Podsumowanie .....................................................................................................467

Dodatek A Kod ród�owy robaka Samy ................................................................. 469

Dodatek B Kod ród�owy robaka Yamanner .......................................................... 477

Skorowidz ............................................................................................ 483

Page 9: Bezpieczeństwo aplikacji tworzonych w technologii Ajax

2 W�amanie

Mit: Hakerzy rzadko atakuj� przedsibiorstwa,wykorzystuj�c do tego celu ich aplikacje wykonane w Ajaksie.

Poznaj bezpo�redniego �wiadka obalaj�cego ten mit, czyli Ew�.

EwaNie 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�awi�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 ulicyi Piedmont, czyli w samym modnym centrum Atlanty. Mo�na wi�c znale�� tutaj znaczniewi�cej interesuj�cych rzeczy do podziwiania ni� obserwacja nosz�cej okulary kobiety, którau�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�asi� w danym miejscu o okre�lonej godzinie. Dokonany przez ni� zakup by� wystarczaj�cyna 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�cw samochodzie zaparkowanym w pobli�u lokalu. Jednak widok kobiety w volkswageniejetta 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 blondw�osach w czarnej podkoszulce. Ch�opak pisa� co� na przeci�tnym laptopie marki Dell,

Page 10: Bezpieczeństwo aplikacji tworzonych w technologii Ajax

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, podobniejak 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 osobnikw 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.netTego dnia jej celem by�a witryna internetowa HighTechVacations.net1 nale��ca do biurapodró�y. O witrynie dowiedzia�a si� z artyku�u zamieszczonego w Ajaxianie, popularnejwitrynie 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 bezpieczestwa 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 tylenowa, pos�uguj�cy si� ni� programi�ci nadal pope�niaj� podstawowe b��dy i wydaje si�, �enikt nie jest w stanie zaproponowa� dobrych rozwi�za w zakresie bezpieczestwa tegorodzaju 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�nepotencjalnych 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 proxyHTTP 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 formularzuprzeznaczonym do wys�ania i rozpocz��a proces rezerwacji biletów na lot z Atlanty do LasVegas. Zwróci�a uwag�, �e na witrynie zosta� zastosowany protokó� SSL. Przeanalizowa�awi�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 witrynyinternetowej, ale równie� sygna� zaanga�owania niechlujnych administratorów lub dzia�uIT wynikaj�cy prawdopodobnie z pogoni za pieni�dzem, a dla Ewy to bardzo dobry znak.

Z�amanie systemu kuponowegoEwa kontynuowa�a korzystanie z witryny, a po dotarciu do fazy finalizacji zamówieniazauwa�y�a co� interesuj�cego — pole Coupon Code w formularzu zamówienia. Wpisa�a wi�cs�owo FREE i nacisn��a klawisz Tab, przechodz�c tym samym do kolejnego pola formularza.

1 Witryna testowa autorów ksi��ki — przyp. red.

Page 11: Bezpieczeństwo aplikacji tworzonych w technologii Ajax

Atak na witryn� HighTechVacations.net 51

Przegl�darka internetowa natychmiast wy�wietli�a komunikat b��du informuj�cy Ew�, �epodany kod kuponu jest nieprawid�owy. To dziwne. W jaki sposób witryna internetowatak szybko okre�li�a, �e podany kod kuponu jest nieprawid�owy? Prawdopodobnie w celuwys�ania ��dania do serwera zosta�a u�yta technologia Ajax. Ewa zdecydowa�a si� naprzejrzenie kodu �ród�owego, aby zorientowa� si�, co naprawd� zachodzi na stronie. Poklikni�ciu w oknie prawym przyciskiem myszy w celu wy�wietlenia kodu �ród�owego naekranie pojawi� si� komunikat pokazany na rysunku 2.1.

RYSUNEK 2.1. Strona finalizacji zamówienia na witrynie HighTechVacations.net uniemo�liwia klikanie prawymprzyciskiem myszy

Ewa jest oszo�omiona. Czy autorzy witryny HighTechVacations.net naprawd� uwa�aj�, �enie 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�ezosta� ukryty. Odrobina kodu JavaScript przechwytuj�cego klikni�cie prawym przyci-skiem myszy i blokuj�cego menu kontekstowe nie zatrzyma Ewy. Jej kolejnym krokiemjest uruchomienie rozszerzenia przegl�darki Firefox o nazwie Firebug. Jak pokazano narysunku 2.2, to podr�czne narz�dzie wy�wietla ca�y kod JavaScript do��czony do bie��cejstrony.

Page 12: Bezpieczeństwo aplikacji tworzonych w technologii Ajax

52 Rozdzia� 2 • W�amanie

RYSUNEK 2.2. Firebug, czyli mi�dzy innymi debuger JavaScript, wy�wietla zaciemniony kod na witrynieHighTechVacations.net

W tym miejscu wyst�pi� problem — kod JavaScript zosta� zaciemniony. Oznacza to, �eusuni�to z niego wszystkie spacje, a niektóre nazwy zmiennych i funkcji zosta�y celowoskró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�awi�c w�asne narz�dzie o nazwie JavaScript Reverser. Wymieniony program pobiera kodJavaScript (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 nazwywszystkich zmiennych i funkcji, miejsce ich wyst�powania i cz�stotliwo�� u�ywania, a tak�einformacje, które funkcje s� wywo�ywane przez inne funkcje oraz argumenty stosowanew 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 zaciekawionatym, co zobaczy w kodzie JavaScript, poniewa� programista podj�� wiele kroków, abyuniemo�liwi� innym jego poznanie. Na rysunku 2.3 pokazano kod wygenerowany przeznarz�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��czeniafunkcji checkCoupon() zdarzenia onblur pola tekstowego, w którym u�ytkownik podaje kodkuponu. 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. Zadaniemfunkcji checkCoupon() jest po prostu wyodr�bnienie kodu podanego przez u�ytkownikaw 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():

Page 13: Bezpieczeństwo aplikacji tworzonych w technologii Ajax

Atak na witryn� HighTechVacations.net 53

RYSUNEK 2.3. Narz�dzie JavaScript Reverser analizuje kod JavaScript znajduj�cy si� na witrynieHighTechVacations.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;

Page 14: Bezpieczeństwo aplikacji tworzonych w technologii Ajax

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 trywialnegoalgorytmu szyfrowania, czyli takiego, którego dzia�anie mo�na bardzo �atwo odwróci�i z�ama� (na przyk�ad tak zwana „�wiska �acina” jest trywialnym algorytmem szyfrowaniaw j�zyku angielskim). Proces szyfrowania i deszyfrowania kodu kuponu jest bardzo prostyi 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",

Page 15: Bezpieczeństwo aplikacji tworzonych w technologii Ajax

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 podczasrezerwacji lotów na witrynie HighTechVacations.net. Pe�na lista kodów jest nast�puj�ca:

� PREM1—500.00—OFF

� PREM1—750.00—OFF

� PROMO2—50.00—OFF

� PROMO7—100.00—OFF

� PROMO13—150.00—OFF

� PROMO14—200.00—OFF

� PROMO21—250.00—OFF

� PROMO37—300.00—OFF

� UPGRD1—1ST—CLASS

Page 16: Bezpieczeństwo aplikacji tworzonych w technologii Ajax

56 Rozdzia� 2 • W�amanie

� UPGRD2—1ST—CLASS

� UPGRD2—BUS—CLASS

� UPGRD3—BUS—CLASS

� VIP1—FREE

� VIP2—FREE

� VIP3—FREE

Ewa zanotowa�a wszystkie powy�sze kody. Zebrane informacje mo�e wykorzysta� naw�asny u�ytek b�d� sprzeda� je w Internecie. Teraz Ewa doskonale wie, �e w tym roku nieb�dzie musia�a p�aci� za podró� do Las Vegas.

Atak na do��czanie danych po stronie klientaEwa, 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�arównie� uwag� na fakt, �e strona z wynikami wyszukiwania nie zostaje od�wie�ona lubprzekierowana na inny adres URL. Sta�o si� oczywiste, �e funkcja wyszukiwania u�ywatechnologii Ajax w celu komunikacji z us�ug� sieciow� i wykonania pewnego rodzajudynamicznego pobrania wyników wyszukiwania. Ewa dwukrotnie sprawdzi�a i upewni�asi�, �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 HTTPi 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 domi�dzynarodowego lotniska McCarran w Las Vegas na 27 lipca. Po chwili opó�nieniaotrzyma�a list� lotów. Wróci�a wi�c z powrotem do serwera proxy i rozpocz��a analiz� ��dai 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�zaniemdo�� cz�sto spotykanym w aplikacjach ajaksowych. Szybkie przeszukanie Internetu zapomoc� Google pomog�o okre�li�, �e ATL i LAS to kody lotnisk w Atlancie oraz LasVegas. 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 Ewarozumia�a ju� format ��dania wys�anego do us�ugi sieciowej wykonuj�cej wyszukiwanielotó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 rodzajuwyszukiwanie 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�aproxy z u�yciem regu� typu „znajd� i zast�p”. Kiedy proxy wychwyci warto�ci ATL, LAS

Page 17: Bezpieczeństwo aplikacji tworzonych w technologii Ajax

Atak na witryn� HighTechVacations.net 57

RYSUNEK 2.4. ��dania i odpowiedzi Ajaksa wyst�puj�ce podczas przeprowadzonej przez Ew� operacjiwyszukiwania lotów

lub 2007-07-27 w wychodz�cych ��daniach HTTP, b�dzie je przed wys�aniem ��daniado witryny HighTechVacations.net zast�powa�o warto�ciami ' OR. Ci�g tekstowy ' ORw 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 danychjest najlepszym przyjacielem Ewy!

Ewa powraca do przegl�darki internetowej i ponownie inicjuje wyszukiwanie lotów z Atlantydo Las Vegas. Czeka… i czeka… i nic si� nie dzieje. To dziwne. Ewa sprawdza wi�c proxyi 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. FunkcjaJavaScript 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 czytelnykomunikat b��du bazy danych zosta� wys�any przez Internet, tak aby Ewa mog�a si� z nimzapozna�! Powy�szy komunikat b��du ujawnia, �e serwer bazy danych to Microsoft SQLServer. Ewa wie, �e ma do czynienia z klasycznym przyk�adem ataku SQL Injection, alepodejrzewa równie�, i� po stronie klienta s� przetwarzane pewne dane.

Page 18: Bezpieczeństwo aplikacji tworzonych w technologii Ajax

58 Rozdzia� 2 • W�amanie

RYSUNEK 2.5. Próba przeprowadzona przez Ew� spowodowa�a wygenerowanie b��du ODBC. Kod JavaScriptdzia�aj�cy po stronie klienta przechwyci� ten komunikat b��du, tak aby nie zosta� wy�wietlony w oknieprzegl�darki internetowej

Serwer WWW witryny HighTechVacations.net pobiera dane lotów zwrócone przez zapytaniedo bazy danych, a nast�pnie bezpo�rednio odsy�a je do klienta, który z kolei formatuje danei 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. Oznaczato, �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 ichnie pozna. Natomiast podczas przetwarzania danych po stronie klienta, które zwykle jestwykorzystywane 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 operacjiw bazie danych, które s� wysy�ane do skryptu JavaScript formatuj�cego dane dla u�ytkow-nika kocowego.

Ewa uruchamia kolejne narz�dzie, którym jest edytor HTTP. Narz�dzie to pozwala jej nautworzenie 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

Page 19: Bezpieczeństwo aplikacji tworzonych w technologii Ajax

Atak na witryn� HighTechVacations.net 59

danych wewn�trz formatu JSON jej ��dania. Poniewa� atakowany serwer to MicrosoftSQL Server, zapytanie jest kierowane do tabeli SYSOBJECTS, jak pokazano na rysunku 2.6.Celem zapytania jest otrzymanie pe�nej listy wszystkich tabel zdefiniowanych przezprogramistów w bazie danych witryny HighTechVacations.net.

RYSUNEK 2.6. Za pomoc� tylko jednego polecenia Ewa otrzymuje list� wszystkich tabel zdefiniowanych przezprogramistó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 pokazanona 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 SQLInjection. Fakt, �e autorzy u�yli przetwarzania danych po stronie klienta zamiast po stronieserwera, oznacza, i� Ewa mo�e ukra�� ca�� baz� danych, korzystaj�c z kilku zapyta. Niemusi po�wi�ca� du�ej ilo�ci czasu na u�ywanie zautomatyzowanego narz�dzia ataków SQLInjection, takiego jak Absinthe.

Page 20: Bezpieczeństwo aplikacji tworzonych w technologii Ajax

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 wieluró�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 witryninternetowych, 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 funduszuemerytalnego. Wyodr�bnienie z wyników zapytania nazw u�ytkowników i zaszyfrowanychhase� zabiera chwil�. Wprawdzie Ewa nie jest pewna, czy has�a s� zaszyfrowane, ale ka�dez 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. Kolejnymkrokiem 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, takiejak numery kart kredytowych, daty ich wyga�ni�cia oraz adresy wszystkich u�ytkowni-ków witryny HighTechVacations.net.

Page 21: Bezpieczeństwo aplikacji tworzonych w technologii Ajax

Atak na witryn� HighTechVacations.net 61

Atak na API AjaxEwa postanowi�a przyjrze� si� bli�ej stronom, które dot�d odwiedzi�a. Po sprawdzeniuzauwa�y�a, �e ka�da strona zawiera odwo�anie do skryptu o nazwie common.js. Jednak niew ka�dej stronie internetowej u�yto wszystkich funkcji zdefiniowanych w wymienionymskrypcie. 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 powinnipozna�! 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 funkcjiAjaksa 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 nazwieAjaxCalls.admin.addUser()

Page 22: Bezpieczeństwo aplikacji tworzonych w technologii Ajax

62 Rozdzia� 2 • W�amanie

Sama nazwa funkcji nie przekazywa�a zbyt wielu informacji. Stanowi�a opakowanie, którewywo�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�awszystkie odpowiedzi przechwycone przez proxy HTTP. W danych nie znalaz�a �adnegoodniesienia 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 trzebazastosowa� metod� POST, ale na tym koniec. Wszystkie pozosta�e us�ugi u�ywaj� formatuJSON, 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 parametri 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 parametryw 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

Page 23: Bezpieczeństwo aplikacji tworzonych w technologii Ajax

Atak na witryn� HighTechVacations.net 63

Rysunek 2.10. Wymy�lony przez Ew� parametr spowodowa� wygenerowanie przez us�ug� sieciow� nieco innegokomunikatu b��du

rodzaj opcji. Ewa wiedzia�a, �e opcje to najcz��ciej warto�ci typu Boolean, ale nie by�apewna, 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

Page 24: Bezpieczeństwo aplikacji tworzonych w technologii Ajax

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 zwyklejest 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 trueumieszczone w cudzys�owie, true napisane du�ymi literami, warto�� false, ale wszystkiepróby okaza�y si� nieudane. W kocu poda�a 1 jako warto�� opcji debugflag. Niektóre j�zykiprogramowanie, takie jak C, nie posiadaj� rodzimych warto�ci true i false, ale zamiast nichu�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 koca pewna, jakiego rodzajukonto i gdzie zosta�o utworzone, ale na pewno utworzy�a konto o nazwie eve6. Nast�pniepowróci�a do edytora HTTP i przeprowadzi�a kolejny atak typu SQL Injection, ponowniepobieraj�c list� u�ytkowników. W ten sposób przekona�a si�, �e na li�cie znajduje si� nowekonto o nazwie eve6. Nadal jednak nie wiedzia�a, do czego s�u�y flaga debugflag oraz gdziejest 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 kontaeve6. Na rysunku 2.13 pokazano witryn� HighTechVacations.net po zalogowaniu si� dokonta eve6.

Wszystko by�o zupe�nie inne! Ewa zobaczy�a dane dotycz�ce u�ywanej przez ni� us�ugisieciowej, obci��enie serwera oraz informacje dotycz�ce wys�anego ��dania. Ew� naj-bardziej zainteresowa� pasek menu o nazwie Debug. Chocia� zawiera� kilka opcji, Ewanatychmiast skoncentrowa�a si� na ��czu Return to Admin. Na bie��c� stron� nie dosta�a si�

Page 25: Bezpieczeństwo aplikacji tworzonych w technologii Ajax

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�� ��czei 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

Page 26: Bezpieczeństwo aplikacji tworzonych w technologii Ajax

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�anarz�dzi, takich jak Nikto, w celu si�owego odgadni�cia cz�sto spotykanych katalogów typuadmin lub logs, ale na li�cie katalogów nie znalaz�a /SiteConfig/, wi�c mog�a pomin�� tenportal administracyjny. Dziwne, �e w niektórych cz��ciach witryny internetowej konto eve6by�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�tkumog�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�nilib��d, s�dz�c, �e us�ugi administracyjne, takie jak addUser(), b�d� dost�pne jedynie z poziomuportalu 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 wykorzystaniaportalu administracyjnego.

Kradzie� w jedn� nocEwa ziewn��a, wypi�a ostatni �yk kawy i przeci�gn��a si�. Jej w�amanie zakoczy�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�adost�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óryprawdopodobnie 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 toochot�. Przyk�adowo zwróci�a uwag�, �e podczas rezerwacji lotu nast�puje wywo�anie seriius�ug sieciowych o nazwach startTrans, holdSeat, checkMilesClub, debitACH, pushItinerary,pushConfirmEmail oraz commitTrans. Jaki by�by skutek, gdyby Ewa wywo�a�a wymienioneus�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 ofService) 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 ogromnejilo�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 zdobytychdanych 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�aw celu si�owego �amania sieciowych formularzy logowania. By� mo�e dzisiejszy atak b�dziedobrym powodem, aby dokoczy� prac� nad tym skryptem?

Page 27: Bezpieczeństwo aplikacji tworzonych w technologii Ajax

Kradzie� w jedn� noc 67

Ewa spogl�da na zegarek, prawie dochodzi dwudziesta pierwsza. W czasie gdy wraca dodomu, kto� z jej partnerów biznesowych na Ukrainie w�a�nie koczy 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� przywyj�ciu. Nie zd��y�a przejecha� nawet jednego kilometra, gdy na jej miejscu w lokalu siadakolejny klient i równie� wyci�ga laptop. Nierzucaj�ca si� w oczy kobieta, która siedzia�aprzy stole stoj�cym w rogu lokalu, znika w mroku nocy, nie pami�taj� jej inni kliencii obs�uga lokalu Caribou.

Nikt nie b�dzie pami�ta� Ewy.

I taki stan rzeczy bardzo jej odpowiada.