Le protocole HTTP n'est pas chiffré

Objectifs

  • Connaître le protocole HTTP ;

  • Connaître les problèmes de sécurité du protocole HTTP.

Mise en situation

Le protocole HTTP permet de naviguer sur le Web mais il n'a recours à aucune mesure cryptographique. Il n'offre aucune assurance quant à la confidentialité et à l'intégrité des communications.

Toutes les informations communiquées via HTTP peuvent être consultées ou travesties par des tiers.

Ainsi, si on se limite à l'usage d'HTTP, un mot de passe ou un numéro de carte bleue communiqués via un formulaire web sont lisibles par tous les ordinateurs qui se chargent de la communication, ainsi que par tout attaquant qui souhaite espionner les échanges.

Le protocole HTTPS a permis de pallier cette limitation.

RappelInstallation d'un serveur web

Pour expérimenter les requêtes HTTP, il est fortement conseillé d'avoir un serveur web installé sur un VPS, comme Apache ou Nginx.

Dans les commandes qui suivent, il faudra simplement remplacer les URL par l'IP du VPS.

Voici comment installer très rapidement un serveur Nginx sous Debian ou Ubuntu:

1
# Installe Nginx
2
apt install nginx
3
# Nginx démarre automatiquement.
4
# Si ce n'est pas le cas :
5
systemctl start nginx

Pour un serveur Apache :

1
# Installe Apache
2
apt install apache2
3
# Nginx démarre automatiquement.
4
# Si ce n'est pas le cas :
5
systemctl start apache2

RappelLe protocole HTTP

Le protocole HTTP (Hypertext Transfer Protocol) est un protocole client-serveur standardisé par le W3C permettant d'accéder à des sites web. Les navigateurs sont les clients HTTP les plus connus. Plus généralement, ce protocole rend possible le transfert de données structurées du serveur vers le client ou du client vers le serveur.

RappelFaire une requête HTTP

La commande curl permet de lancer une requête HTTP. En ajoutant l'option -v, la requête et le retour du serveur seront affichés.

1
curl [URL ou IP du serveur]

Exemple

1
curl xkcd.com

On reçoit le code HTML de la page d'accueil du site xkcd.com.

FondamentalAbsence de confidentialité

Le protocole HTTP fonctionne sans aucun chiffrement.

Les requêtes sont envoyées en clair sur le réseau. Tous les tiers observant les paquets peuvent connaître le contenu des communications. Ces tiers voient la requête et la réponse du serveur.

AttentionMan in the middle

Un modèle classique d'attaque est le man in the middle. Il s'agit d'une attaque où l'attaquant se place au milieu d'un canal de communication et observe ou modifie les communications. Avec le protocole HTTP, il est très simple de réaliser ce type d'attaque compte-tenu de la non-confidentialité des communications.

Cette situation est dangereuse dans la mesure où les requêtes HTTP peuvent transporter des identifiants.

MéthodeComment le flux HTTP peut-être observé par un tiers ?

Les tiers pouvant observer les communications HTTP sont :

  • soit les ordinateurs par lesquels passe la requête (routeurs, FAI, etc.),

  • soit des attaquants.

Exemple

Voici deux solutions techniques permettant d'intercepter et analyser les paquets :

  • Wireshark : enregistre le trafic réseau. Par exemple, il est possible d'observer toutes les communications Wi-Fi. Cet outil peut être utilisé pour attaquer des personnes utilisant un réseau Wi-Fi public sans précautions.

  • Suricata : un système de détection d'intrusion qui réalise une introspection des paquets. Cette outil est utilisé par certains fournisseurs d'accès internet ou entreprises pour détecter des attaques. Cet outil peut extraire les informations de toutes les communications HTTP.

À retenir

  • HTTP est un protocole de base pour communiquer sur Internet.

  • HTTP n'offre aucune garantie de confidentialité.