Drupal RCE
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
U starijim verzijama Drupala (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/fragmenta." Ali od verzije 8 ovaj modul nije instaliran po defaultu.
Idite na /modules/php i ako se vrati greška 403, onda je PHP filter plugin instaliran i možete nastaviti
Ako nije, idite na Modules
i označite kutiju PHP Filter
, a zatim kliknite na Save configuration
Zatim, da biste to iskoristili, kliknite na Add content
, zatim odaberite Basic Page
ili Article
i napišite PHP backdoor, zatim odaberite PHP
kod u tekstualnom formatu i konačno odaberite Preview
Da biste to aktivirali, jednostavno pristupite novokreiranom čvoru:
U trenutnim verzijama više nije moguće instalirati dodatke samo imajući pristup vebu nakon podrazumevane instalacije.
Od verzije 8 pa nadalje, PHP Filter modul nije instaliran podrazumevano. Da bismo iskoristili ovu funkcionalnost, morali bismo instalirati modul sami.
Preuzmite najnoviju verziju modula sa Drupal veb sajta.
wget https://ftp.drupal.org/files/projects/php-8.x-1.1.tar.gz
Kada se preuzme, idite na Administracija
> Izveštaji
> Dostupne nadogradnje
.
Kliknite na Pretraži
, izaberite datoteku iz direktorijuma u koji smo je preuzeli, a zatim kliknite na Instaliraj
.
Kada je modul instaliran, možemo kliknuti na Sadržaj
i napraviti novu osnovnu stranicu, slično kao što smo uradili u primeru Drupal 7. Ponovo, obavezno izaberite PHP kod
iz Format teksta
padajuće liste.
U trenutnim verzijama više nije moguće instalirati dodatke samo imajući pristup vebu nakon podrazumevane instalacije.
Bilo je moguće preuzeti modul, dodati mu bekdor i instalirati ga. Na primer, preuzimanje Trurnstile modula u komprimovanom formatu, kreiranje novog PHP bekdor fajla unutar njega, omogućavajući pristup PHP fajlu sa .htaccess
fajlom:
And then going to http://drupal.local/admin/modules/install
to install the backdoored module and access /modules/turnstile/back.php
to execute it.
Post shared by Coiffeur0x90
In the Extend menu (/admin/modules), you can activate what appear to be plugins already installed. By default, plugins Media and Media Library don’t appear to be activated, so let’s activate them.
Before activation:
After activation:
We’ll leverage the Configuration synchronization feature to dump (export) and upload (import) Drupal configuration entries:
/admin/config/development/configuration/single/export
/admin/config/development/configuration/single/import
Patch system.file.yml
Let’s start by patching the first entry allow_insecure_uploads
from:
File: system.file.yml
Da:
Fajl: system.file.yml
Patch field.field.media.document.field_media_document.yml
Zatim, zakrpite drugi unos file_extensions
iz:
File: field.field.media.document.field_media_document.yml
Da:
File: field.field.media.document.field_media_document.yml
Ne koristim to u ovom blog postu, ali je zabeleženo da je moguće definisati unos
file_directory
na proizvoljan način i da je podložan napadu prečicom (tako da možemo da se vratimo unazad unutar Drupal datotečnog sistema).
Zadnji korak je najjednostavniji i deli se na dva pod-koraka. Prvi je da se otpremi datoteka u .htaccess formatu kako bi se iskoristile Apache direktive i omogućilo da .txt datoteke budu interpretirane od strane PHP engine-a. Drugi je da se otpremi .txt datoteka koja sadrži naš payload.
Datoteka: .htaccess
Zašto je ovaj trik cool?
Zato što kada se Webshell (koji ćemo nazvati LICENSE.txt) postavi na Web server, možemo prenositi naše komande putem $_COOKIE
i u logovima Web servera, ovo će se prikazati kao legitimni GET zahtev za tekstualnom datotekom.
Zašto nazvati naš Webshell LICENSE.txt?
Jednostavno zato što ako uzmemo sledeću datoteku, na primer core/LICENSE.txt (koja je već prisutna u Drupal jezgru), imamo datoteku od 339 linija i 17.6 KB veličine, što je savršeno za dodavanje malog snippeta PHP koda u sredinu (pošto je datoteka dovoljno velika).
Datoteka: Patchovana LICENSE.txt
Prvo, koristimo funkciju Add Document (/media/add/document) da otpremimo naš fajl koji sadrži Apache direktive (.htaccess).
Deo 3.2 (upload file LICENSE.txt)
Zatim, ponovo koristimo funkciju Add Document (/media/add/document) da otpremimo Webshell skriven unutar fajla sa licencom.
Poslednji deo se sastoji od interakcije sa Webshell-om.
Kao što je prikazano na sledećem ekranu, ako kolačić koji očekuje naš Webshell nije definisan, dobijamo sledeći rezultat kada konsultujemo fajl putem Web pretraživača.
Kada napadač postavi kolačić, može da interaguje sa Webshell-om i izvrši bilo koje komande koje želi.
I kao što možete videti u logovima, izgleda da je samo txt fajl zatražen.
Hvala što ste odvojili vreme da pročitate ovaj članak, nadam se da će vam pomoći da dobijete neke shell-ove.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)