Je suis en train d'exécuter un waf en face d'un tas de webapps et nous avons testé les applications réglementés, et nous souhaitons améliorer nos tests en présentant une sorte de livelogs aux testeurs. Quelles informations, de Server-View, pourraient aider les pentasters?
L'objectif n'est pas de garder les testeurs, mais de trouver tout moyen possible de contourner la machine à protections et les protections internes.
Edit: C'est simplement un banc d'essai WAF. Les vulns dans les applications sont connus et marqués principalement comme wontfix [! Sic!]. Vous savez, c'est l'un de ce "naturel cultivé" - Java-App de la fois ...
Votre approche doit être deux fois:
Technique :
Vérifier:
<img src=0 onerror=alert(1) />
au lieu de <script>alert(1)</script>
)Avis :
[.____] Assurez-vous que le client comprend qu'un waf n'est qu'un plâtre collant et ne peut pas réparer un membre cassé. Si l'application est cassée de manière exploitable, un waf peut empêche l'attaque ou atténuer une partie de l'impact, mais il n'y a aucun moyen d'être sûr si Cela sera efficace.
C'est aussi une épée à double tranchant, dans lesquelles des personnes supposent souvent qu'un virus qu'un waf rend une volonté inexploitable toujours soit inexploitable et donc ne besoin d'être corrigé (au moins avec n'importe quelle hâte). Navigateurs et HTML/CSS/JavaScript/SQL/XML/XML/Langues côté serveur, etc. Évolez constamment, de sorte que de nouvelles techniques d'exploitation peuvent venir de même que de vieux bugs exploitables.
Un point supplémentaire que j'aimerais faire: Si le test est destiné à la web-application, et non spécifiquement destiné à la solution de la CAF qu'ils ont déployés, alors je recommande vivement de demander au client de désactiver le désactivation du client. le WAF sur son site de stadification pendant la durée du test. Le laissant sur le fait de vous rendre beaucoup plus difficile pour vous de leur donner une estimation raisonnable de la posture de sécurité de l'application, ce qui signifie qu'ils obtiennent moins de valeur du test. S'ils sont vraiment intéressés à tester la machine à tester, ils pourraient effectuer une journée de test supplémentaire par la suite qui compare l'exploitabilité des problèmes trouvés avec et sans la CAF être activé.
Il existe trois approches pour attaquer une application Web derrière un pare-feu d'application Web (WAF). Si vous regardez Exploits de contournement WAF existants Vous pouvez voir qu'ils décomposent dans deux catégories principales. Vous pouvez contourner un ensemble de règles, car il est trop restrictif ou ne correspond pas avec précision une attaque réelle, ni attaquer le pré-processeur qui contournera chaque masse de règles. Il existe une troisième catégorie de contournement de la CAF, qui ne nécessite pas d'exploit de contournement de la machine à contourner.
Les attaques de pré-processeur de la CAF visent à essayer d'obscurcir ou de supprimer une charge utile d'attaque d'une demande avant d'être traitée par les ensembles de règles de la CAF. Voici deux exploits qui sont des attaques de pré-processeur de la CAF:
PHPIDS avait un pré-processeur "Supprimer des doublons" peut être utilisé pour obscurcir toute charge utile dupliquée 33 fois. (Disclaimer: C'est mon exploit)
IBM WebSphere avait un pré-processeur "Supprimer des commentaires" non sécurisé Peut être utilisé pour obscurcir toute charge utile.
Les attaques de règles de règles de la CAF exploitent un peu de règles qui permettent à un attaquant de soumettre une chaîne d'attaque valide. Dans ce cas, les règles sont trop simplistes qu'une attaque peut être modifiée pour éviter la détection. Il existe deux directions pour attaquer une application Web derrière un pare-feu d'application Web.
Une direction est d'essayer d'exploiter une vulnérabilité commune, telle que XSS ou SQLI. Déterminez la règle que vous avez violée et essayez de modifier votre charge utile d'attaque pour contourner cette règle. Les règles peuvent être vérifiées à l'aide d'un Regex Debugger , Regex Buddy est mon outil préféré pour ce processus. Une fois que vous êtes en mesure d'exploiter SQLI, recherchez des vulnérabilités SQLI dans l'application. Par exemple, si vous avez eu une chaîne modifiée qui exécuterait sleep(30)
sur une base de données MySQL sans être détectée par le WAF, vous pouvez utiliser cette chaîne à Fuzz pour aveugle SQLI dans l'application. Voici un exemple de charge utile d'injection SQL modifiée pour contourner Mod_Security . Ceci est une approche Blackbox où vous n'avez pas accès à l'application Web, mais l'attaquant doit toujours accéder au WAF.
L'autre direction est l'inverse, exploitez l'application Web avec une vulnérabilité comme SQLI sans le WAF, puis essayez de créer une chaîne d'attaque pour exploiter cette vulnérabilité sans être détectée par le WAF. Ceci est une approche gris-box.
La troisième méthode d'attaquage d'une application Web derrière un appareil à la machine est d'éviter tout le problème. Il est impossible pour un waf de détecter chaque attaque . Il y a des vulnérabilités communes dans les applications Web que les Wafs ne peuvent pas prévenir. CSRF, assignation de masse , référence d'objet direct insécurité, clic-jacking, oracles cryptographiques, erreurs de logique d'authentification/autorisation ... Utilisez votre imagination.