Detección XSS basada en DOM principal usando python

3

Estoy trabajando en un proyecto para hacer una herramienta de escaneo XSS usando python.

Tengo una url de muestra: http://www.foo.bar/index.php?ids=111

Descubrí que tiene una vulnerabilidad por http://www.foo.bar/index.php?ids="><SCrIpT>alert('XSS')</ScRiPt>

Un básico diferente del url normal y xss url es un cuadro de alerta que se ha mostrado en el navegador. Pero cuando utilizo python, ¿cómo puedo ver eso o detectar qué URL es una vulnerabilidad?

Hay muchas herramientas XSS como: wapiti, w3af, ... ¿Pero cómo funciona? ¿Qué es el escaneo principal xss?

He probado la biblioteca de solicitud de python:

import requests

xss_url = 'http://www.foo.bar/index.php?ids="><SCrIpT>alert('XSS')</ScRiPt>'
r = requests.get(xss_url);
print r.text

normal_url = 'http://www.foo.bar/index.php?ids=111'
t = requests.get(normal_url);
print t.text

Pero el resultado de r.text y t.text es el mismo.

    
pregunta fluke-ng 05.10.2014 - 19:00
fuente

2 respuestas

1

No puedo analizar tu problema, ya que diste una URL falsa para probar XSS. Aquí hay una URL real que demuestra una vulnerabilidad XSS:

Al usar la primera tarea, esta es una URL que tiene una vulnerabilidad XSS:

Usando solicitudes de la biblioteca de python, podemos solicitar esta página:

>>> import requests
>>> xss_url = http://www.insecurelabs.org/Task/Rule1?query=%3Cscript%3Ealert%28%27XSS%27%29%3C%2Fscript%3E
>>> r_xss = requests.get(xss_url)
>>> print r_xss.text

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title></title>
    <link href="/Content/Task.css" rel="stylesheet" type="text/css" />
    <script src="/Scripts/jquery-1.5.1.min.js" type="text/javascript"></script>
    <script src="../../Scripts/Task.js"></script>
</head>
<body>
    <div class="page">
        <section id="main">
            <a href="/Task" class="back">Back to task list</a>

    <h1>Task 1 - between tags</h1>

    <form method="get" action="">
        Search: <input type="text" name="query" value="&lt;script&gt;alert(&#39;XSS&#39;)&lt;/script&gt;"/><input type="submit" value="Search" />
    </form>
    <br /><br />

    <div>
        Searched for <script>alert('XSS')</script> <br />
        Found nothing.
    </div>    
    ...

Como puede ver justo arriba donde truncé el resto del contenido HTML, está el texto Searched for <script>alert('XSS')</script> , que es la vulnerabilidad de XSS, ya que es un <script> completamente formado. Tenga en cuenta que requests solo realiza la solicitud HTTP (es decir, solicita la fuente de la página HTML desde el servidor web sin intentar procesarla o renderizarla) y no ejecuta ningún javascript, no verá ninguna ventana emergente de alerta mostrando ' XSS '.

Si realiza cualquier otra solicitud inocua, el contenido cambiará. No puedo ver tu ejemplo, ya que no diste una URL real. Supongo que estás haciendo algo mal: ¿esas URL exactas representan diferentes fuentes en un navegador web?

    
respondido por el dr jimbob 05.10.2014 - 20:18
fuente
0

Cargue la url vulnerable con phantomjs y detecte si eso activa una alerta o no.

    
respondido por el Ángel 05.10.2014 - 22:26
fuente

Lea otras preguntas en las etiquetas