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

Note importante :

image

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 dl doit ê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 :

  1. Identification de la version PHP :
  • L’attaquant détermine la version PHP à l’aide d’un script (<?php echo 'PHP Version is '.PHP_VERSION; ?>).
  1. Acquisition du code source PHP :
  1. Configuration locale de PHP :
  • Extrait et installe la version PHP spécifique sur son système.
  1. Création de l’extension :

Remarques pour la compilation de l’extension personnalisée :

  1. ZEND_MODULE_API_NO :
  • Le ZEND_MODULE_API_NO dans bypass.c doit 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}'
  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 phpize pour configurer l’environnement de construction de l’extension personnalisée.

Construction de l’extension :

  1. Commandes de compilation :
  • Utilise phpize, ./configure, et make pour compiler l’extension.
  • Le fichier bypass.so résultant est ensuite situé dans le sous-répertoire des modules.
  1. Nettoyage :
  • Exécute make clean et phpize --clean après la compilation.

Téléchargement et exécution sur l’hôte victime :

  1. Compatibilité des versions :
  • S’assure que les versions API PHP correspondent entre les systèmes de l’attaquant et de la victime.
  1. Chargement de l’extension :
  • Utilise la fonction dl, contournant les restrictions en utilisant des chemins relatifs ou un script pour automatiser le processus.
  1. 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 dynamiquement bypass.so et appelle ensuite bypass_exec avec une commande passée via le paramètre de requête cmd.

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