web-dev-qa-db-fra.com

404 pages faisant écho à l'URI de la demande - risque de sécurité?

Je viens de remarquer que la page 404 par défaut de l'un de mes comptes d'hébergement affiche l'URI demandé.

<!--#echo var="REQUEST_URI" -->

Je me souviens vaguement d'avoir entendu ou lu que c'était une vulnérabilité potentielle. Cependant, il est difficile de croire qu'un fournisseur d'hébergement l'inclurait dans sa page 404 par défaut, le cas échéant. Alors, est-ce une vulnérabilité ou pas?

5
BenV

Faire écho à l'URI échoué peut permettre une attaque XSS (cela dépend de votre site) car l'URL pourrait être construite de manière à ce qu'un élément de JavaScript soit injecté et s'exécute sur votre site. En tant que tel, ce JavaScript injecté aurait accès aux cookies des utilisateurs et s’il était connecté, il pourrait être utilisé pour obtenir ses informations privées sur votre système.

Tant que l'URI est nettoyé (il n'est pas autorisé à inclure <ou> par exemple), cela devrait suffire.

Vous pouvez tester cela avec l'URI suivant:

/doesnotexist/"--><script language="javascript">alert("hello world")</script>

Il peut avoir besoin de quelques ajustements pour fonctionner (en supposant que peut être fait pour fonctionner)

6
Kris

Cependant, il est difficile de croire qu’un fournisseur d’hébergement inclurait cela dans sa page 404 par défaut s’il était

Ne soyez pas si sûr - j'étais avec un hôte très réputé (ou du moins je le pensais) qui a été piraté en raison d'une vulnérabilité non corrigée et chaque site de l'hôte a été supprimé par le pirate. Leur réponse - revenez à la dernière sauvegarde (72 heures) et espérons que personne ne le remarquera.

Cela dit, il y a eu 404 attaques XSS dans le passé, mais elles ne concernent généralement qu'un seul logiciel, pas un système entier. Je ne sais pas comment inclure l'URI aurait une incidence sur une telle attaque.

La seule chose à laquelle je puisse penser, est que si votre hébergeur web était vraiment médiocre, et que je demandais /gimma404.html?'); DELETE * FROM Users; -- et que le RequestURI soit en quelque sorte connecté à une base de données et non échappé, vous pourriez alors avoir un SQL Attaque par injection.

1
Mark Henderson

Tant que le REQUEST_URI est codé en HTML, il n'y a absolument aucun risque à l'afficher.

Enfait, il est généralement judicieux que la page 404 redirige l'affichage de l'URL de la demande d'origine afin que l'utilisateur puisse voir exactement ce qu'ils ont saisi. Cela les aide à voir s’ils ont fait une faute de frappe évidente. C'est la raison pour laquelle tant de pages 404 par défaut montrent cela - cela aide l'utilisateur.

1
Dan Diplo

Toute information que vous ne voulez pas que les gens voient est un risque pour la sécurité, mon conseil serait de ne jamais utiliser les 404 par défaut, non seulement ils ont l'air moche et n'offrent que très peu de fonctionnalités, mais ils peuvent quand même vous poser des problèmes de sécurité.

Jetez un coup d’œil à ce site - http://www.smashingmagazine.com/2007/08/17/404-error-pages-reloaded/ pour des idées sur ce que vous pourriez faire avec un 404.

0
Toby