Necesito ayuda para verificar si los parámetros son sensibles a las inyecciones de XSS en una página web generada por angularjs .
Hoy en día, muchos sitios web utilizan angularjs para deportar la construcción de la página del cliente en el lado del cliente (por lo que este trabajo ya no tiene que realizarse en el lado del servidor).
Entonces, cuando realizo una solicitud HTTP, el servidor responde con un código fuente que es una plantilla de angular para construir la página. Por lo tanto, esta respuesta del servidor no corresponde a la página web final que puedo ver después del procesamiento angular.
al usar CTRL + U (mostrar código fuente), este es el mismo problema, solo veré la respuesta del servidor (antes del procesamiento angular).
Al usar Firebug o la consola de desarrollo web, solo puedo ver un tipo de "render" del código fuente en bruto.
Por ejemplo, si un intento de inyectar <script>
en un parámetro, después del procesamiento angularjs, tal vez <script>
se desinfectará en <script>
.
Pero, en la consola de desarrolladores web (o en firebug). Veré <script>
, incluso si <
y >
están desinfectados (porque <
y >
se interpretan y se me imprimen humanamente).
Por lo tanto, esto es muy difícil de verificar si mi patrón de inyección se escapa o no (está bien, no veo una ventana emergente, así que supongo que se escapa algo). Estoy buscando una manera de obtener fácilmente el código fuente en bruto de la página después de que angularjs construyó la página final.
He escuchado sobre phantomjs pero no estoy seguro de si esto cubre exactamente mis necesidades y quizás haya una forma más fácil o rápida
EDITAR:
Sé que angular tiene sus propias reglas de escape. Pero he logrado inyectar código javascript dentro de un parámetro y ejecutarlo en otro lugar (donde se muestra en otra página web). Así que sé que algunas partes del sitio web no están protegidas.
En una página web específica, se muestra el parámetro pero no se ejecuta el javascript, así que supongo que se escapan algunos caracteres especiales. Y quiero saber cuáles.
Firefox y Chrome inspector me dan la misma vista:
<span ...>aaaaaa<script>alert(1);</script>aaaaaa</span>
Finalmente, he encontrado que si hago un clic derecho y "copia html" (chrome) o "edito" firefox. Puedo ver el código fuente en bruto que me muestra lo que realmente se escapó:
<span ...>aaaaaa<script>alert(1);</script>aaaaaa</span>
Para la pequeña historia, encontré esto al querer copiar el extracto del código en un comentario en security.stackexchange.com ^^