tip
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Check the subscription plans!
- Join the 馃挰 Discord group or the telegram group or follow us on Twitter 馃惁 @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.
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
dl
debe 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_NO
enbypass.c
debe 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
phpize
para configurar el entorno de construcci贸n para la extensi贸n personalizada.
Construcci贸n de la Extensi贸n:
- Comandos de Compilaci贸n:
- Usa
phpize
,./configure
ymake
para compilar la extensi贸n. - El resultado
bypass.so
se encuentra en el subdirectorio de m贸dulos.
- Limpieza:
- Ejecuta
make clean
yphpize --clean
despu茅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.so
y un script PHP al servidor de la v铆ctima. - El script utiliza la funci贸n
dl_local
para cargar din谩micamentebypass.so
y luego llama abypass_exec
con 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
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Check the subscription plans!
- Join the 馃挰 Discord group or the telegram group or follow us on Twitter 馃惁 @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.