Google to całkiem fajna wyszukiwarka. Można tam szukać stronek, prezentów na dzień matki, pomysłów co ugotować z resztek leżących w lodówce, danych personalnych, wycieków baz, tajnych dokumentów i systemów, które nie powinny być wystawione na świat. Czekaj. Co?!
Jak działają wyszukiwarki?
Każdy z nas wie, jak z perspektywy użytkownika wygląda używanie wyszukiwarki. Wpisujesz wyszukiwaną frazę i magicznie wyszukiwarka zwraca Ci rekordy, które najprawdopodobniej w kilku pierwszych wynikach zawierają to, czego szukasz. Tylko skąd wyszukiwarka wie co zwrócić i skąd w ogóle ma te informacje?
Crawling
Crawling to proces, w którym boty wyszukiwarek internetowych (zwane też pająkami albo robotami) systematycznie odkrywają publicznie dostępne strony. Jeżeli na danej stronie znajdują się odnośniki do innych stron lub podstron, to następnie te „pajączki” przechodzą i na nie. Proces ten praktycznie nigdy się nie zatrzymuje.
Silnik wyszukiwarki tworzy sobie swojego rodzaju sieć odnośników i stron nadając każdemu wynikowi różną wagę, w zależności jak często dany adres jest linkowany na różnych stronach, oraz jakość i częstotliwość aktualizacji zawartości strony. To też często wpływa na to, jak często robocik będzie odwiedzał.
Na tym etapie często też będzie pobierana zawartość strony, tak jakby przeglądał ją użytkownik z poziomu przeglądarki.
Indeksowanie
Indeksowanie polega na zapisaniu i organizowaniu danych zebranych w procesie crawlingu.
Wyszukiwarka analizuje zawartość stron, w tym tekst, obrazki, czy filmiki i zapisuje kluczowe informacje i metadane w bardzo dużej bazie danych, określanej po prostu jako indeks.
Proces ten wymaga bardzo dużo ilości mocy obliczeniowej. Wyobrażasz sobie odpalenie w przeglądarce miliona zakładek na raz?
Ranking
Na tym ostatnim etapie, wyszukiwarka przy użyciu swoich tajemniczych, magicznych i ultra skomplikowanych algorytmów (obstawiam, że nikt do końca nie wie jak one działają), ustala jakie i w jakiej kolejności powinny się pojawiać wyniki w zależności od wyszukiwanych słów kluczowych.
Szukanie jak pros – Google Dorks
Na pewno nie raz zdarzyło Ci się, że wyniki wyszukiwania były niskiej jakości, nie do końca zwracały tego czego szukasz albo trzeba było przeklikać przez kilka stron wyników aby znaleźć to co Cię interesuje. W dobie AI i możliwości łatwego generowania contentu na stronach, coraz częściej mierzymy się z tym problemem.
Czy możemy sobie jakoś pomóc i poinstruować przeglądarkę aby dała nam konkretniejsze wyniki albo odfiltrować to, czego nie chcemy? No pewnie, że tak! A do tego wcale nie jest to zbytnio skomplikowane.
Google Hacking
Tak potocznie określana jest ta metoda, ale jest to w pełni legalne i etyczne. Najlepiej będzie to zobrazować na konkretnych i popularnych przykładach. Wystarczy, że wprowadzisz poniższe operatory w polu wyszukiwarki. Poniższe przykłady są dla wyszukiwarki Google, ale większość z nich będzie działać też w innych wyszukiwarkach i warto też czasami skorzystać z alternatyw Googla, ponieważ możemy często otrzymać inne wyniki, których gdzie indziej może brakować.
intitle: wyszukuje stron po konkretnym słowie lub zdaniu, które jest w tytule strony
inurl: sprawdza czy adres URL strony zawiera dany tekst
filetype: szuka konkretnego rozszerzenia pliku, np. PDF, DOC, XLS, itp
site: zawęża wyniki szukania jedynie do konkretnej strony lub domeny
cache: zwraca wynik z pamięci cache google, jeżeli jest jakiś (często używane do podglądnięcia usuniętej strony, coś jak webarchive)
intext: szuka wpisanej frazy jedynie w zawartości strony
Oczywiście operatorów jest znacznie więcej, można je też łączyć ze sobą dla lepszego efektu. Tutaj znajdziesz cheatsheet opisujący więcej.
Jak to wygląda w praktyce?
Jakiś czas temu wpadłeś/aś na fajny przepis na sernik u aniagotuje.pl, ale nie możesz sobie przypomnieć, który to był przepis. Spróbujmy zawęzić wyniki, bo wpisanie w wyszukiwarce 'aniagotuje sernik’ zwraca nam 1,790,000 wyników i trochę ciężko coś znaleźć.
Znamy adres strony, więc spróbujmy wpisać ’site:aniagotuje.pl sernik’. Jak z ilością wyników? 4,790 – całkiem nieźle. Zawęziliśmy poszukiwania jedynie do strony Ani. Pokombinujmy jeszcze.
Wiemy, że zazwyczaj nazwa potrawy lub wypieku jest w tytule strony. Co się stanie jak wpiszemy ’site:aniagotuje.pl intitle:sernik’? 114 wyników. Najs, ale nadal dużo tych serników i zduplikowanych wyników (hehe, ale rymuję).
Przypomnieliśmy sobie, że w tamtym przepisie było coś o kokosie. Składniki są zawsze podane w zawartości strony, więc tam poszukajmy coś na ten temat. ’site:aniagotuje.pl intitle:sernik intext:kokos’. Rezultat? 5 wyników! Teraz spokojnie możemy już szukać ręcznie.
Co to ma wspólnego z (nie)bezpieczeństwem?
Właśnie. Dobrze, że o tym przypominasz, bo się już zastanawiałem co słodkiego zjem po 22. :>
Dla bezpieczników (pot. określenie ludzi z branży) i OSINT-owców (ci znowu zajmują się szukaniem różnych publicznych danych) wyszukiwarki często mogą zaindeksować coś, co nie powinno się tam znaleźć lub ktoś próbował coś ukryć. Co to może być? A na przykład strony logowania do paneli administracyjnych na różnych polskich witrynach – ’intitle:”login” „admin” inurl:”pl”’ (cudzysłów instruuje wyszukiwarkę, aby szukać dokładnie wpisaną frazę, bez odmian). Może gdzieś też pojawi się plik excela z peselami? – ’filetype:xls „pesel”’. Czy jakieś hasła udostępnione przez źle skonfigurowany serwer? – ’intitle:”index of” „hasło”’
Ponownie, przykładów jest znacznie więcej. Nie muszą to być pliki i dane, ale możemy też natrafić na niezabezpieczone lub podatne aplikacje. Na dole artykułu znajdziesz dodatkowe materiały.
Głębokie ukrycie
To zasługuje na swój oddzielny akapit. Czym jest głębokie ukrycie? Zarzucę cytatem z Wikipedii – jest to praktyka ochrony danych komputerowych, polegająca na umieszczeniu ich w nieprzewidywalnej i trudnej do odgadnięcia dla przeciętnego użytkownika ścieżce dostępu, zazwyczaj połączone z ukryciem faktu zapisania danych w tejże lokalizacji. Czyli mamy jakieś dane, które chcemy udostępnić i uważamy, że jeżeli tylko my wiemy, gdzie te dane się znajdują, to nikt inny ich nie znajdzie, czyli są bezpiecznie schowane. Chciałoby się rzecz – no chyba nie! Przypadkowe udostępnienie komuś linku to jedno, ale co jeżeli ten „ukryty” adres zostanie lub był kiedyś zaindeksowany przez wyszukiwarkę? W zależności od danych, które się tam znajdują, możemy mieć mniejsze lub większe problemy, tak jak przykład firmy poniżej.
Co robić, jak żyć?
- Zakładaj, że wszystko dostępne z poziomu internetu jest publicznie dostępne i zostanie tam na zawsze
- Możesz „poprosić” wyszukiwarki o nie-indeksowanie Twojej witryny, ale nie masz pewności, czy się do tego zastosują
- Monitoruj co wyszukiwarka wie na temat Twojej strony. Możesz robić to cyklicznie i wyniki zawężać do konkretnych dat, np. „pokaż tylko nowe wyniki z ostatnich 30 dni – dork ’date:30′
- Jeżeli coś nie musi być dostępne z Internetu, to nie udostępniaj tego, a jeżeli potrzebny jest zdalny dostęp, to zrób to w bezpieczny i kontrolowany sposób. Nie idź na łatwiznę!
Przypadkowy wyciek danych na przykładzie polskiej firmy IT
Jakiś czas temu testowałem różne dorki i w wyszukiwarce wpisałem ’intitle:”Index of /baza” site:pl’. Tym sposobem chciałem wyszukać udostępnione katalogi Apache/NGINX z folderem „baza” na stronach z domeną „pl”. Często się zdarza, że na serwerach webowych znajdują się różne pliki, które normalnie nie były widoczne, ale przez błąd administratora (np. usunięcie głównego pliku index.html) zamiast pustej strony, zwracana jest cała lista katalogów i plików znajdujących się na serwerze. Co tam można najczęściej znaleźć? Wszystko – od kopii zapasowych witryny, przesyłanych plików, baz klientów i wiele więcej.
Nie liczyłem, że coś znajdę, ale co tym razem zwrócił mi Google?
Wygląda już ciekawie, ale nie ma co się jeszcze zbytnio ekscytować. Zawsze to mogą być puste foldery lub niedziałające pliki. Przeglądamy dalej.
Teraz już się zrobiło cieplej. Uruchomiłem lokalnie własnego Crawlera aby zebrać wszystkie linki i określić skalę wraz z zagrożonymi danymi i w tym czasie zabrałem się za pisanie maila na adresy biura firmy z raportem znaleziska
Skrócony raport:
- Strona została zaindeksowana 10 lat temu i nie wiadomo jak długo dane są widoczne w Google
- Nie wiadomo czy administrator posiada logi aby ocenić ile osób mogło mieć dostęp do plików
- Pliki zawierały dokumentację wyłącznie do użytku wewnętrznego, w tym hasła dostępowe do różnych serwisów
- W plikach były dane wszystkich placówek i ich pracowników (imię + nazwisko) wraz z wnioskami urlopowymi
- Dane kontrahentów
- Firma zajmuje się outsourcingiem IT i serwisem więc posiadało bardzo dużo dokumentów przeznaczonych jedynie dla serwisantów po podpisanym NDA z producentem. Dokumentacja serwisowa terminali zawierała kody przeznaczone do zmian konfiguracji (potwierdzone u znajomego, że w 115% przypadków domyślne kody nie są zmieniane, tak aby inni serwisanci nie mieli problemów z dostępem)
- Firma obsługuje bardzo duże sklepy i banki w zakresie IT
- Na serwerze było dostępne ponad 2000 plików (najwięcej instrukcji serwisowych)
Po zgłoszeniu incydentu wraz z zaleceniami dla administratora (w tym instrukcja zgłoszenia do UODO), dostęp do danych został zablokowany po godzinie. Niestety nie otrzymałem wiadomości zwrotnej, a więc nie wiem jakie jeszcze kroki podjęła firma.
Dodatkowe materiały
- Google Dorks – cheatsheet – https://github.com/chr3st5an/Google-Dorking
- Kolejny cheatsheet z przykładami – https://www.stationx.net/google-dorks-cheat-sheet/
- Google Hacking DB (baza dorków dla bezpieczników) – https://www.exploit-db.com/google-hacking-database
- Darmowy Crawler BeamUsUP (dla SEO, ale daje radę) – beamusup.com
- (video, EN) Szukanie podatnych systemów dorkami – https://www.youtube.com/watch?v=u_gOnwWEXiA
Damian Kuźma
Od wielu lat w branży bezpieczeństwa IT, ostatnie lata poświęcił zagadnieniom związanym z bezpieczeństwem aplikacji webowych, API, sieci, zarządzaniem tożsamością i rozwiązaniami CDN. Na swoim koncie ma wiele udanych wdrożeń, m.in. w najbardziej znanych spółkach e-commerce w Polsce. Obecnie pełni rolę Specjalisty ds. Cyberbezpieczeństwa w Advatech, gdzie wspiera klientów od wczesnego etapu analizy problemów, doboru odpowiednich rozwiązań, aż po wdrożenia, ich koordynację i wsparcie powdrożeniowe. Po pracy fan gier planszowych i naprawiania zepsutej elektroniki.