tip
Apprenez et pratiquez le hacking AWS :
HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP :
HackTricks Training GCP Red Team Expert (GRTE)
Apprenez et pratiquez le hacking Azure :
HackTricks Training Azure Red Team Expert (AzRTE)
Soutenir HackTricks
- Vérifiez les plans d'abonnement !
- Rejoignez le đŹ groupe Discord ou le groupe telegram ou suivez-nous sur Twitter đŠ @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PR au HackTricks et HackTricks Cloud dépÎts github.
Note importante :

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 peut ĂȘtre exploitĂ©e pour contourner disable_functions et exĂ©cuter des commandes arbitraires.
Cependant, elle a certaines limitations strictes :
- La fonction
dldoit ĂȘtre prĂ©sente dans l'environnement et non dĂ©sactivĂ©e - L'extension PHP doit ĂȘtre compilĂ©e avec la mĂȘme version majeure (version 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 qui est dĂ©fini par la directive
extension_dir(vous pouvez le voir dans la sortie de phpinfo). Il est trĂšs peu probable qu'un attaquant essayant d'exploiter le serveur ait un accĂšs en Ă©criture sur ce rĂ©pertoire, donc cette exigence empĂȘchera probablement l'exploitation de cette technique.
Si vous remplissez ces conditions, continuez à lire le post https://antichat.com/threads/70763/ pour apprendre à 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, aprÚs avoir remarqué 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 suivies par l'attaquant :
- Identification de la version PHP :
- L'attaquant détermine la version PHP à l'aide d'un script (
<?php echo 'PHP Version is '.PHP_VERSION; ?>).
- Acquisition du code source PHP :
- Télécharge le code source PHP depuis le site officiel de PHP ou l'archive si la version est plus ancienne.
- Configuration locale de PHP :
- Extrait et installe la version PHP spécifique 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.
Remarques pour la compilation de l'extension personnalisée :
- ZEND_MODULE_API_NO :
- Le
ZEND_MODULE_API_NOdansbypass.cdoit correspondre à la version actuelle de la construction de l'extension Zend, récupérable avec :
php -i | grep "Zend Extension Build" |awk -F"API4" '{print $2}' | awk -F"," '{print $1}'
- Modification de PHP_FUNCTION :
- Pour les versions récentes de PHP (5, 7, 8),
PHP_FUNCTION(bypass_exec)peut nécessiter un ajustement. L'extrait 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
phpizepour configurer l'environnement de construction de l'extension personnalisée.
Construction de l'extension :
- Commandes de compilation :
- Utilise
phpize,./configure, etmakepour compiler l'extension. - Le fichier
bypass.sorésultant est ensuite situé dans le sous-répertoire des modules.
- Nettoyage :
- Exécute
make cleanetphpize --cleanaprĂšs la compilation.
Téléchargement et exécution sur l'hÎte victime :
- Compatibilité des versions :
- S'assure que les versions API PHP correspondent entre les systĂšmes de l'attaquant et 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.soet un script PHP sur le serveur de la victime. - Le script utilise la fonction
dl_localpour charger dynamiquementbypass.soet appelle ensuitebypass_execavec 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=<command>
Ce guide dĂ©taillĂ© 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 prĂ©venir de telles violations de sĂ©curitĂ©.
tip
Apprenez et pratiquez le hacking AWS :
HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP :
HackTricks Training GCP Red Team Expert (GRTE)
Apprenez et pratiquez le hacking Azure :
HackTricks Training Azure Red Team Expert (AzRTE)
Soutenir HackTricks
- Vérifiez les plans d'abonnement !
- Rejoignez le đŹ groupe Discord ou le groupe telegram ou suivez-nous sur Twitter đŠ @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PR au HackTricks et HackTricks Cloud dépÎts github.
HackTricks