Ejemplo: test.php?p=test
da salida:
<p style="...">test</p>
Puedo inyectar cualquier cosa que no sea '<', cuando me inyectaron, me redireccioné. Entonces, ¿puede ser explotado?
Ejemplo: test.php?p=test
da salida:
<p style="...">test</p>
Puedo inyectar cualquier cosa que no sea '<', cuando me inyectaron, me redireccioné. Entonces, ¿puede ser explotado?
En este caso particular, el "<" Es necesario para un ataque. Tenga en cuenta que el "<" No es necesario para todas las especies de ataques XSS. Una buena referencia es aquí .
Como mencionó Ammar, en esta situación específica no creo que XSS sea posible. Sin embargo, si la visita a test.php?p=test
representa el siguiente HTML:
<p style="..." title="test">Some other stuff</p>
Un usuario malintencionado podría usar una URL como esta:
test.php?p=test" onmouseover="alert('xss')
renderizado:
<p style="..." title="test" onmouseover="alert('xss')">Some other stuff</p>
para ejecutar un ataque XSS. No funciona en su situación, pero debe ilustrar el hecho de que eliminar los corchetes no es suficiente para evitar XSS.
Como se mencionó en otros comentarios, debe poder inyectar '<' en este ejemplo particular. Probaría la codificación Unicode (entidades html).
Por ejemplo, inyecte <test
y vea si la respuesta del servidor contiene <test
.
Algunas veces la codificación de URL también funciona. Por ejemplo, algunos sitios en la lista negra de caracteres como &
o ;
para evitar vectores xss basados en codificación Unicode.
Para omitir este filtro, puede utilizar la codificación url.
http://www.example.com/search?q=%26%2360%3Btest
se traduciría a
http://www.example.com/search?q=<test
Si el conjunto de caracteres es UTF-7, la secuencia +ADw-
se puede usar para representar <
.
Las versiones actuales de Internet Explorer aún admiten UTF-7. Sin embargo, la página ya debería estar configurada como conjunto de caracteres UTF-7 o debería haber algún tipo de vector que le permita configurarlo para explotar esto.
Consulte esta respuesta y esta respuesta .
Aparte de eso, se necesita un carácter menor que para explotar esto en el contexto del elemento HTML. Este no es el caso con el contexto de atributo, donde si el contexto se puede cambiar a otro atributo, entonces se puede inyectar un script de soporte:
<img alt="usertext" />
establece usertext en " onmouseover="alert('xss')
entonces esto se procesará como
<img alt="" onmouseover="alert('xss')" />
y no se necesita <
.
Lea otras preguntas en las etiquetas web-application xss