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

start_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

liste_vulnerabilites

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é

details_vulnerabilite_1 [details_vulnerabilite_2

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

Notes

Attention, les tests automatisés ne remplacent pas les tests manuels


Voir également