Démonstration OWASP A04: Conception non sécurisée

# OWASP Top 10 2021

## A04:2021 - Conception non sécurisée

# Portail Utilisateur

## Connexion

## Profil Utilisateur

Bienvenue

### Panneau Administrateur

## Documentation Technique

### Conception et Vulnérabilités

Cette application est conçue pour démontrer des failles de conception non sécurisées en mettant l'accent sur les risques suivants :

#### 1. Contrôle d'accès client-side

Les droits d'accès sont validés uniquement côté client, ce qui signifie qu'un utilisateur malveillant peut manipuler le DOM pour accéder au panneau admin.

document.getElementById('adminPanel').classList.remove('hidden');

Un attaquant peut exécuter ce code dans la console pour afficher le panneau admin, même s'il n'est pas autorisé.

#### 2. Données sensibles exposées

Les données sensibles sont simulées côté client et non protégées par un mécanisme de chiffrement ou une validation serveur.

fetchSensitiveData(); // Charge les données simulées

Un attaquant peut appeler cette fonction directement pour visualiser les données sensibles.

#### 3. Absence de session sécurisée

L'état d'authentification est géré par une variable JavaScript (`currentUser`) qui peut être modifiée par un attaquant.

currentUser = { username: 'hacker', role: 'admin' };

Cette commande suffit pour simuler une élévation de privilèges.

### Comment exploiter les failles

1. Ouvrez la console du navigateur (`F12`).
2. Modifiez l'utilisateur actuel pour lui donner un rôle admin :
   currentUser = { username: 'hacker', role: 'admin' };
3. Affichez le panneau admin :
   document.getElementById('adminPanel').classList.remove('hidden');
4. Chargez les données sensibles en appelant :
   fetchSensitiveData();

### Solutions

Voici des solutions pour corriger ces failles :

- Valider les contrôles d'accès côté serveur.
- Implémenter des sessions sécurisées avec des tokens JWT.
- Ne jamais stocker de données sensibles dans le code client.

### Challenge : Exploitez la faille

Votre mission :

- Accédez au panneau admin en manipulant le DOM.
- Chargez les données sensibles via la console.
- Essayez de supprimer ou de modifier ces données.

Indice : Utilisez les fonctions exposées dans la console pour simuler une attaque réaliste.