Dov'è la vulnerabilità di CSRF in questa applicazione CGI Python? [chiuso]

-6

Ho il seguente codice Python e mi chiedo quale sia la linea più probabile per esporre una vulnerabilità CSRF.

import cgi
import Cookie
c = Cookie.SimpleCookie()
form = cgi.FieldStorage()
email = form.getvalue("EmailAddress")
c['addr'] = email
    
posta Cem Sultan 07.06.2016 - 23:34
fonte

1 risposta

3

Cosa fa il codice

Guarda cosa fa il codice.

import cgi
import Cookie

Per prima cosa dobbiamo solo importare alcune librerie da utilizzare in seguito.

c = Cookie.SimpleCookie()

Questo memorizza tutti i cookie inviati nella richiesta dei client nella variabile c .

form = cgi.FieldStorage()

Questo memorizza tutti i valori del modulo inviati nella richiesta dei client nella variabile form .

email = form.getvalue("EmailAddress")
c['addr'] = email

Quindi il valore del campo modulo con il nome EmailAddress è memorizzato nella variabile email , che a sua volta viene utilizzata per impostare il valore del cookie addr . Presumibilmente questo nuovo valore del cookie verrà in seguito inviato al client come parte della risposta e memorizzato lì.

Come funziona l'attacco

Quindi come potrebbe un attaccante usarlo in un attacco CSRF? Diciamo che un malvagio aggressore crea un sito web chiamato http://evil.com che in qualche modo convince la vittima a visitare. Il malvagio sito Web contiene un modulo nascosto che viene automaticamente pubblicato sul sito con lo script vulnerabile (chiamiamolo http://example.com ) con JavaScript. Il modulo contiene un input nascosto con il nome EmailAdress e il valore [email protected] .

Ora l'autore dell'attacco ha modificato il cookie addr delle vittime su http://example.com , quindi quando la vittima in seguito visita quel sito, crederà che il suo indirizzo email sia l'autore dell'attacco. Se tale indirizzo email viene utilizzato dal sito per inviare alcune informazioni sensibili, come un link di reimpostazione della password, l'autore dell'attacco riceverà tali informazioni.

Ma quale linea?

Penso che chiedere la linea specifica che introduce una vulnerabilità sia un po 'strano. Non è una singola riga che causa una vulnerabilità, ma una serie di circostanze. Direi piuttosto che è l'assenza di molte linee, vale a dire le linee che contengono alcune attenuazioni CSRF come un controllo di token, che causa la vulnerabilità.

Ma se devi scegliere un numero come risposta ai tuoi compiti, penso che la discussione sopra riportata dovrebbe aiutarti a trovare la risposta giusta.

    
risposta data 08.06.2016 - 01:26
fonte

Leggi altre domande sui tag