Come determinare se ViewState ha abilitato il MAC durante la scansione di una pagina?

4

Stavo usando Burp Suite per fare alcuni test di sicurezza su un sito e ho notato che quando rileva ViewState ti dirà automaticamente se ha MAC abilitato.

Sono curioso se qualcuno sa di un modo programmatico per determinare se il MAC è abilitato se stai eseguendo la scansione di un sito senza effettivamente tentare di modificare ViewState, inviarlo e vedere se qualcosa esplode?

Da quello che posso dire a Burp Suite lo sta facendo solo guardando la richiesta (e non modificando / sottomettendo).

    
posta Abe Miessler 24.07.2013 - 20:12
fonte

2 risposte

4

Il "ViewState" è parte della pagina, come un valore di campo nascosto da restituire al server. Se ViewState è protetto da un MAC , allora il valore MAC è parte di esso, quindi si tratta di estrarre ViewState valore dalla pagina, decodificandolo e quindi vedere se c'è un MAC o meno. Burp fa proprio questo.

Il formato ViewState non è documentato pubblicamente (non si suppone che vadano a braccetto con esso) ma è stato reverse engineered .

    
risposta data 24.07.2013 - 20:27
fonte
3

Gli ViewState sono fondamentalmente stringhe codificate in BASE64. Quindi quello che puoi fare è provare a decodificarli con un decodificatore BASE64. Se è crittografato, otterrai del contenuto binario che non è veramente leggibile. Se non viene utilizzata la crittografia, sarà possibile visualizzare i contenuti. Ad esempio Fiddler2 può aiutarti a decodificare ViewStates nel tuo browser.

Ora c'è anche l'opzione di usare un MAC:

If the viewstate has its MAC enabled then there The security of this system lies in the secrecy of the secret key value. This value is always stored on the server, either in memory or in a configuration file (more on this later)—it is never written to the page. Without knowing the key, there would be no way for an attacker to compute a valid view state hash.

da MSDN "Visualizza sicurezza dello stato" .

Puoi verificarlo decodificando il VIEWSTATE (se non criptato) e verificare se un hash di 20 byte è presente alla fine della struttura di ViewState.

    
risposta data 24.07.2013 - 20:25
fonte

Leggi altre domande sui tag