* Quand safe mode est actif, PHP vérifie que le propriétaire du script courant est le même que le propriétaire des fichiers ou dossiers qui seront manipulés par ce script.
* A l'appel de fonctions de type [require_once](http://php.net/manual/fr/function.require-once.php) ou [fopen](http://php.net/manual/fr/function.fopen.php)
* le chemin vers le fichier est analysé
* si le fichier est à l'extérieur des dossiers spécifiés
* PHP refuse d'y accéder
* les liens symboliques sont résolus
* il n'est pas possible d'outre-passer cette restriction avec un lien symbolique
*[CVE-2014-7169](http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2014-7169), which NIST says "exists because of an incomplete fix for CVE-2014-6271."
* existe depuis le lancement du logiciel il y a 22 ans
* interpréteur par défaut GNU/Linux et pas mal d'Unix libres
## explications
```shell
(){ 42;};echo; /usr/bin/id
```
***() { 42;}** fonction qui "fait" 42
***; echo** évite des erreurs serveur dans certains cas
***; /usr/bin/id** payload juste pour la PoC
* exécution de commandes arbitraires avec les privilèges du user apache
## explications
* ne dépend d'aucun appel système dans le script CGI
* le code est exécuté lors de la préparation des variables d'environnement
* ces variables peuvent contenir des fonctions appelable par le script
* mais en fait tout code hors fonction était exécuté ...