web-dev-qa-db-fra.com

XSS sur un élément d'entrée avec style = "display: none"

Supposons que seuls les guillemets doubles fournis par l'utilisateur soient autorisés dans une balise input dont l'attribut style est défini sur display: none.

Quelque chose comme ça:

<input type="text" style="display: none;" value="aa" autofocus/onfocus="Prompt(1)">

Étant donné que le point d'injection se trouve derrière l'attribut style, est-il toujours possible d'obtenir XSS en déclenchant un gestionnaire d'événements?

17
Utkarsh Agrawal

Vous pouvez toujours utiliser la même approche qui peut être utilisée pour entrée cachée , mais cela nécessite pas mal d'ingénierie sociale car elle est difficile à déclencher.

Vous pouvez cependant utiliser un attribut d'événement différent qui peut être plus facile à déclencher. oninvalid vient à l'esprit car il ne nécessite pas que l'élément soit affiché:

<form>
<input type="text" style="display: none;" value="aa" oninvalid="alert(1)" pattern="b">
<input type="submit" value="Submit">
</form>
14
tim

Semblable à ce qui a été mentionné avec accesskey, vous pouvez faire déclencher onclick pour les éléments cachés en utilisant les éléments label.

Lorsque vous cliquez sur <label for="some-id">, le navigateur recherchera la première entrée avec cet élément et effectuera un clic, même s'il est masqué. Un cas d'utilisation légitime pour cette fonctionnalité est la case à cocher/les entrées radio où l'étiquette est utilisée pour indiquer l'état, comme les sélecteurs de fréquence sur page des paramètres de messagerie de ce site .

Imaginez que vous ayez un formulaire qui ressemble à ceci:

<input type="text" style="display:none" value="" onclick="alert(1)">
<label for="field">Name</label>
<input type="text" id="field">

La valeur, " id="field entraînerait une page ressemblant à ceci:

<input type="text" style="display:none" value="" id="field" onclick="alert(1)">
<label for="field">Name</label>
<input type="text" id="field">

Vous recevrez une alerte si l'utilisateur clique sur "Nom". La fréquence à laquelle les utilisateurs cliquent sur l'étiquette dépendra de beaucoup de choses, mais certaines conceptions de sites peuvent nécessiter de cliquer sur une étiquette pour accomplir une tâche donnée.

Cela dépend également fortement de l'ordre des pages. Le placement de l'entrée cachée par rapport à l'entrée légitime est important, ainsi que le fait que l'entrée cachée ait un identifiant et où elle se trouve par rapport à la valeur.

3
Brian Nickel