4
minutes
Mis à jour le
16/9/2019


Share this post

Revivez le meetup Web Secure Paris pendant lequel j’ai appris à utiliser ZAP pour détecter les failles de sécurité d’une application, et les bonnes pratiques pour les éviter.

No items found.

Le 7 août se tenait la deuxième édition du Meetup Secure Web Paris. Cette série de meetups a pour objectif de partager les bonnes pratiques de sécurité lors du développement d’applications et de concevoir ou partager des outils permettant d’améliorer la sécurité des applications.

Dans cet article, je vais vous détailler ce que j’ai appris sur les bonnes pratiques pour concevoir un site sécurisé et sur l’utilisation de ZAP pour faire un audit de sécurité de son site. Retour sur les présentations de Michaël Mollard de Sipios, d’Yvan Phelizot d’Arolla et de Paul Molin de Theodo.

La gazette sécurité

Au début de chaque meetup, nous faisons un point sur l’actualité de la sécurité. Hier Michaël nous a présenté les faits qu’il considère comme les plus marquants du mois dernier :

Ce qui est incroyable avec la faille de 7-Pay, c’est que n’importe qui pouvait facilement réinitialiser le mot de passe d’un utilisateur en demandant à recevoir un lien de réinitialisation sur sa propre adresse mail !

C’est pour éviter ce genre de failles grossières qu’il est important de penser à la sécurité dès la conception d’une application.

Crafting Secure Softwares

A partir d’un exemple, un site web de location de VHS, Yvan nous a présenté quelques failles communes ainsi que les méthodes pour les éviter dans son code.

La première faille était une injection SQL dans le login. Celle-ci a soulevé deux problèmes :

  • L’affichage d’une exception à l’utilisateur.
  • La possibilité de se connecter à n’importe quel compte utilisateur grâce à la faille SQL.

Une bonne façon de concevoir une application est de ne pas afficher d’exception afin de donner le moins d’informations possible à l’attaquant. Quant aux failles SQL, il faut utiliser des prepared statements pour les éviter.

La deuxième faille permettait de faire exécuter des caractères spéciaux dans le terminal grâce à son nom d’utilisateur. Pour éviter (ou corriger !) ce genre de vulnérabilités, Yvan conseille d’avoir une liste blanche de caractères autorisés dans les entrées d’un utilisateur.

Enfin, la dernière faille présentée était un integer overflow dans le nombre d’articles commandés. Cette faille souligne l’importance de typer fortement son code; pour éviter de créer des failles ou de mélanger des types.

Remember, even the most secure design is rendered by a low-quality and insecure implementation, regardless of the number of security features the product employs

En résumé, Yvan nous a partagé 10 points de contrôle pour construire des applications sécurisées :

  1. Trust with caution
  2. Protect others
  3. KISS (Keep It Simple Stupid)
  4. Default deny
  5. Learn to learn
  6. Fail securely fast
  7. Least privilege/li>
  8. Separation of duties
  9. Fix security holes
  10. Practices defense in depth

Avoir les bonnes pratiques pour produire du code sécurisé est essentiel, mais comment s’assurer de ne pas introduire de vulnérabilité lors de l’ajout d’une nouvelle fonctionnalité ?

OWASP ZAP — Devenir un hacker en 10 minutes

ZAP pour Zed Attack Proxy est l’un des meilleurs outils pour tester la sécurité d’un site. Concrètement, c’est un proxy qui se place entre le navigateur et internet pour écouter (et modifier) les requêtes et données qui transitent. ZAP agit à la fois comme un scanneur passif; il écoute les requêtes et en renvoie d’autres pour découvrir le site, et comme un scanneur actif en transformant certaines requêtes; par exemple pour essayer des injections SQL.

ZAP possède de nombreuses fonctionnalités. Paul nous a présenté celles qui sont essentielles pour faire l’audit d’un site web. Le site à inspecter était Juice Shop, un autre projet de l’OWASP pour sensibiliser à la sécurité des sites.

Trois fonctionnalités de ZAP nous ont permis de découvrir plusieurs failles sur Juice Shop :

  • Le spidering du site : pour découvrir un document confidentiel non protégé.
  • Les points d’arrêts : pour modifier une requête “à la volée” et laisser une note de 0 au vendeur, lorsque celle-ci doit être contenue entre 1 et 5.
  • Le fuzzing : pour envoyer un grand nombre de requêtes rapidement avec des payload pré-écrits, et trouver les failles d’injection SQL et XSS.

Conclusion

Grâce à ce meetup je sais maintenant utiliser ZAP pour réaliser des audits de sécurité et je connais les bonnes pratiques pour concevoir une application sécurisée en tant que développeur !

Si les enjeux de sécurité vous intéressent, Secure Web Paris est le meet-up idéal pour vous ! Un meet up est organisé tous les premiers mercredi du mois, n’oubliez pas de vous inscrire ! https://www.meetup.com/fr-FR/Secure-Web-Paris/

Retrouvez les slides de présentations ici : https://bit.ly/2M9249t