ActivitesOWASP/A10Act1-francois_baille.md

121 lines
3.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Réponse aux questions sur le Fuzzing
**Q1. Le niveau de sécurité 1 permet-il déviter cette brèche dinformation ?**
Non, le niveau de sécurité 1 nempêche pas laccè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 saffiche sans vérification dauthentification.
```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 dinformation ?**
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 daccé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 sexé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
<Files "phpinfo.php">
Require all denied
</Files>
```
Restreindre l'accès via le pare-feu pour ne permettre l'accès qu'aux administrateurs connus, via leurs adresses ip par exemple.