Sto osservando le vulnerabilità CSRF di DVWA. Eseguo il livello medio che utilizza questo pezzo di codice per convalidare se l'intestazione referer
è uguale al nome del server:
if( eregi( $_SERVER[ 'SERVER_NAME' ], $_SERVER[ 'HTTP_REFERER' ] ) )
.
In tal caso, la mia query verrà accettata e attivata in un database che modifica le informazioni di accesso. Lo faccio attraverso una pagina web malevola.
Finora sono stato in grado di vedere quale nome del referer è su un'intestazione di risposta dal server. Dalla mia comprensione, quella funzione php sta chiedendo il seguente:
Il valore di $ _SERVER ['SERVER_NAME'] è presente in $ _SERVER ['HTTP_REFERER']?
Quindi, il mio primo pensiero fu, cercando di manipolare la stringa dell'URL della richiesta e incorporare l'intestazione del referer su di essa. (nessun risultato) Suppongo che la istruzione if stia cercando un modello. Il fatto è che non so come passare e quietamente onestamente non capisco se la mia richiesta GET è presente in $_SERVER[ 'SERVER_NAME' ]
o in $_SERVER[ 'HTTP_REFERER' ]
. Dalle mie indagini ritengo che l'intestazione del referer non possa essere modificata in un semplice tag html img. Quindi la mia ultima domanda sarebbe: Sono in grado di forgiare la stringa del tag img (richiesta HTTP GET) in modo che l'istruzione valga per vero? In caso contrario, come posso farlo in uno scenario in cui una vittima utilizza sempre inconsapevolmente questa pagina Web dannosa?