Penetration Testing Python - XSS Web Attack
Gli attacchi di cross-site scripting sono un tipo di iniezione che fa riferimento anche ad attacchi di code injection lato client. Qui, i codici dannosi vengono iniettati in un sito Web legittimo. Il concetto di Same Origin Policy (SOP) è molto utile per comprendere il concetto di Cross-site scripting. SOP è l'entità di sicurezza più importante in ogni browser web. Vieta ai siti web di recuperare contenuti da pagine con un'altra origine. Ad esempio, la pagina web www.tutorialspoint.com/index.html può accedere ai contenuti dawww.tutorialspoint.com/contact.htmlma www.virus.com/index.html non può accedere ai contenuti dawww.tutorialspoint.com/contact.html. In questo modo, possiamo dire che il cross-site scripting è un modo per aggirare la policy di sicurezza SOP.
Tipi di attacco XSS
In questa sezione, impariamo a conoscere i diversi tipi di attacco XSS. L'attacco può essere classificato nelle seguenti categorie principali:
- XSS persistente o memorizzato
- XSS non persistente o riflesso
XSS persistente o memorizzato
In questo tipo di attacco XSS, un utente malintenzionato inietta uno script, denominato payload, che viene memorizzato in modo permanente sull'applicazione Web di destinazione, ad esempio all'interno di un database. Questo è il motivo, si chiama attacco XSS persistente. In realtà è il tipo più dannoso di attacco XSS. Ad esempio, un codice dannoso viene inserito da un utente malintenzionato nel campo dei commenti su un blog o nel post del forum.
XSS non persistente o riflesso
È il tipo più comune di attacco XSS in cui il payload dell'aggressore deve essere la parte della richiesta, che viene inviata al server web e riflessa, in modo tale che la risposta HTTP includa il payload della richiesta HTTP. È un attacco non persistente perché l'attaccante deve consegnare il carico utile a ciascuna vittima. L'esempio più comune di questo tipo di attacchi XSS sono le e-mail di phishing con l'aiuto delle quali l'aggressore attira la vittima per fare una richiesta al server che contiene i payload XSS e finisce per eseguire lo script che viene riflesso ed eseguito all'interno del browser .
Esempio
Come SQLi, gli attacchi Web XSS possono essere implementati manipolando i dati di input nell'applicazione. Negli esempi seguenti, stiamo modificando i vettori di attacco SQLi, eseguiti nella sezione precedente, per testare l'attacco web XSS. Lo script Python fornito di seguito aiuta ad analizzare l'attacco XSS utilizzandomechanize -
Per cominciare, importiamo il file mechanize modulo.
import mechanize
Ora, fornisci il nome dell'URL per ottenere la risposta dopo aver inviato il modulo.
url = input("Enter the full url")
attack_no = 1
Dobbiamo leggere i vettori di attacco dal file.
With open (‘vectors_XSS.txt’) as x:
Ora invieremo la richiesta con ogni vettore di arrack -
For line in x:
browser.open(url)
browser.select_form(nr = 0)
browser[“id”] = line
res = browser.submit()
content = res.read()
La seguente riga di codice controllerà il vettore di attacco stampato.
if content.find(line) > 0:
print(“Possible XSS”)
La seguente riga di codice scriverà la risposta nel file di output.
output = open(‘response/’ + str(attack_no) + ’.txt’, ’w’)
output.write(content)
output.close()
print attack_no
attack_no += 1
XSS si verifica quando un input dell'utente stampa nella risposta senza alcuna convalida. Pertanto, per verificare la possibilità di un attacco XSS, possiamo controllare il testo della risposta per il vettore di attacco che abbiamo fornito. Se il vettore di attacco è presente nella risposta senza alcuna fuga o convalida, c'è un'alta possibilità di attacco XSS.