disable_functions bypass - dl function
Note importante:
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2Fuser-images.githubusercontent.com%2F84577967%2F174675487-a4c4ca06-194f-4725-85af-231a2f35d56c.png&width=768&dpr=4&quality=100&sign=486a6573&sv=1)
dl
est une fonction PHP qui peut être utilisée pour charger des extensions PHP. Si la fonction n'est pas désactivée, elle pourrait être utilisée pour contourner disable_functions
et exécuter des commandes arbitraires.
Cependant, elle présente certaines limitations strictes :
La fonction
dl
doit être présente dans l'environnement et non désactivéeL'extension PHP doit être compilée avec la même version majeure (version de l'API PHP) que celle utilisée par le serveur (vous pouvez voir cette information dans la sortie de phpinfo)
L'extension PHP doit être ** située dans le répertoire** défini par la directive
extension_dir
(vous pouvez le voir dans la sortie de phpinfo). Il est très improbable qu'un attaquant essayant d'abuser du serveur ait un accès en écriture sur ce répertoire, donc cette exigence vous empêchera probablement d'abuser de cette technique).
Si vous remplissez ces conditions, continuez à lire l'article https://antichat.com/threads/70763/ pour apprendre comment contourner disable_functions
. Voici un résumé :
La fonction dl est utilisée pour charger des extensions PHP dynamiquement pendant l'exécution du script. Les extensions PHP, généralement écrites en C/C++, améliorent la fonctionnalité de PHP. L'attaquant, en remarquant que la fonction dl
n'est pas désactivée, décide de créer une extension PHP personnalisée pour exécuter des commandes système.
Étapes prises par l'attaquant :
Identification de la version PHP :
L'attaquant détermine la version PHP à l'aide d'un script (
<?php echo 'La version PHP est '.PHP_VERSION; ?>
).
Acquisition de la source PHP :
Configuration PHP locale :
Extrait et installe la version spécifique de PHP sur son système.
Création de l'extension :
Étudie la création d'extensions PHP et inspecte le code source PHP.
Se concentre sur la duplication de la fonctionnalité de la fonction exec située dans
ext/standard/exec.c
.
Notes pour la compilation de l'extension personnalisée :
ZEND_MODULE_API_NO :
Le
ZEND_MODULE_API_NO
dansbypass.c
doit correspondre à la version actuelle de la construction de l'extension Zend, récupérable avec :
Modification de PHP_FUNCTION :
Pour les versions récentes de PHP (5, 7, 8),
PHP_FUNCTION(bypass_exec)
peut nécessiter des ajustements. Le snippet de code fourni détaille cette modification.
Fichiers d'extension personnalisée :
bypass.c :
Implémente la fonctionnalité principale de l'extension personnalisée.
php_bypass.h :
Fichier d'en-tête, définissant les propriétés de l'extension.
config.m4 :
Utilisé par
phpize
pour configurer l'environnement de construction de l'extension personnalisée.
Construction de l'extension :
Commandes de compilation :
Utilise
phpize
,./configure
etmake
pour compiler l'extension.Le fichier
bypass.so
résultant est ensuite situé dans le sous-répertoire modules.
Nettoyage :
Exécute
make clean
etphpize --clean
après la compilation.
Téléchargement et exécution sur l'hôte victime :
Compatibilité des versions :
Veille à ce que les versions de l'API PHP correspondent entre le système de l'attaquant et celui de la victime.
Chargement de l'extension :
Utilise la fonction
dl
, contournant les restrictions en utilisant des chemins relatifs ou un script pour automatiser le processus.
Exécution du script :
L'attaquant télécharge
bypass.so
et un script PHP sur le serveur de la victime.Le script utilise la fonction
dl_local
pour charger dynamiquementbypass.so
puis appellebypass_exec
avec une commande passée via le paramètre de requêtecmd
.
Exécution de commandes :
L'attaquant peut maintenant exécuter des commandes en accédant à :
http://www.example.com/script.php?cmd=<commande>
Cette explication détaillée décrit le processus de création et de déploiement d'une extension PHP pour exécuter des commandes système, exploitant la fonction dl
, qui devrait idéalement être désactivée pour éviter de telles violations de sécurité.
Last updated