
Un problème dans Data Illusion Survey Software Solutions NGSurvey v2.4.28 et versions antérieures permet aux attaquants de provoquer un déni de service (DoS) via un sondage conçu à cet effet.
ngSurvey version 2.4.28 et inférieures est vulnérable à un déni de service si un sondage contient un « champ de texte », un « champ de commentaire » ou des « coordonnées ». Le problème existe parce que les champs n'incluent pas de limite de caractères. Un attaquant peut soumettre un nombre infini de caractères dans les champs. Lors des tests, l'application Docker a planté lors de la soumission de la requête. Dans d'autres cas, la réponse au sondage était tout de même soumise. Lorsque l'administrateur ngSurvey tente de consulter les données des répondants ou d'effectuer un export, le navigateur web utilise une quantité excessive de RAM ou le serveur renvoie une erreur interne (500). Ce qui rend les données du sondage inaccessibles, du moins depuis l'interface web. Même si l'administrateur ngSurvey définit une limite de caractères sur la réponse, l'exploitation reste possible car la vérification n'est effectuée que côté navigateur client.
Remarques : La question « curseur » peut également être vulnérable avec un grand entier au lieu d'une chaîne de caractères. Cela n'a pas pu être confirmé dans mon environnement local.
dospayload (n'importe quoi d'autre fonctionnera, mais j'utiliserai cette chaîne pour la démonstration).import requests, ajoutez le code suivant dospayload= "A" * 123456789.burp0_json. Elle ressemblera à ceci "value" : "dospayload"."value" : dospayload.Le code final devrait ressembler à ceci :

Je n'ai pas trouvé de moyen de différencier les champs de texte ou de commentaire des autres types de réponses (choix unique, liste déroulante, etc...). Je pense qu'ils sont identifiés par l'application via leur ID. Si vous trouvez un moyen de créer un script fonctionnel qui prendrait une URL en entrée et effectuerait les étapes d'exploitation, je serai heureux de le référencer.