XML Injection dans une requête soap - Java - Programmation
Marsh Posté le 29-04-2009 à 04:32:33
Qu'est ce que tu appelles un XML injection ?
Tu as envoyé toute la requête tel quel, non ?
Marsh Posté le 29-04-2009 à 11:33:52
bugsan a écrit : Qu'est ce que tu appelles un XML injection ? |
Oui j'ai envoyé la requête tel quel (en fait c'est un copier-coller depuis SoapUI), et comme tu peux le voir dans le requête ci-dessous j'ai envoyé 2 tags <lastname> (ligne 7 et ligne 9) c'est ça que j'appelle "XML Injection" ou si tu préfères "Tag Injection". Le serveur accepte ma requête et prend en compte le 2ème Tag et ignore le premier. Ce que je veux c'est que le serveur n'accepte pas une telle requête. Et comme je l'ai dit j'ai essayé de créer un XML Schema mais ça change rien à mon problème, donc je suis un peu dans une impasse.
Code :
|
Est-ce que tu as une idée ?? Ou quelqu'un d'autre peut m'aider ?? Merci !
Marsh Posté le 29-04-2009 à 19:32:04
Ce n'est pas du tout de l'injection de tags, puisque tu envoies toute la requête en entier.
Et il n'y a pas non plus de problème de sécurité.
Si tu veux rendre plus strict le format XML, tu peux jouer sur le schéma XSD (xsd:sequence, et xsd:element avec maxOccurs=1).
Mais encore faut il que le framework de webservice que tu utilises supporte la validation XSD.
Marsh Posté le 30-04-2009 à 09:22:27
bugsan a écrit : Ce n'est pas du tout de l'injection de tags, puisque tu envoies toute la requête en entier. |
Oui je suis d'accord avec toi, mais j'envoie toute la requête comme example pour que tout le monde puisse comprendre mon problème, maintenant si une telle requête est possible il est également possible d'injecter un tag dans une requête soap qui est intercepté et le serveur n'y verra que du feu et prendra en compte le tag que tu as injecté, maintenant pour ne pas entré dans les détails de comment un attaqueur peut faire ça et tout compliquer, j'ai simplement donné un example de qu'est-ce que je veux résoudre comme problème.
pour plus d'info (sous tag injection): http://www.owasp.org/index.php/Tes [...] _Injection --> donc ça existe quand même et c'est plus ou moins un problème
Bref on va pas débattre plus longtemps sur le sujet surtout que je suis de ton avis que je pense pas que ce soit un gros problème de securité mais si il est possible de trouver une solution je serais quand même super content.
Ensuite ce que tu as dit avec les schemas XSD c'est exactement ce que j'ai fait avec maxOccurs=1 mais justement ça a rien changé à mon problème mais maintenant ce que tu dis avec le framework de web service est vraiment interessant, c'est vrai qu'il ne supporte peut-être pas la validation XSD (parce que je suis à peu prêt sur que mon XSD est correct) mais maintenant est-ce que tu sais comment on peut vérifier cela ?? Et connaîs-tu un example ou ce "tag injection" n'est plus possible ??
Merci
Marsh Posté le 30-04-2009 à 19:03:36
L'exemple que tu donnes (ton lien) consiste en une injection dans un fichier XML existant. Rien à voir avec des webservices XML.
Marsh Posté le 01-05-2009 à 09:16:07
bugsan a écrit : L'exemple que tu donnes (ton lien) consiste en une injection dans un fichier XML existant. Rien à voir avec des webservices XML. |
Merci pour ta précision mais ça marche la même chose avec les web services et c'est également le même problème, les requêtes soap sont en XML, donc si tu as un problème (comme ici tag injection) avec un fichier XML tu l'as aussi avec les web services, la preuve ?? -> Mon example
Marsh Posté le 01-05-2009 à 13:41:14
Citation : ça marche la même chose avec les web services |
Non.
Citation : ... c'est également le même problème, les requêtes soap sont en XML, donc ... |
Non.
Citation : si tu as un problème avec un fichier XML tu l'as aussi avec les web services |
Non.
Réfléchit deux secondes, quel est la différence entre ca
Code :
|
et ca
Code :
|
Aucune.
Si je veux faire passer la valeur Kennedy, j'ai juste à mettre Kennedy dans le bon tag. C'est un "Service", par définition ...
Marsh Posté le 27-04-2009 à 16:44:36
Bonjour,
J'ai un problème avec les web services en Java.
J'ai créé ce web service:
1. Interface du web service
2. Enpoint du web service
Je déploie ensuite mon application EAR sur Sun Java Application Server (ou Bea weblogic ça change rien), le déploiement se déroule correctement et j'utilise SoapUI pour tester les méthodes de mon web service, tout fonctionne correctement, [B]là où est mon problème est que je peux faire un XML injection (ou Tag injection) avec ma requête soap.[/B]
Si je prend l'exemple ci-dessous, on peut voir ma requête soap qui est envoyé à mon serveur depuis SoapUI.
Comme vous pouvez le constater j'ai réussi à injecter 2 tags <lastname>, mon serveur accepte cela et prend en compte le 2ème tag, c'est-à-dire dans cette exemple le nom "Kennedy" sera utilisé et non pas le nom "Brown".
J'ai essayé d'utiliser des XML schema mais rien ne change j'ai toujours la possibilité d'envoyer une requête avec 2 tags de même nom et c'est toujours le dernier tag qui est pris en compte par le serveur.
Je voudrais donc savoir si quelqu'un pouvait m'aider en me disant comment il est possible de ne plus avoir ce genre de problème, c'est-à-dire qu'il ne soit plus possible de créer une requête soap avec 2 même nom comme paramètre ou d'ignorer le 2ème tag, etc ???
Merci d'avance.
Message édité par rohrix le 27-04-2009 à 16:52:55