commit 1dd46e86084b66dfe1e34cbb79b0ab9568511d57 Author: francois.baille Date: Mon Jan 27 16:28:10 2025 +0100 Ajouter francois_baille.md diff --git a/francois_baille.md b/francois_baille.md new file mode 100644 index 0000000..0602f4b --- /dev/null +++ b/francois_baille.md @@ -0,0 +1,120 @@ +# Réponse aux quetions sur le Fuzzing + +**Q1. Le niveau de sécurité 1 permet-il d’éviter cette brèche d’information ?** + +Non, le niveau de sécurité 1 n’empêche pas l’accès non autorisé à la page `phpinfo.php`. + +Dans le code source, on voit que pour les niveaux `0` et `1`, la variable `$lShowPHPInfo` est définie sur `true`, ce qui signifie que la page s’affiche sans vérification d’authentification. + +```php +case "0": +case "1": + $lShowPHPInfo = true; +break; + +``` +Un attaquant peut simplement accéder à l'URL `http://serveur/mutillidae/phpinfo.php` et voir des informations sensibles comme : + +- La version de PHP installée (ex. PHP 7.0.33). +- Les chemins des fichiers de configuration (ex. `/etc/php/7.0/apache2/php.ini`). +- Les extensions PHP activées (ex. `mysqli, curl`). + +Cela facilite les attaques par reconnaissance, comme l'exploitation de vulnérabilités connues de certaines versions de PHP. + +---------- + +**Q2. Le niveau de sécurité 5 permet-il d’éviter cette brèche d’information ?** + +Oui, le niveau de sécurité 5 bloque l'accès aux utilisateurs non administrateurs. + +Avec le niveau de sécurité 5, le code effectue une vérification sur la session utilisateur : + +```php +case "5": + if(isset($_SESSION["is_admin"]) && $_SESSION["is_admin"]){ + $lShowPHPInfo = true; + } +break; + +``` + +Cela signifie que **seuls les utilisateurs ayant la variable de session `is_admin` définie sur `true`** pourront accéder à la page. + +Cela renforce la sécurité en limitant l'accès aux seuls administrateurs authentifiés. + +---------- + +**Q3. Expliquer le mécanisme de sécurité mis en œuvre dans le code source. Tous les utilisateurs ont-ils interdiction d’accéder à cette page ?** + +Le mécanisme repose sur la gestion de session PHP. Voici les étapes : + +1. Vérification du niveau de sécurité défini dans la session : + +```php +if(isset($_SESSION["security-level"])){ + $lSecurityLevel = $_SESSION["security-level"]; +}else{ + $lSecurityLevel = 0; // Par défaut niveau 0 (insecure) +} + +``` + +2. Application des règles selon le niveau de sécurité : + + - Niveau `0` et `1` : accès libre. + - Niveau `2` à `5` : restriction d'accès en fonction du rôle admin. +3. Contrôle basé sur la variable de session `$_SESSION["is_admin"]` : + + +```php +if(isset($_SESSION["is_admin"]) && $_SESSION["is_admin"]){ + $lShowPHPInfo = true; +} + +``` +Non, tous les utilisateurs ne sont pas interdits. +- Seuls les administrateurs peuvent y accéder aux niveaux de sécurité supérieurs. +- Si l'attaquant parvient à manipuler la session (ex. via une faille XSS), il pourrait contourner cette sécurité. + +---------- + +**Q4. Proposer une solution de sécurité basée sur la configuration du fichier php.ini du serveur Web.** + +**Solution :** +Pour empêcher totalement l'accès à la page `phpinfo.php`, même si elle est accessible via le Web, on peut désactiver la fonction PHP `phpinfo()` en modifiant le fichier de configuration `php.ini`. + +Ouvrir le fichier de configuration PHP sur le serveur + +```bash +sudo nano /etc/php/7.0/apache2/php.ini + +``` + +Ajouter ou modifier la ligne suivante pour désactiver la fonction + +```ini +disable_functions = phpinfo + +``` + +Redémarrer le serveur Apache pour appliquer les changements + +```bash +sudo systemctl restart apache2 + +``` +Avec cette configuration, même si un attaquant accède au fichier `phpinfo.php`, la fonction `phpinfo()` ne s’exécutera pas, évitant ainsi la divulgation d'informations sensibles. +Cela renforce la sécurité en limitant les fonctionnalités exposées par le serveur PHP. + +**Autres mesures de sécurité recommandées :** + +- Supprimer ou restreindre l'accès au fichier `phpinfo.php` via la configuration Apache : + +```apache + + Require all denied + + +``` + +Restreindre l'accès via le pare-feu pour ne permettre l'accès qu'aux administrateurs connus, via leurs adresses ip par exemple.