# Drupal {{#include ../../../banners/hacktricks-training.md}} ## Odkrywanie - Sprawdź **meta** ```bash curl https://www.drupal.org/ | grep 'content="Drupal' ``` - **Node**: Drupal **indeksuje swoją zawartość za pomocą węzłów**. Węzeł może **zawierać cokolwiek**, takiego jak post na blogu, ankieta, artykuł itp. URI strony zazwyczaj mają postać `/node/`. ```bash curl drupal-site.com/node/1 ``` ## Enumeracja ### Wersja - Sprawdź `/CHANGELOG.txt` ```bash curl -s http://drupal-site.local/CHANGELOG.txt | grep -m2 "" Drupal 7.57, 2018-02-21 ``` > [!NOTE] > Nowsze instalacje Drupal domyślnie blokują dostęp do plików `CHANGELOG.txt` i `README.txt`. ### Enumeracja nazw użytkowników Drupal domyślnie obsługuje **trzy typy użytkowników**: 1. **`Administrator`**: Ten użytkownik ma pełną kontrolę nad stroną internetową Drupal. 2. **`Użytkownik uwierzytelniony`**: Ci użytkownicy mogą logować się na stronie i wykonywać operacje takie jak dodawanie i edytowanie artykułów w zależności od swoich uprawnień. 3. **`Anonimowy`**: Wszyscy odwiedzający stronę są oznaczani jako anonimowi. Domyślnie tym użytkownikom pozwala się tylko na czytanie postów. **Aby enumerować użytkowników możesz:** - **Uzyskać liczbę użytkowników:** Po prostu uzyskaj dostęp do `/user/1`, `/user/2`, `/user/3`... aż zwróci błąd wskazujący, że użytkownik nie istnieje. - **Rejestracja**: Uzyskaj dostęp do `/user/register` i spróbuj utworzyć nazwę użytkownika, a jeśli nazwa jest już zajęta, zostanie to wskazane w błędzie z serwera. - **Resetowanie hasła**: Spróbuj zresetować hasło użytkownika, a jeśli użytkownik nie istnieje, zostanie to wyraźnie wskazane w komunikacie o błędzie. ### Ukryte strony Po prostu znajdź nowe strony, przeszukując **`/node/FUZZ`**, gdzie **`FUZZ`** to liczba (na przykład od 1 do 1000). ### Informacje o zainstalowanych modułach ```bash #From https://twitter.com/intigriti/status/1439192489093644292/photo/1 #Get info on installed modules curl https://example.com/config/sync/core.extension.yml curl https://example.com/core/core.services.yml # Download content from files exposed in the previous step curl https://example.com/config/sync/swiftmailer.transport.yml ``` ## Narzędzia automatyczne ```bash droopescan scan drupal -u http://drupal-site.local ``` ## RCE Jeśli masz dostęp do konsoli webowej Drupal, sprawdź te opcje, aby uzyskać RCE: {{#ref}} drupal-rce.md {{#endref}} ## Z XSS do RCE - [**Drupalwned**](https://github.com/nowak0x01/Drupalwned): Skrypt do eksploatacji Drupal, który **podnosi XSS do RCE lub innych krytycznych luk.** Więcej informacji znajdziesz w [**tym poście**](https://nowak0x01.github.io/papers/76bc0832a8f682a7e0ed921627f85d1d.html). Oferuje **wsparcie dla wersji Drupal 7.X.X, 8.X.X, 9.X.X i 10.X.X, i pozwala na:** - _**Podniesienie uprawnień:**_ Tworzy użytkownika administracyjnego w Drupal. - _**(RCE) Prześlij szablon:**_ Prześlij niestandardowe szablony z backdoorem do Drupal. ## Post Eksploatacja ### Przeczytaj settings.php ```bash find / -name settings.php -exec grep "drupal_hash_salt\|'database'\|'username'\|'password'\|'host'\|'port'\|'driver'\|'prefix'" {} \; 2>/dev/null ``` ### Zrzut użytkowników z bazy danych ```bash mysql -u drupaluser --password='2r9u8hu23t532erew' -e 'use drupal; select * from users' ``` {{#include ../../../banners/hacktricks-training.md}}