Drupal RCE
Z modułem Filtra PHP
W starszych wersjach Drupal (przed wersją 8), było możliwe zalogowanie się jako administrator i włączenie modułu PHP filter
, który "Umożliwia ocenianie osadzonego kodu PHP/skryptów." Ale od wersji 8 ten moduł nie jest zainstalowany domyślnie.
Potrzebujesz, aby wtyczka php była zainstalowana (sprawdź to przechodząc do /modules/php i jeśli zwraca 403, to istnieje, jeśli nie znaleziono, to wtyczka php nie jest zainstalowana)
Przejdź do Modules -> (Sprawdź) PHP Filter -> Zapisz konfigurację
Następnie kliknij Dodaj zawartość -> Wybierz Podstawowa strona lub Artykuł -> Napisz kod php shell na stronie -> Wybierz Kod PHP w Formacie tekstu -> Wybierz Podgląd
W końcu po prostu przejdź do nowo utworzonego węzła:
Zainstaluj moduł Filtra PHP
W bieżących wersjach nie jest już możliwe instalowanie wtyczek, mając dostęp tylko do sieci po domyślnej instalacji.
Od wersji 8 i nowszych, moduł Filtra PHP nie jest instalowany domyślnie. Aby skorzystać z tej funkcjonalności, musimy zainstalować moduł samodzielnie.
Pobierz najnowszą wersję modułu ze strony internetowej Drupal.
wget https://ftp.drupal.org/files/projects/php-8.x-1.1.tar.gz
Po pobraniu przejdź do
Administracja
>Raporty
>Dostępne aktualizacje
.Kliknij
Przeglądaj
, wybierz plik z katalogu, do którego go pobraliśmy, a następnie kliknijZainstaluj
.Po zainstalowaniu modułu możemy kliknąć
Zawartość
i utworzyć nową podstawową stronę, podobnie jak w przykładzie dla Drupal 7. Ponownie upewnij się, że wybranoKod PHP
z rozwijanego menuFormat tekstu
.
Moduł z tylnymi drzwiami
W bieżących wersjach nie jest już możliwe instalowanie wtyczek, mając dostęp tylko do sieci po domyślnej instalacji.
Moduł z tylnymi drzwiami można utworzyć, dodając powłokę do istniejącego modułu. Moduły można znaleźć na stronie drupal.org. Wybierzmy moduł, taki jak CAPTCHA. Przewiń w dół i skopiuj link do archiwum tar.gz.
Pobierz archiwum i rozpakuj jego zawartość.
Utwórz PHP web shell o następującej zawartości:
Następnie musimy utworzyć plik
.htaccess
, aby uzyskać dostęp do folderu. Jest to konieczne, ponieważ Drupal odmawia bezpośredniego dostępu do folderu/modules
.
Konfiguracja powyżej będzie stosować zasady dla folderu /, gdy żądamy pliku w /modules. Skopiuj oba te pliki do folderu captcha i utwórz archiwum.
Zakładając, że mamy dostęp administracyjny do strony internetowej, klikamy na
Zarządzaj
, a następnie naRozszerzenia
w pasku bocznym. Następnie klikamy przycisk+ Zainstaluj nowy moduł
, i zostaniemy przeniesieni do strony instalacji, na przykładhttp://drupal-site.local/admin/modules/install
. Przeglądamy archiwum z tylnymi drzwiami Captcha i klikamyZainstaluj
.Po udanej instalacji, przechodzimy do
/modules/captcha/shell.php
, aby wykonywać polecenia.
Podstawienie Drupal za pomocą synchronizacji konfiguracji
Post udostępniony przez Coiffeur0x90
Część 1 (aktywacja Media i Biblioteki mediów)
W menu Rozszerzenia (/admin/modules) można aktywować wtyczki, które wydają się być już zainstalowane. Domyślnie wtyczki Media i Biblioteka mediów nie wydają się być aktywowane, więc aktywujemy je.
Przed aktywacją:
Po aktywacji:
Część 2 (wykorzystanie funkcji Synchronizacja konfiguracji)
Wykorzystamy funkcję Synchronizacja konfiguracji do zrzucania (eksportu) i przesyłania (importu) wpisów konfiguracyjnych Drupala:
/admin/config/development/configuration/single/export
/admin/config/development/configuration/single/import
Zmiana system.file.yml
Zacznijmy od zmiany pierwszego wpisu allow_insecure_uploads
z:
Plik: system.file.yml
Do:
Plik: system.file.yml
Załataj pole field.field.media.document.field_media_document.yml
Następnie, załataj drugi wpis file_extensions
z:
Plik: field.field.media.document.field_media_document.yml
Do:
Plik: field.field.media.document.field_media_document.yml
Nie używam tego w tym wpisie na blogu, ale zauważono, że można zdefiniować wpis
file_directory
w dowolny sposób i że jest podatny na atak ścieżki (więc możemy wrócić w górę drzewa systemu plików Drupal).
Część 3 (wykorzystanie funkcji Dodaj dokument)
Ostatni krok jest najprostszy i składa się z dwóch podkroków. Pierwszy polega na przesłaniu pliku w formacie .htaccess, aby wykorzystać dyrektywy Apache i umożliwić interpretację plików .txt przez silnik PHP. Drugi polega na przesłaniu pliku .txt zawierającego nasz ładunek.
Plik: .htaccess
Dlaczego ten trik jest fajny?
Ponieważ po upuszczeniu Webshell (który nazwiemy LICENSE.txt) na serwer WWW, możemy przesyłać nasze polecenia za pomocą $_COOKIE
, a w dziennikach serwera WWW będzie to wyglądać jak prawidłowe żądanie GET do pliku tekstowego.
Dlaczego nazwać nasz Webshell LICENSE.txt?
Po prostu dlatego, że jeśli weźmiemy następujący plik, na przykład core/LICENSE.txt (który jest już obecny w jądrze Drupal), mamy plik składający się z 339 linii i o wielkości 17,6 KB, co jest idealne do dodania małego fragmentu kodu PHP pośrodku (ponieważ plik jest wystarczająco duży).
Plik: Zaktualizowany LICENSE.txt
Część 3.1 (przesłanie pliku .htaccess)
Najpierw wykorzystujemy funkcję Dodaj dokument (/media/add/document), aby przesłać nasz plik zawierający dyrektywy Apache (.htaccess).
Część 3.2 (przesłanie pliku LICENSE.txt)
Następnie ponownie wykorzystujemy funkcję Dodaj dokument (/media/add/document), aby przesłać Webshell ukryty w pliku licencyjnym.
Część 4 (interakcja z Webshell)
Ostatnia część polega na interakcji z Webshell.
Jak pokazano na poniższym zrzucie ekranu, jeśli oczekiwane ciasteczko przez nasz Webshell nie jest zdefiniowane, otrzymujemy następujący wynik podczas konsultowania pliku za pomocą przeglądarki internetowej.
Kiedy atakujący ustawia ciasteczko, może on interagować z Webshell i wykonywać dowolne polecenia, których chce.
I jak widać w logach, wygląda na to, że został poproszony tylko plik txt.
Dziękuję za poświęcenie czasu na przeczytanie tego artykułu, mam nadzieję, że pomoże Ci zdobyć kilka shelli.
Last updated