Drupal RCE
Met PHP Filter Module
In ouer weergawes van Drupal (voor weergawe 8), was dit moontlik om as 'n admin aan te meld en die PHP filter
module te aktiveer, wat "Ingebedde PHP kode/snippets toelaat om geëvalueer te word." Maar vanaf weergawe 8 is hierdie module nie standaard geïnstalleer nie.
Jy moet die plugin php geïnstalleer hê (kontroleer dit deur toegang te verkry tot /modules/php en as dit 'n 403 teruggee, dan bestaan dit, as 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 Teksvormaat -> Kies Voorskou
Laastens, toegang die nuut geskepte node:
Installeer PHP Filter Module
In huidige weergawes is dit nie meer moontlik om plugins te installeer deur slegs toegang tot die web te hê na die standaardinstallasie nie.
Vanaf weergawe 8 en later, is die PHP Filter module nie standaard geïnstalleer nie. Om hierdie funksionaliteit te benut, sal ons die module self moet 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
Sodra dit afgelaai is, gaan na
Administrasie
>Verslae
>Beskikbare opdaterings
.Klik op
Blader
, kies die lêer uit die gids waarheen ons dit afgelaai het, en klik dan opInstalleer
.Sodra 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. Weereens, maak seker omPHP kode
uit dieTeksvormaat
keuselys te kies.
Backdoored Module
In huidige weergawes is dit nie meer moontlik om plugins te installeer deur slegs toegang tot die web te hê na die standaardinstallasie nie.
'n Backdoored module kan geskep word deur 'n shell by 'n bestaande module te voeg. Modules kan op die drupal.org-webwerf gevind word. Kom ons kies 'n module soos CAPTCHA. Scroll af en kopieer die skakel vir die tar.gz argief.
Laai die argief af en onttrek die inhoud.
Skep 'n PHP web shell met die inhoud:
Volgende, moet ons 'n
.htaccess
lêer skep om vir onsself toegang tot die gids te gee. Dit is nodig aangesien Drupal direkte toegang tot die/modules
gids weier.
Die konfigurasie hierbo sal reëls toepas vir die / gids wanneer ons 'n lêer in /modules versoek. Kopieer albei hierdie lêers na die captcha-gids en skep 'n argief.
Aangesien ons administratiewe toegang tot die webwerf het, klik op
Manage
en danExtend
in die sybalk. Klik dan op die+ Install new module
knoppie, en ons sal na die installasiebladsy geneem word, sooshttp://drupal-site.local/admin/modules/install
. Blaai na die backdoored Captcha-argief en klik opInstall
.Sodra die installasie suksesvol is, blaai na
/modules/captcha/shell.php
om opdragte uit te voer.
Backdooring Drupal met Konfigurasiesinkronisasie
Pos gedeel deur Coiffeur0x90
Deel 1 (aktivering van Media en Media Library)
In die Extend menu (/admin/modules), kan jy aktiveer wat blyk reeds geïnstalleerde plugins te wees. Standaard, blyk plugins Media en Media Library nie geaktiveer te wees nie, so kom ons aktiveer hulle.
Voor aktivering:
Na aktivering:
Deel 2 (benutting van funksie Konfigurasiesinkronisasie)
Ons sal die Konfigurasiesinkronisasie funksie benut om Drupal konfigurasie-invoere te dump (uitvoer) en op te laai (invoer):
/admin/config/development/configuration/single/export
/admin/config/development/configuration/single/import
Patch system.file.yml
Kom ons begin deur die eerste invoer allow_insecure_uploads
te patch vanaf:
Lêer: system.file.yml
Na:
Lêer: system.file.yml
Patch field.field.media.document.field_media_document.yml
Dan, patch die tweede inskrywing file_extensions
van:
File: field.field.media.document.field_media_document.yml
Na:
Lêer: field.field.media.document.field_media_document.yml
Ek gebruik dit nie in hierdie blogpos nie, maar dit word opgemerk dat dit moontlik is om die invoer
file_directory
op 'n arbitrêre manier te definieer en dat dit kwesbaar is vir 'n pad traversaal aanval (so ons kan teruggaan binne die Drupal lêerstelsel boom).
Deel 3 (benutting van funksie Voeg Dokument by)
Die laaste stap is die eenvoudigste, en is opgebroke in twee sub-stappe. Die eerste is om 'n lêer in .htaccess-formaat op te laai om die Apache-riglyne te benut en .txt-lêers toe te laat om deur die PHP-enjin geïnterpreteer te word. Die tweede is om 'n .txt-lêer op te laai wat ons payload bevat.
Lêer: .htaccess
Waarom is hierdie truuk cool?
Omdat ons, sodra die Webshell (wat ons LICENSE.txt sal noem) op die Webbediener gelaai is, ons opdragte via $_COOKIE
kan oordra en in die Webbediener logs sal dit as 'n wettige GET-versoek na 'n tekslêer verskyn.
Waarom noem ons ons Webshell LICENSE.txt?
Eenvoudig omdat as ons die volgende lêer neem, byvoorbeeld core/LICENSE.txt (wat reeds in die Drupal-kern teenwoordig is), ons 'n lêer van 339 lyne en 17.6 KB in grootte het, wat perfek is om 'n klein snit van PHP-kode in die middel by te voeg (aangesien die lêer groot genoeg is).
Lêer: Gepatchte LICENSE.txt
Deel 3.1 (laai lêer .htaccess op)
Eerstens, benut ons die Voeg Dokument (/media/add/document) funksie om ons lêer wat die Apache riglyne bevat (.htaccess) op te laai.
Deel 3.2 (laai lêer LICENSE.txt op)
Dan, benut ons die Voeg Dokument (/media/add/document) funksie weer om 'n Webshell wat in 'n lisensie lêer versteek is, op te laai.
Deel 4 (interaksie met die Webshell)
Die laaste deel bestaan uit interaksie met die Webshell.
Soos in die volgende skermskoot getoon, as die koekie wat deur ons Webshell verwag word nie gedefinieer is nie, kry ons die daaropvolgende resultaat wanneer ons die lêer via 'n Webblaaier raadpleeg.
Wanneer die aanvaller die koekie stel, kan hy met die Webshell interaksie hê en enige opdragte uitvoer wat hy wil.
En soos jy in die logs kan sien, lyk dit of slegs 'n txt-lêer aangevra is.
Dankie dat jy die tyd geneem het om hierdie artikel te lees, ek hoop dit sal jou help om 'n paar shells te kry.
Last updated