Rilevamento XSS basato su DOM principale che utilizza python

3

Sto lavorando per un progetto di creare uno strumento di scansione XSS usando python.

Ho un URL di esempio: http://www.foo.bar/index.php?ids=111

Ho scoperto che ha una vulnerabilità di http://www.foo.bar/index.php?ids="><SCrIpT>alert('XSS')</ScRiPt>

Un elemento di base diverso dal normale url e xss url è una finestra di avviso mostrata nel browser. Ma quando si usa python, come posso vederlo o rilevare quale url è vulnerabilità?

Esistono molti strumenti XSS come: wapiti, w3af, ... Ma come funziona? Cos'è la scansione xss principale?

Ho provato la libreria delle richieste 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

Ma il risultato di r.text e t.text è lo stesso.

    
posta fluke-ng 05.10.2014 - 19:00
fonte

2 risposte

1

Non riesco a esaminare il problema, dato che hai fornito un falso URL per testare XSS. Ecco un vero URL che dimostra una vulnerabilità XSS:

Utilizzando la prima attività questo è un URL che presenta una vulnerabilità XSS:

Usando le richieste della libreria python, possiamo richiedere questa pagina:

>>> 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>    
    ...

Come puoi vedere sopra dove ho troncato il resto del contenuto HTML, c'è il testo Searched for <script>alert('XSS')</script> , che è la vulnerabilità XSS in quanto è un <script> completamente formato. Nota come requests fa semplicemente la richiesta HTTP (che richiede solo l'origine della pagina HTML dal server web senza tentare di elaborarlo o renderizzarlo) e non esegue alcun javascript, non vedrai alcun popup di avviso che mostri ' XSS'.

Se fai altre richieste innocue, il contenuto cambierà. Non riesco a guardare nel tuo esempio, dato che non hai dato un vero URL. La mia ipotesi è che stai facendo qualcosa di sbagliato: questi URL esatti rendono una sorgente diversa in un browser web?

    
risposta data 05.10.2014 - 20:18
fonte
0

Carica l'URL vulnerabile con phantomjs e scopri se ciò fa scattare o meno un avviso.

    
risposta data 05.10.2014 - 22:26
fonte

Leggi altre domande sui tag