Ajouter francois_baille.md
This commit is contained in:
commit
1dd46e8608
120
francois_baille.md
Normal file
120
francois_baille.md
Normal file
@ -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
|
||||||
|
<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.
|
Loading…
x
Reference in New Issue
Block a user