Dzisiaj pokażemy czym jest atak LFI, czyli rozwijając ten skrót local file lnclusion. Zaprezentujemy również świetny darmowy skaner fimap dostępny w systemie Kali Linux umożliwiający automatyczne wyszukiwanie podatności typu local file include i remote file inclusion.
Na wstępie powinieneś wiedzieć, że tego typu luka pozwala na dołączenie, wyświetlanie i wykonywanie lokalnych plików znajdujących się na serwerze www. Dzięki tej hakerskiej sztuczce cyberprzestępca może poznać zawartość plików konfiguracyjnych serwera a nawet systemu operacyjnego. Jak pewnie już wiesz z poprzednich lekcji, często w takich plikach występują hasła. Najczęściej występującym przykładem w literaturze jest plik z użytkownikami i hasłami w systemie Linux o nazwie /etc/passwd i /etc/shadow.
Materiał filmowy o ataku LFI i programie fimap w Kali Linux
Poniżej znajduje się bardzo rozbudowany aż, ponad 32 minutowy materiał na temat ataków dołączania lokalnych plików serwera (LFI). W filmie została zaprezentowana również świetna funkcja programu Burp Suite, umożliwiająca zautomatyzowane wyszukiwanie wszystkich adresów URL znajdujących się na stronie internetowej. Dzięki połączeniu tego pajączka sieciowego (ang. spider, web crawler) z programem fimap w bardzo prosty sposób możesz wyszukać wszystkie tego typu podatności na testowanej witrynie internetowej. Pokazaliśmy również ciekawą wtyczkę FoxyProxy standard do Firefoxa.
Fimap – kilka przykładowych poleceń i ciekawych parametrów
Uważam, że najlepiej człowiek uczy się na przykładach dlatego poniżej prezentuje kilka przykładowych komend programu fmap z krótkim objaśnieniem. Uwaga! Pamiętaj, że nie zawsze pentester ma dostęp do zalogowanej części witryny internetowej. W zależności od wykonywanego testu bezpieczeństwa sam musisz podjąć decyzje kiedy skanujesz z wykorzystaniem ciastek sesyjnych (cookies), a kiedy bez nich.
Wyświetlenie dostępnych parametrów fimap (pomoc/help)
fimap -h
Sprawdzanie podatności pojedyńczego adresu URL na LFI/RFI
fimap -s -u 'http://192.168.0.10/vulnerabilities/fi/?page=file1.php'
Parametr -s czyli single url. Możesz go używać do skanowania pojedynczych adresów URL, lecz nie zawsze jest to wygodne.
Skanowanie wszystkich linków listy na podatność LFI/RFI
fimap -m -l 'slownikUrl.txt' --cookie='PHPSESSID=testowe; security=low;' -C
Parametr -m (mass) wybiera tryb skanowania większej ilości linków z słownika. Wymagany tutaj jest parametr -l, czyli właśnie ta lista z linkami. Dodatkowo w powyższym poleceniu zostało zaprezentowane użycie ciasteczek (–cookie). Warto używać również parametru -C który ładnie koloruje informacje w terminalu Linux.
Wyszukiwanie linków na podanej stronie www
fimap -H -u 'http://192.168.0.10/vulnerabilities/' -d 5 --cookie='PHPSESSID=blablabla; security=low' -w 'linkiWyniku.txt' cat linkiWyniku.txt
Powyższe polecenie jest pajączkiem sieciowym (crawler) pobierający w analogiczny sposób do zaprezentowanej metody w filmie w Burp Suite adresu URL na stronie www. Parametr -H (harvest) uruchamia ten tryb, wymaga oczywiście parametru z adresem poszukiwań linków -u. Parametr -d (depth) to głębokość poszukiwań. Właśnie ten parametr budzi moje zastrzeżenia co do działania, ponieważ teoretycznie program powinien wchodząc dalej w każdy link. W naszym powyższym przypadku powinien robić to o 5 poziomów niżej (czyli dalej w wyszukanym linku szukać kolejnych rekursywnie).
Ciasteczka zostały użyte w standardowy sposób. Parametr -w umożliwa zapis wyników do pliku linkiWyniku.txt. Następne polecenie cat po prostu czyta ten plik z rezultatami programu fimap. Z mojego doświadczenia jednak komenda w stosunku do Burp Suite działa mizernie (w stosunku do skryptu naszego DVWA).
Inne parametry
Warto w własnym zakresie skorzystać z pomocy fimap -h i przejrzeć parametry opcjonalne. Narzędzie umożliwia również wyszukiwanie pewnych fraz i potencjalnie podatnych stron internetowych w wyszukiwarce Google/Bing. Jednak pamiętaj, chcesz być specjalistą od bezpieczeństwa czy przestępcą? 😉 Ciekawym parametrem jest również -V, czyli poziom gadatliwości programu (ilość zwracanych informacji użytkownikowi) i tajemnicze -X…
Zadanie domowe z ataków Local File Inclusion (dirb)
-> Zadanie 1
Twoje dzisiejsze zadanie ma otwarte rozwiązanie, więc przyłóż się do niego. W menu Kali Linuxa być może zauważyłeś istnieje podobne narzędzie do opisywanego nie tak dawno narzędzia DirBuster.
To narzędzie nazywa się dirb i działa w konsoli. Przestudiuj we własnym zakresie dostępne jego parametry. Wystarczy, że wpiszesz w swojej konsoli dirb i man dirb a uzyskasz wszystko czego potrzebujesz.
Spróbuj przetestować różne ustawienia programu. Jeżeli nie do końca rozumiesz pewne parametry z pomocy to użyj Google Translatora. Wartymi uwagi parametrami są:
- -c ustawia ciasteczka,
- -o wyniki możesz przekierować do pliku,
- -X/-x zwracanie uwagi przez program na konkretne rozszerzenia plików (istnieje również możliwość zdefiniowania ich w pliku),
- -z przerwy czasowe w zapytaniach maskujące skanowanie.
Radzę Tobie testować ten program z i bez ciasteczek. Użyj również innych parametrów ograniczających wyświetlane wyniki.
Przeanalizuj zebrane rezultaty i zastanów się czy do czegoś może Ci się przydać program dirb.
Uwaga! To zadanie nie posiada konkretnego rozwiązania. Ma na celu wykształcenie w Tobie umiejętności korzystania z programów systemu Linux.
Podsumowanie o o dołączaniu lokalnych plików czyli LFI
Chcę abyś zapamiętał z tej lekcji, że w przypadku wykorzystania tej luki zwykłe pliki typu tekstowego są po prostu wyświetlane na ekranie. W przypadku dołączenia plików interpretowanych przez serwer PHP są one wykonywane. Dlaczego tak się dzieje? Ponieważ funkcja PHP która dołącza pliki (najczęściej include()) działa w ten sposób, że otwiera dany plik i go włącza do siebie w miejscu wywołania include. Napotykając na znaczniki takie jak <?php wykonuje tą sekcje niczym skrypt php. Morał jest zaprezentowany na filmie. Jeśli w jakiś sposób cyberprzestępca dostarczy plik z kodem PHP na serwer w dowolne dostępne miejsce (nawet tekstowy z rozszerzeniem .txt) to może ten kod wykonać za pomocą luki LFI.
Łatwo można sobie wyobrazić sytuacje, w której na stronie internetowej istnieje dobrze zabezpieczony uploader plików i luka LFI. Wystarczy w takim przypadku wgrać dozwolony plik z kawałkiem kodu PHP w sobie i wykonać go za pomocą opisywanej dzisiaj luki local file lnclusion. Bardzo ciekawy atak LFI umożliwiający wgranie shella, bez użycia uploadera będzie zaprezentowany również w kolejnej powiązanej lekcji. Bądź na bieżąco i lajkuj nas na fejsie! Powodzenia w zadaniu domywam! 🙂