Pour commencer, Mais c'est quoi concrètement un serveur web ?
Avant de parler de comment les trois couches communiquent, clarifions une confusion fréquente : un serveur web, c’est à la fois une machine physique et un logiciel qui tourne dessus.
La machine, c’est du *hardware classique un *CPU qui calcule, de la *RAM qui stocke temporairement les données en cours de traitement, un disque dur qui garde les fichiers, et une carte réseau (*NIC) qui reçoit et envoie les paquets sur internet. Rien d’exotique : c’est un ordinateur, dans un rack, quelque part dans un datacenter.
Le logiciel, c’est Apache ou Nginx. Il tourne en permanence sur cette machine et fait une seule chose : écouter les requêtes qui arrivent sur le port 80 ou 443, puis y répondre. Sur le disque, deux zones coexistent : la zone publique (/var/www/html/) — les fichiers que le serveur a le droit de servir (ton index.php, tes images, tes CSS) — et la zone privée (/etc/, /var/log/, /home/) — les fichiers système qui ne devraient jamais être accessibles depuis le web.
Cette distinction zone publique / zone privée, garde-la bien en tête. On va y revenir quand on parlera du Path Traversal.
Voilà visuellement à quoi ressemble un serveur.
Maintenant qu’on sait ce qu’est la machine, voyons comment les logiciels qui tournent dessus s’organisent entre eux
Comprendre l’architecture 3-tiers, c’est comprendre où vivent les failles.
Ne pas comprendre cette architecture qu’on appelle souvent l’architecture 3-tiers ou pile LAMP/LEMP c’est comme essayer de crocheter une serrure sans savoir comment fonctionne le mécanisme à l’intérieur de la porte.
Pour ne plus jamais les confondre, imagine que ton site web est un restaurant.
Les trois rôles
1. Le serveur web — le garçon de salle
C’est le premier point de contact. Quand un client (ton navigateur web, comme Firefox ou Chrome) arrive, il ne parle pas directement au cuisinier. Il parle au serveur.
C’est quoi ? Un logiciel (les plus connus sont Apache et Nginx) qui tourne en permanence sur la machine. Son seul travail est d’écouter les requêtes qui arrivent sur le réseau (généralement sur le port
80pour le HTTP ou443pour le HTTPS).Son rôle : Tu lui demandes une page (ex:
● Si c’est une simple image ou un fichier texte fixe (du contenu statique), il va le chercher dans le disque dur et te le donne directement.GET /index.html).
● Si c’est une page dynamique (qui demande du calcul, comme une page de profil ou un panier d’achat), il dit : “Attends, je ne sais pas faire ça tout seul, je vais demander aux cuisines”.
2. Le Moteur du site / Langage Backend — le cuisinier
C’est l’intelligence du site web. C’est lui qui exécute la logique métier et prépare la page sur mesure pour le client.
C’est quoi ? Un interpréteur ou un programme (les plus connus sont PHP, Python, Node.js, Ruby). Dans le cas de DVWA ou de PortSwigger, c’est du PHP.
Son rôle : Il reçoit la demande transmise par le Serveur Web. Il lit le code source du site (les fichiers
.php). Le code lui dit par exemple : “Si l’utilisateur clique sur ‘Mon Profil’, va chercher son nom et sa photo”. Le cuisinier assemble les ingrédients, mais pour avoir les ingrédients frais, il doit ouvrir le frigo…
3. La Base de Données (Le Frigo / La Réserve)
C’est l’endroit où tout est stocké de manière organisée, sécurisée et persistante. Rien de dynamique n’est écrit “en dur” dans le code du cuisinier. Tout est dans la réserve.
C’est quoi ? Un système de gestion de données (les plus connus sont MySQL, MariaDB, PostgreSQL).
Son rôle : Il attend les ordres du cuisinier (via un langage appelé le SQL). Le cuisinier lui dit :
SELECT email FROM users WHERE id=1;. La base de données cherche dans ses tables (comme des feuilles Excel géantes), trouve l’information et la renvoie au cuisinier.
Le voyage complet d'une requête
Pourquoi c'est capital pour la sécurité
Maintenant que tu as ce schéma en tête, regarde où se situent les failles
Voici deux attaques que nous allons survoler et que je vulgariserai dans le prochain article.
Le Path Traversal : C’est une attaque où tu trompes le Cuisinier (PHP). Tu profites d’une variable mal protégée dans son code pour lui dire : “Hé, au lieu d’ouvrir le fichier ‘image.png’ du site, va me chercher le fichier /etc/passwd du système Linux”. Comme le cuisinier a les droits de lire les fichiers de la machine, il s’exécute et te donne un fichier système.
L’Access Control (Contrôle d’accès) : C’est quand le Cuisinier (PHP) oublie de vérifier l’identité du client avant d’aller chercher un ingrédient. Par exemple, tu demandes la page /admin, le serveur web la passe à PHP, et PHP va chercher les données admin dans le frigo sans jamais vérifier si tu avais le badge “Admin”.
Auteur: DamSecflow
Don’t Toast your Host

