web-dev-qa-db-fra.com

Est-ce que /wp-login.php?redirect_to [] est exploitable?

J'ai un site wordpress sur lequel j'ai exécuté un outil de test d'intrusion (le mode débogage était activé à l'époque)

Elle a signalé un problème (de gravité moyenne) en ce que des erreurs étaient affichées, et a cité

/wp-login.php?redirect_to[]=blah

comme déclenchant un avertissement: urlencode() s'attend à ce que le paramètre 1 soit une chaîne, tableau donné dans /home3/.../wp-includes/general-template.php à la ligne 340

Lorsque j'ai désactivé le mode débogage et rejoué la session, la redirection a eu lieu et m'a redirigé vers/Array

Ce qui me préoccupe, c'est que wordpress tente peut-être d'évaluer le nom du paramètre de chaîne de requête d'une manière exploitable.

Suis-je trop paranoïaque?

3
Simon Withers

Je pense que ce n'est rien d'inquiétant.

La cible de redirection est assainie et validée beaucoup. Pour être honnête, je pense que je n'ai jamais vu de code WordPress où de nombreuses vérifications ont été effectuées pour les vecteurs d'attaque les plus obscurs.

Enfin, lorsque vous convertissez un tableau en chaîne, la chaîne Array est renvoyée, comme vous l'avez déjà vu.

Les tableaux sont toujours convertis en chaîne "Tableau";

Source

Cela se produit dans _deep_replace .

Donc, mon opinion personnelle est que cela devrait aller. Voyons ce que disent les autres.

2
kraftner

Ce qui me préoccupe, c'est que wordpress tente peut-être d'évaluer le nom du paramètre de chaîne de requête d'une manière exploitable.

Pourquoi cette possibilité particulière?

Si vous regardez la source - et que l'erreur le laisse supposer -, ce qui se passe, c'est que le code WordPress tente de _urlencodele paramètre de requête redirect_to , qu’il s’attend à être une chaîne. Les crochets que vous avez ajoutés font de ce paramètre un tableau qui, traité comme une chaîne, est "Array".

Vous pourriez faire valoir que WordPress devrait vérifier le type des données avant d'essayer de les manipuler, mais je ne pense pas qu'il y ait quoi que ce soit exploitable. Essentiellement, le tableau que vous essayez d'insérer dans ce paramètre est converti par PHP en chaîne inoffensive "Array".

2
s_ha_dum