Skip to content

Drupal

[AD REMOVED]

Discovery

  • Check meta
curl https://www.drupal.org/ | grep 'content="Drupal'
  • Node: Drupal indexes its content using nodes. A node can hold anything such as a blog post, poll, article, etc. The page URIs are usually of the form /node/<nodeid>.
curl drupal-site.com/node/1

Enumeration

Version

  • Check /CHANGELOG.txt
curl -s http://drupal-site.local/CHANGELOG.txt | grep -m2 ""

Drupal 7.57, 2018-02-21

[!NOTE] Newer installs of Drupal by default block access to the CHANGELOG.txt and README.txt files.

Username enumeration

Drupal supports three types of users by default:

  1. Administrator: This user has complete control over the Drupal website.
  2. Authenticated User: These users can log in to the website and perform operations such as adding and editing articles based on their permissions.
  3. Anonymous: All website visitors are designated as anonymous. By default, these users are only allowed to read posts.

To enumerate users you can:

  • Get number of users: Just access /user/1, /user/2, /user/3... until it returns an error indicating that the suer doesn't exist.
  • Registry: Access/user/register and try to create a username and if the name is already taken it will be indicated in an error from the server.
  • Reset password: Try to reset the password of a user and if the user doesn't exist it will be indicated clearly in an error message.

Hidden pages

Just find new pages by looking into /node/FUZZ where FUZZ is a number (from 1 to 1000 for example).

Installed modules info

#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

Automatic Tools

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

RCE

If you have access to the Drupal web console check these options to get RCE:

{{#ref}} drupal-rce.md {{#endref}}

From XSS to RCE

  • Drupalwned: Drupal Exploitation Script that elevate XSS to RCE or Others Critical Vulnerabilities. For more info check this post. It provides support for Drupal Versions 7.X.X, 8.X.X, 9.X.X and 10.X.X, and allows to:
  • Privilege Escalation: Creates an administrative user in Drupal.
  • (RCE) Upload Template: Upload custom templates backdoored to Drupal.

Post Exploitation

Read settings.php

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

Dump users from DB

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

[AD REMOVED]