Obejście filtra SSRF

May 07 2023
Cześć, nazywam się W1C3 i dzisiaj wyjaśnię, jak uzyskać dostęp do odczytu dowolnego pliku za pomocą fałszerstwa żądań po stronie serwera (SSRF) z pominięciem filtra. To wyzwanie zostało opracowane dla WaniCTF.

Cześć, nazywam się W1C3 i dzisiaj wyjaśnię, jak uzyskać dostęp do odczytu dowolnego pliku za pomocą fałszerstwa żądań po stronie serwera (SSRF) z pominięciem filtra. To wyzwanie zostało opracowane dla WaniCTF .

Nazwa

Zrzut ekranu

Opis

Aplikacja wykonująca zrzuty ekranu z Twoich ulubionych stron internetowych.

Opis przejścia

Po wejściu na stronę można zauważyć, że jest to bardzo prosta strona. Jego jedyną funkcją jest otrzymanie adresu URL, dostęp do adresu URL za pomocą przeglądarki internetowej i zrobienie zrzutu ekranu.

Prosta aplikacja zrzutu ekranu

W tym wyzwaniu, gdy dostarczany jest kod źródłowy, widzimy, że wykonuje on kontrolę, którą musimy ominąć, ponieważ „ HTTP ” musi być uwzględnione w naszym żądaniu, a „ PLIK ” nie może być uwzględniony.

Przegląd kodu serwera

Aby to zweryfikować, spróbujemy odczytać plik /etc/passwd , ale bez powodzenia.

Próbuję zidentyfikować SSRF

Jak wspomnieliśmy wcześniej, filtr, który musimy ominąć, musi zawierać ciąg „ http ” lub nie zawierać ciągu „ plik ”.

Identyfikacja SSRF

Teraz, gdy jesteśmy na poprzednim etapie, wiedząc, że SSRF istnieje i rozumiejąc filtr, który musimy ominąć, dodamy „ File:// ” na początku i „ ../../../../flag. txt ” lub „ ../../../../etc/passwd ” do końca. Dzięki temu będziemy mogli odczytać plik „flag.txt”, aby ukończyć nasze wyzwanie.

UWAGA : Plik musi zawierać co najmniej jedną wielką literę , aby obejść filtr

Dowolny odczyt pliku

Aby to ułatwić, usuniemy część danych z zapytania. W takim przypadku nasz ładunek wyglądałby tak:

File:///http/../../flag.txt

Wniosek

W tym wyzwaniu pokazaliśmy, jak ominąć prosty filtr, który próbował uniemożliwić SSRF, blokując protokół „ file ” i wymagając protokołu „ http ”. Starannie konstruując nasze żądanie z dużą literą w parametrze „ file ” i używając protokołu „ File:// ”, byliśmy w stanie odczytać dowolne pliki na serwerze.

Dziękuję za przeczytanie tego posta. Bądź na bieżąco z kolejnymi nadchodzącymi postami na blogu i śledź mnie w mediach społecznościowych, aby być na bieżąco. Pamiętaj też, że mój osobisty GitHub będzie zawierał posty publikowane w języku hiszpańskim. Do widzenia!

Github: J-W1C3

Twitter: Josewice7

Telegram: W1C3Post

Dołącz do mojego kanału Telegram, aby być na bieżąco z publikowaniem nowych postów.