Category

Technique

Category

Qu’est-ce qu’une attaque Cross Site Request Forgery ?

L’attaque CSRF (ou en français falsification de requête intersite) est une attaque qui oblige un utilisateur final à exécuter des actions non désirées et sans qu’il s’en rende compte sur une application web dans laquelle il est actuellement authentifié.
Les attaques CSRF visent spécifiquement les demandes de modification et non le vol de données, car l’attaquant n’a aucun moyen de voir la réponse à la demande falsifiée. Le résultat des actions est ce qui intéresse l’attaquant.

Ce type d’attaque s’appuie sur le fait que lorsqu’un utilisateur est authentifié sur une application, celle-ci lui fournit la plupart du temps un identifiant de session, stocké dans un cookie sur son navigateur.
A chaque fois que l’utilisateur envoie une requête vers le serveur, le navigateur envoie également automatiquement ce cookie de session. Vous trouverez dans l’article lié plus d’informations à propos des attaques CSRF.

Notez bien qu’il suffit que l’utilisateur soit resté connecté (sans avoir une page ou un onglet du site ouvert) pour qu’une attaque CSRF fonctionne.

Nous pensons souvent qu’un pare-feu suffisamment restrictif protège l’accès aux services non ouverts. Nous croyons aussi que seule une machine compromise peut donner accès au reste du réseau interne.

Et bien nous avons tort, et c’est ce que nous allons voir avec une vulnérabilité des applications web : le Server-Side Request Forgery (SSRF).

Qu’est-ce que les SSRF ?

A partir d’une application web vulnérable, les SSRF permettent d’interagir avec le serveur, afin d’en extraire des fichiers et de trouver ses autres services actifs. Mais cela ne s’arrête pas là. Il est également possible de scanner le réseau interne afin d’en cartographier les IP et Ports ouverts.

Durant nos audits il nous arrive encore très souvent de rencontrer des énumérations utilisateurs qui pourraient avec les bonnes méthodes être facilement évitées. Dans cet article, nous traiterons des énumérations d’utilisateurs sur les formulaires de connexion, de réinitialisation de mot de passe et de création de compte. Cependant, les énumérations utilisateur peuvent se trouver sur d’autres fonctionnalités, telles que, par exemple, des formulaires de recherches ou des envois de messages.

Sous PHP, la méthode principale pour gérer des sessions utilisateurs est l’utilisation de cookies de sessions appelés par défaut « PHPSESSID ». Lorsqu’un utilisateur se connecte sur une application, celle-ci demande la génération d’un identifiant de session au programme PHP présent sur le serveur Web. Celui-ci s’exécute et créé un code unique qu’il va stocker dans sa mémoire vive puis renvoyer au client grâce au header « Set-Cookie ». Les cookies étant conçus pour être automatiquement renvoyés dans chaque requête du navigateur vers le serveur, l’identifiant de session sera transmis systématiquement. Cette solution permet de gérer les cas classiques de connexion/déconnexion d’un utilisateur.

Cependant, ce type de fonctionnement ne permet pas de partager facilement un même compte pour s’authentifier sur plusieurs plateformes distinctes et le serveur a l’obligation de stocker l’état et les informations des sessions dans sa mémoire vive.

Mis à jour : 23 Déc 2020

Cet article ne remplace pas de bonnes connaissances en PHP, mais peut vous donner de réels bons conseils pour booster votre sécurité.
Il n’y aura ici rien à copier/coller directement dans vos fichiers PHP. Cependant, nous croyons que ces conseils et bonnes pratiques vous apporteront des bénéfices à long terme, en comprenant et en appliquant les différents points en fonction de vos besoins et de votre contexte.

Cet article est le troisième de notre série dédiée à la sécurité pour PHP.
Le premier article vous donne des indications pour la configuration de PHP, les mises à jour, le filtrage des données, ainsi que l’organisation du code.
Le second article traite de la protection contre les attaques les plus courantes.

Nous allons maintenant traiter des risques liés aux cookies, uploads, CRSF ainsi que de la sécurité par l’obscurité.

Mis à jour : 23 Déc 2020

Cet article ne remplace pas de bonnes connaissances en PHP, mais peut vous donner de réels bons conseils pour booster votre sécurité.
Il n’y aura ici rien à copier/coller directement dans vos fichiers PHP. Cependant, nous croyons que ces conseils et bonnes pratiques vous apporteront des bénéfices à long terme, en comprenant et en appliquant les différents points en fonction de vos besoins et de votre contexte.

Cet article est le deuxième de notre série dédiée à la sécurité pour PHP. Le premier article “Protéger votre site : Bonnes pratiques de sécurité pour PHP #1” vous donne des indications pour la configuration de PHP, les mises à jour, l’organisation du code ainsi que le filtrage/échappement des données.

Nous allons à présent examiner les attaques les plus courantes, ainsi que les moyens de s’en défendre.

Mis à jour 1. Déc 2020 PHP reste le langage de programmation côté serveur le plus populaire : il est utilisé par presque 80% des sites (source). Ce langage continue à être développée, et PHP 8 a été publié la semaine dernière ! Cette version apporte de nouvelles fonctionnalités et devrait renforcer la sécurité. Cependant, la sécurité de PHP se construit dès ses fonctionnalités centrales ‘historiques’. L’article qui suit ne remplace pas de bonnes connaissances en PHP,…