Tip
Aprende y practica Hacking en AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica Hacking en GCP:HackTricks Training GCP Red Team Expert (GRTE)
Aprende y practica Hacking en Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Apoya a HackTricks
- Revisa los planes de suscripción!
- Únete al 💬 grupo de Discord o al grupo de telegram o síguenos en Twitter 🐦 @hacktricks_live.
- Comparte trucos de hacking enviando PRs a los HackTricks y HackTricks Cloud repositorios de github.
Nota importante:

dl es una función de PHP que se puede usar para cargar extensiones de PHP. Si la función no está deshabilitada, podría ser abusada para eludir disable_functions y ejecutar comandos arbitrarios.
Sin embargo, tiene algunas limitaciones estrictas:
- La función
dldebe estar presente en el entorno y no deshabilitada - La extensión de PHP debe estar compilada con la misma versión principal (versión de API de PHP) que está utilizando el servidor (puedes ver esta información en la salida de phpinfo)
- La extensión de PHP debe estar ubicada en el directorio que está definido por la directiva
extension_dir(puedes verlo en la salida de phpinfo). Es muy improbable que un atacante que intente abusar del servidor tenga acceso de escritura sobre este directorio, por lo que este requisito probablemente te impedirá abusar de esta técnica).
Si cumples con estos requisitos, continúa leyendo la publicación https://antichat.com/threads/70763/ para aprender cómo eludir disable_functions. Aquí hay un resumen:
La función dl se utiliza para cargar extensiones de PHP dinámicamente durante la ejecución del script. Las extensiones de PHP, típicamente escritas en C/C++, mejoran la funcionalidad de PHP. El atacante, al notar que la función dl no está deshabilitada, decide crear una extensión de PHP personalizada para ejecutar comandos del sistema.
Pasos Tomados por el Atacante:
- Identificación de la Versión de PHP:
- El atacante determina la versión de PHP usando un script (
<?php echo 'PHP Version is '.PHP_VERSION; ?>).
- Adquisición del Código Fuente de PHP:
- Descarga el código fuente de PHP desde el sitio web oficial de PHP o el archivo si la versión es más antigua.
- Configuración Local de PHP:
- Extrae e instala la versión específica de PHP en su sistema.
- Creación de la Extensión:
- Estudia cómo crear extensiones de PHP e inspecciona el código fuente de PHP.
- Se enfoca en duplicar la funcionalidad de la función exec ubicada en
ext/standard/exec.c.
Notas para Compilar la Extensión Personalizada:
- ZEND_MODULE_API_NO:
- El
ZEND_MODULE_API_NOenbypass.cdebe coincidir con la versión de construcción de la extensión Zend actual, recuperable con:
php -i | grep "Zend Extension Build" |awk -F"API4" '{print $2}' | awk -F"," '{print $1}'
- Modificación de PHP_FUNCTION:
- Para versiones recientes de PHP (5, 7, 8),
PHP_FUNCTION(bypass_exec)puede necesitar ajustes. El fragmento de código proporcionado detalla esta modificación.
Archivos de la Extensión Personalizada:
- bypass.c:
- Implementa la funcionalidad principal de la extensión personalizada.
- php_bypass.h:
- Archivo de encabezado, definiendo las propiedades de la extensión.
- config.m4:
- Usado por
phpizepara configurar el entorno de construcción para la extensión personalizada.
Construcción de la Extensión:
- Comandos de Compilación:
- Usa
phpize,./configureymakepara compilar la extensión. - El resultado
bypass.sose encuentra en el subdirectorio de módulos.
- Limpieza:
- Ejecuta
make cleanyphpize --cleandespués de la compilación.
Carga y Ejecución en el Host Víctima:
- Compatibilidad de Versiones:
- Asegura que las versiones de API de PHP coincidan entre los sistemas del atacante y de la víctima.
- Carga de la Extensión:
- Utiliza la función
dl, eludiendo restricciones mediante el uso de rutas relativas o un script para automatizar el proceso.
- Ejecución del Script:
- El atacante sube
bypass.soy un script PHP al servidor de la víctima. - El script utiliza la función
dl_localpara cargar dinámicamentebypass.soy luego llama abypass_execcon un comando pasado a través del parámetro de consultacmd.
Ejecución de Comandos:
- El atacante ahora puede ejecutar comandos accediendo a:
http://www.example.com/script.php?cmd=<command>
Este recorrido detallado describe el proceso de creación y despliegue de una extensión de PHP para ejecutar comandos del sistema, explotando la función dl, que idealmente debería estar deshabilitada para prevenir tales brechas de seguridad.
Tip
Aprende y practica Hacking en AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica Hacking en GCP:HackTricks Training GCP Red Team Expert (GRTE)
Aprende y practica Hacking en Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Apoya a HackTricks
- Revisa los planes de suscripción!
- Únete al 💬 grupo de Discord o al grupo de telegram o síguenos en Twitter 🐦 @hacktricks_live.
- Comparte trucos de hacking enviando PRs a los HackTricks y HackTricks Cloud repositorios de github.


