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)
Katika toleo za zamani za Drupal (kabla ya toleo la 8), ilikuwa inawezekana kuingia kama admin na kuwezesha moduli ya PHP filter
, ambayo "Inaruhusu msimbo wa PHP uliowekwa ndani/kipande kutathminiwa." Lakini kuanzia toleo la 8 moduli hii haijaanzishwa kwa chaguo-msingi.
Nenda kwenye /modules/php na ikiwa kosa la 403 linarudi basi plugin ya PHP filter imewekwa na unaweza kuendelea
Ikiwa sivyo, nenda kwenye Modules
na angalia kisanduku cha PHP Filter
kisha bonyeza Save configuration
Kisha, ili kuitumia, bonyeza Add content
, kisha chagua Basic Page
au Article
na andika PHP backdoor, kisha chagua msimbo wa PHP
katika muundo wa Text na hatimaye chagua Preview
Ili kuichochea, fikia tu node mpya iliyoundwa:
Katika toleo za sasa si tena inawezekana kufunga plugins kwa kuwa na ufikiaji wa wavuti tu baada ya usakinishaji wa default.
Kuanzia toleo 8 na kuendelea, PHP Filter moduli haifungwi kwa default. Ili kutumia kazi hii, tunapaswa kufunga moduli wenyewe.
Pakua toleo la hivi karibuni la moduli kutoka tovuti ya Drupal.
wget https://ftp.drupal.org/files/projects/php-8.x-1.1.tar.gz
Mara baada ya kupakua, nenda kwenye Administration
> Reports
> Available updates
.
Bonyeza Browse
, chagua faili kutoka kwenye saraka tuliyoiweka, kisha bonyeza Install
.
Mara moduli inapokuwa imewekwa, tunaweza kubonyeza Content
na kuunda ukurasa mpya wa msingi, kama tulivyofanya katika mfano wa Drupal 7. Tena, hakikisha uchague PHP code
kutoka kwenye Text format
dropdown.
Katika toleo za sasa si tena inawezekana kufunga plugins kwa kuwa na ufikiaji wa wavuti tu baada ya usakinishaji wa default.
Ilikuwa inawezekana kupakua moduli, kuongeza backdoor ndani yake na kufunga. Kwa mfano, kupakua Trurnstile moduli katika muundo wa kufungia, kuunda faili mpya ya backdoor ya PHP ndani yake, ikiruhusu ufikiaji wa faili ya PHP na faili ya .htaccess
:
Na kisha kwenda kwenye http://drupal.local/admin/modules/install
ili kusakinisha moduli iliyokuwa na backdoor na kufikia /modules/turnstile/back.php
ili kuitekeleza.
Post iliyoshirikiwa na Coiffeur0x90
Katika menyu ya Extend (/admin/modules), unaweza kuwasha kile kinachoweza kuonekana kama plugins ambazo tayari zimesakinishwa. Kwa kawaida, plugins Media na Media Library hazionekani kuwa zimewashwa, hivyo hebu tuwasha.
Kabla ya kuwasha:
Baada ya kuwasha:
Tutatumia kipengele Configuration synchronization ili kutoa (kuhamasisha) na kupakia (kuagiza) entries za mipangilio ya Drupal:
/admin/config/development/configuration/single/export
/admin/config/development/configuration/single/import
Patch system.file.yml
Hebu tuanze kwa kupachika entry ya kwanza allow_insecure_uploads
kutoka:
File: system.file.yml
Kwa:
File: system.file.yml
Patch field.field.media.document.field_media_document.yml
Kisha, pata kipengee cha pili file_extensions
kutoka:
File: field.field.media.document.field_media_document.yml
Kwa:
File: field.field.media.document.field_media_document.yml
Sijatumia katika blogu hii lakini inabainishwa kuwa inawezekana kufafanua kiingilio
file_directory
kwa njia isiyo ya kawaida na kwamba inahatarishwa na shambulio la kupita njia (hivyo tunaweza kurudi juu ndani ya mti wa mfumo wa faili wa Drupal).
Hatua ya mwisho ni rahisi zaidi, na imegawanywa katika hatua ndogo mbili. Ya kwanza ni kupakia faili katika muundo wa .htaccess ili kutumia maagizo ya Apache na kuruhusu faili za .txt kutafsiriwa na injini ya PHP. Ya pili ni kupakia faili ya .txt inayoshikilia mzigo wetu.
File: .htaccess
Kwa nini hila hii ni nzuri?
Kwa sababu mara tu Webshell (ambayo tutaita LICENSE.txt) inapowekwa kwenye seva ya Mtandao, tunaweza kupeleka amri zetu kupitia $_COOKIE
na katika kumbukumbu za seva ya Mtandao, hii itaonekana kama ombi halali la GET kwa faili la maandiko.
Kwa nini kuita Webshell yetu LICENSE.txt?
Kwa sababu tu ikiwa tutachukua faili ifuatayo, kwa mfano core/LICENSE.txt (ambayo tayari ipo katika msingi wa Drupal), tuna faili ya mistari 339 na ukubwa wa 17.6 KB, ambayo ni bora kwa kuongeza kipande kidogo cha msimbo wa PHP katikati (kwa sababu faili ni kubwa vya kutosha).
Faili: LICENSE.txt iliyorekebishwa
Kwanza, tunatumia kipengele Add Document (/media/add/document) kupakia faili yetu inayokuwa na maagizo ya Apache (.htaccess).
Sehemu ya 3.2 (pakia faili LICENSE.txt)
Kisha, tunatumia tena kipengele Add Document (/media/add/document) kupakia Webshell iliyofichwa ndani ya faili la leseni.
Sehemu ya mwisho inahusisha mawasiliano na Webshell.
Kama inavyoonyeshwa katika picha ifuatayo, ikiwa cookie inayotarajiwa na Webshell yetu haijafafanuliwa, tunapata matokeo yafuatayo tunaposhughulikia faili kupitia kivinjari cha wavuti.
Wakati mshambuliaji anapoweka cookie, anaweza kuwasiliana na Webshell na kutekeleza amri zozote anazotaka.
Na kama unavyoona katika kumbukumbu, inaonekana kama faili ya txt pekee ndiyo imeombwa.
Asante kwa kuchukua muda kusoma makala hii, natumai itakusaidia kupata baadhi ya shells.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)