Sono nuovo qui in sicurezza.
Desidero identificare gli utenti sospetti sull'applicazione Web analizzando il file di registro di accesso Web. Per questo, sto prendendo in considerazione l'attacco CSRF.
A tale scopo, sto generando alcune regole euristiche (possibili) per l'identificazione di utenti sospetti dal log web. Non sono sicuro ma ho ancora indovinato alcune regole,
Nel registro web,
1. L'URL del referrer è vuoto o non è uguale al nome di dominio dell'URL richiesto.
per es.
192.168.4.6 [10/Oct/2007:13:55:36 0700] "GET /trx.php? amt=100&toAcct=12345 HTTP/1.0" 200 4926
"http://www.attacker.com/freestuff.php" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322)"
Qui sono importanti due campi, l'URL richiesto ( /trx.php? amt=100&toAcct=12345
) e il referer (" http://www.attacker.com/freestuff.php
"). Di solito, il referer è un URL dello stesso sito ( www.bank.com
). Ecco un esempio di frammento di perl, come potrebbe essere rilevato:
# assuming $referer is set with the, well, referer
if ( ( $referer ne '' ) && ( $referer !~ /^https?:\/\/www.bank.com\/(login|overview|trx)\.jsp/ ) )
{
# handle XSRF attack
print(“XSRF attack: $referer\n”);
}
2. Se lo stato HTTP è 403 , ad esempio Accesso negato
(Se il token CSRF non viene inviato o se viene inviato un token CSRF non valido in richieste che richiedono un token CSRF). Quindi, qui sarà incluso il controllo dello stato 403. Perché il token non può essere controllato nel file di registro.
3. Misurando la differenza di tempo delle richieste di un utente.
Se non ci sono stati input da parte dell'utente per diversi minuti e poi improvvisamente arrivano alcune richieste di trasferimento, potrebbe essere un indicatore che questa richiesta è stata attivata da qualcosa / qualcun altro. Qui, sarà necessario controllare la differenza di tempo fino al valore di soglia dallo stesso indirizzo IP. (Insieme a questo, se i valori sono presenti dopo il simbolo ?
e se questi sarebbero "pass", "password", "importo", 'amt', 'denaro', o qualsiasi link e se lo stato di richiesta dell'Utente sarebbe 200 cioè riuscito o OK).
4. Richiesta POST multipla (ripetizione) anche da singolo indirizzo IP risultati in CSRF.
Metodi idempotenti e applicazioni web I metodi PUT e DELETE sono definiti come idempotenti, il che significa che più richieste identiche dovrebbero avere lo stesso effetto di una singola richiesta (notare che idempotent si riferisce allo stato del sistema dopo che la richiesta è stata completata, quindi mentre l'azione prende il server (es. cancellazione di un record) o il codice di risposta che restituisce potrebbe essere diverso sulle richieste successive, lo stato del sistema sarà lo stesso ogni volta [citazione necessaria]). I metodi GET, HEAD, OPTIONS e TRACE, essendo prescritti come sicuri, dovrebbero anche essere idempotenti, poiché HTTP è un protocollo stateless.
Al contrario, il metodo POST non è necessariamente idempotente e pertanto l'invio di una richiesta POST identica più volte può ulteriormente incidere sullo stato o causare ulteriori effetti collaterali (come le transazioni finanziarie). In alcuni casi ciò potrebbe essere auspicabile, ma in altri casi ciò potrebbe essere dovuto a un incidente, ad esempio quando un utente non si rende conto che la sua azione comporterà l'invio di un'altra richiesta, oppure non ha ricevuto un feedback adeguato che la sua prima richiesta è stata riuscito. Sebbene i browser Web possano mostrare finestre di avviso per avvisare gli utenti in alcuni casi in cui il ricaricamento di una pagina può inviare nuovamente una richiesta POST, generalmente è compito dell'applicazione Web gestire casi in cui una richiesta POST non deve essere inviata più di una volta. / p>
5. Un sito web potrebbe consentire la cancellazione di una risorsa tramite un URL come
http://example.com/article/1234/delete
, che, se arbitrariamente
recuperato, anche usando GET, cancellerebbe semplicemente l'articolo. (Non so cosa fare qui)
Lo so, l'identificazione CSRF dal file di registro è difficile, quindi, sto citando i possibili modi (ad esempio l'euristica) qui. Se sbagliato, è necessaria la correzione in questo. Altre regole / aiuto sarebbero apprezzate.