Scanner les vulnérabilités d'un site web avec Arachni
Arachni est un scanneur de vulnérabilités web écrit en Ruby (cross-plateforme) par Tasos Laskos et permettant d’automatiser la détection d’un grand nombre de failles (XSS, SQL Injection, Local File Injection, Remote File Injection, etc.). Il est disponible sous la forme d’une interface web, une application console et une API REST.
Types de scans
Arachni permet de faire des scans actifs ou passifs.
Scans actifs
Ils testent la présence de failles sur les pages web visitées, par exemple :
- Envoie de code malicieux dans les formulaires pour tester les injections SQL ou XSS
- Injection de chemins vers des fichiers locaux dans les URLs (/etc/passwd par exemple)
Scan passifs
Ils sont non intrusifs et ne laissent pas de traces dans les bases de données des application testées. Ils se décomposent en 3 types de détection :
- Vérification de configuration (utilisation de HSTS, présence du flag HTTP_ONLY sur les cookies, etc.)
- Récupération d’informations (méthodes HTTP autorisées, dossiers communs, listing de répertoires, etc.) * Présence d’informations sensibles (présence d’adresses IP, de numéros de sécurité sociales américains, emails dans les pages HTML)
Configuration
La configuration d’Arachni fonctionne avec des “checks” et des profils.
Checks
Les checks correspondent aux actions qui seront effectuées par Arachni. Ils sont divisés en 2 catégories : Actif et Passif
Actifs
- Code injection
- Code injection (php://input wrapper)
- Code injection (timing)
- CSRF
- File Inclusion
- LDAPInjection
- NoSQL Injection
- Blind NoSQL Injection (differential analysis)
- OS command injection
- OS command injection (timing)
- Path Traversal
- Response Splitting
- Remote File Inclusion
- Session fixation
- Source code disclosure
- SQL Injection
- Blind SQL Injection (differential analysis)
- Blind SQL injection (timing attack)
- Trainer
- Unvalidated redirect
- Unvalidated DOM redirect
- XPath Injection
- XSS
- DOM XSS
- DOM XSS in script context
- XSS in HTML element event attribute
- XSS in path
- XSS in script context
- XSS in HTML tag
- XML External Entity
Plus d’informations sur Github
Passifs
- Allowed methods
- Backdoors
- Backup directories
- Backup files
- CAPTCHA
- Common administration interfaces
- Common directories
- Common files
- Cookie set for parent domain
- Credit card number disclosure
- CVS/SVN users
- Directory listing
- E-mail address
- Form-based File Upload
- HTTP Strict Transport Security
- .htaccess LIMIT misconfiguration
- HTML objects
- HttpOnly cookies
- HTTP PUT
- Insecure client-access policy
- Insecure cookies
- Insecure CORS policy
- Insecure cross-domain policy (allow-access-from)
- Insecure cross-domain policy (allow-http-request-headers-from)
- Interesting responses
- localstart.asp
- Mixed Resource
- Origin Spoof Access Restriction Bypass
- Password field with auto-complete
- Private IP address finder
- SSN
- Unencrypted password forms
- WebDAV
- Missing X-Frame-Options header * XST
Plus d’informations sur Github
Profils
Les profiles rassemblent ensuite un ou plusieurs “checks” au sein de la configuration d’un scan. Parmi les autres options disponibles, on retrouve par exemple :
- Exclure des paths
- Configuration de l’audit du site web
- Configuration du fingerprinting pour ne jouer que les payloads correspondants aux applications ou technologies utilisées sur le site web audité (gain de performance)
- Gestion des plugins * Gestion des paramètres HTTP (proxy, nombre de requêtes, etc.)
Lors du lancement d’un scan, il suffit ensuite de renseigner l’URL a auditée et le profil choisi.
Interfaces web
L’interface web est complète en permettant les actions suivantes :
- Configuration des comptes utilisateurs
- Gestion des profiles
- Gestion des agents permettant de déporter la charge sur d’autres machines
- Planification des scans * Lancement et consultation des scans
Lancement d’un scan
A noter qu’il est possible de déporter la charge du scan sur une ou plusieurs autres machines en fonction des agents configurés (dispatchers).
Liste des vulnérabilités détectées
Les vulnérabilités sont regroupées en fonction de leurs sévérités et de leurs types.
Détails d’une vulnérabilité
Dans chaque détail, il y a la requête HTTP envoyée ainsi que la réponse reçue avec une mise en évidence de la faille détectée (ici du XSS).
Mon avis
J’ai testé initialement Arachni pour effectuer une recherche automatisée de failles XSS sur une application volontairement vulnérable. Après avoir tester ZAP et xsser, Arachni semble être l’outil qui a détecté les failles que j’attendais. Attention toutefois à correctement configurer les profiles pour ne sélectionner que les éléments pertinents. Sans une configuration spécifique, le scan pourra durer plusieurs heures pour un site très simple. Les rapports sont complets et permettent l’identification et la correction rapide des problèmes.
Sources
- Github : https://github.com/Arachni
- Site web : http://www.arachni-scanner.com/
- Wiki : https://github.com/Arachni/arachni/wiki
- Benchmarks avec les autres outils : http://sectoolmarket.com/wivet-score-unified-list.html
Notes
Attention, les tests automatisés ne remplacent pas les tests manuels