Comment tromper les défenses pour effectuer une attaque SQL avec JSON

(Pour Alessandro Rugolo)
05/04/24

Comme nous l'avons vu précédemment, les SQLi restent redoutables malgré leur âge. Si quelqu'un a manqué les informations de base sur SQLi, je vous recommande de jeter un œil au premier article : Attaque par injection SQL : qu’est-ce que c’est ?

Naturellement, l'industrie de la sécurité a développé des outils pour lutter contre SQLi, ce sont des applications capables de filtrer les requêtes web et de déterminer avec une bonne approximation s'il s'agit de requêtes légitimes ou de tentatives d'attaque.

Naturellement, les hackers ne se sont pas non plus laissé décourager et ont trouvé toute une série d'astuces pour "contourner" les défenses, parmi lesquelles l'attaque appelée JSON – Contournement SQL.

Essayons de comprendre de quoi il s'agit, mais d'abord quelques mots sur JSON.

JSON est un format d'échange de données basé sur un sous-ensemble du langage de programmation JavaScript, en fait il signifie JavaScript Object Notation.

Au fil du temps, JSON est devenu le format le plus utilisé dans l'échange de données et les bases de données ont inclus la prise en charge de JSON dans SQL. La même chose n'est pas arrivée à de nombreux outils de sécurité qui sont par conséquent incapables d'identifier les tentatives d'attaque SQLi réalisées avec cette technique. 

Par exemple, si l'on considère une application web protégée par un WAF et que l'on tente de mener une attaque SQLi pour tenter d'exfiltrer des données auxquelles nous n'avons pas accès, les contrôles WAF sont généralement capables d'identifier la requête inappropriée et de bloquer la tentative. .d'attaque. Cependant, si une attaque est tentée à l'aide d'une chaîne au format JSON, le WAF est trompé en ne pouvant pas comprendre que la chaîne contient une commande SQL alors que la base de données est capable d'interpréter correctement la commande car elle prend en charge la syntaxe JSON.

Résultat : les principaux producteurs de WAF (Palo Alto Networks, Amazon Web Services, Cloudflare, F5 et Imperva) ont dû agir en 2022 en insérant des règles pour garantir le contrôle de la syntaxe JSON.

L'équipe de recherche CLAROTY TEAM82 a découvert ce nouveau type d'attaque.

Maintenant, étant donné qu'il s'agit d'une attaque assez récente, je suggère à tous ceux qui utilisent un WAF pour protéger leurs services WEB de faire réaliser des tests spécifiques pour vérifier s'ils sont protégés par JSON SQL Bypass.

Nombreux seront ceux qui penseront qu'il n'y a pas lieu de s'alarmer car il s'agit d'une attaque très complexe à mener : je conseille plutôt à ces derniers d'y prêter une attention particulière car SQLMap permet de rechercher automatiquement les sites vulnérables à l'attaque JSON SQL Bypass. 

SQLMap, outil opensource simple d'utilisation... Non, c'est une autre histoire !

Pour en savoir plus:

- https://www.picussecurity.com/resource/blog/waf-bypass-using-json-based-...

- https://www.json.org/json-it.html

- https://claroty.com/team82/research/js-on-security-off-abusing-json-base...