Je vous présente ici la démarche à opérer pour effectuer des tests d’intrusion applicatifs.
1. Lister les ports ouverts de l’hébergement
Il est très simple d’obtenir l’IP de votre hébergement en résolvant la valeur TXT A de votre site web.
Vous pouvez récupérer l’IP ici: https://www.whatsmydns.net
Ensuite, avec la commande UNIX « nmap » on obtient la liste de tous les ports ouverts pour cette IP.
Rappelez-vous nous avons parlé comment limiter l’ouverture de vos ports dans l’article : « Sécurité: Tests d’intrusion applicatif« .
2. Découverte de chemins
L’objectif est de découvrir à l’aide d’un outil, les chemins par défaut ou connus présents sur une application.
On utilisera l’outil UNIX « nikto« .
L’exécution permet de découvrir la présence d’un server-status ou encore d’un balancer-manager ainsi que des fichiers par défaut de Apache ou Ngnix.
Ici commence, une liste d’informations potentiellement offerte aux hackers puisqu’ils ont connaissance du type du serveur web, de sa version etc.; et donc potentiellement des failles connues.
3. Listage de répertoire
Il s’agit là, de lister les répertoires fréquemment nommés: /images, /connexion etc., etc.
Nous utilisons pour cela un outil UNIX qui prend en paramètre un dictionnaire de noms de répertoires fréquemment utilisés (concrètement un dictionnaire de répertoires sous la forme d’un fichier .txt).
L’outil lancé par une ligne de commande sur le domaine du site, va peut être permettre de découvrir un lien vers une page de connexion ou encore un répertoire d’images (problème de confidentialité). On peut découvrir des merveilles à exploiter.
4. Fuite d’informations
La stratégie est de divulguer le moins possible d’informations quant au type de serveur web, de moteur de Servlets (Tomcat par exemple), ou de serveur d’application (JBoss, Websphere, etc). Dans la mesure, où il semble logique que c’est plus facile d’identifier les failles connues sur un tel type de serveur ou de version.
Pour ce faire, il s’agit de mettre en place dans la configuration du serveur web Apache2, les instructions suivantes:
ServerTokens Prod
ServerSignature Off
On vérifiera également si des liens de l’application font référence à des URL pouvant permettre de lister tous les articles, utilisateurs d’un site via un changement d’un paramètre d’une URL GET.
5. Erreurs verbeuses
Les erreurs verbeuses peuvent être utiles à un attaquant afin de mieux comprendre le fonctionnement et l’architecture technique d’une application.
Une page qui n’existe pas va par exemple vous fournir dans le meilleur des cas la version du serveur web ou celle du serveur applicatif. Encore une fois une mine d’information qui vont permettre de cibler l’attaque.
Un exemple sur axa.fr: https://www.axa.fr/hello
On y découvre, le type de technologie utilisée pour les développements, le type de serveur web et sa version, le type de serveur application, le type d’OS, le mode d’infrastructure, etc.
Pour ce faire, on mettra en place au niveau du serveur web et au niveau du serveur applicatif un paramétrage pour rediriger les erreurs vers de belles pages HTML en indiquant que la page n’est pas connue. De ce fait aucune information ne sera divulguée. Il ne faut divulguer aucune information technique à un potentiel attaquant.
6. Fuite de données
On entend par là la simulation d’un vol de données.
Dans la plupart des cas, le vol d’information ne peut se faire qu’une fois qu’on a une session de connexion. Mais si l’on considère que le hacker a obtenu un cookie de connexion ou encore qu’il s’agit d’un employé qui maîtrise un peu le web, il aura vite fait de récupérer un tas d’informations.
Ceci se produit dans la plupart des cas quand l’accès aux données est une URL avec en paramètre un id qui fournit l’information d’un article, d’une personne etc.
7. InjectionXSS
On peut se prémunir aisément de ce type de faille, si la configuration du serveur web est bien faite.
8. Enumération d’utilisateurs
9. Relais d’emails
10. Cookies
11. Configuration SSL
12. Injection SQL
13. Redirection arbitraire
Mise à jours et correctifs
Copyright © 2018 – Laurent Doulliez.
-
Previous Post
Sécurité: Tests d’intrusion d’applications et sites web