Esiste un modo per sfruttare i parametri GET POST inutilizzati nell'applicazione web?

2

Quindi c'è un'applicazione che accetta alcuni dati dall'esterno. Supponendo che accetti solo un numero finito di diversi parametri POST / GET e che l'applicazione gestisca correttamente tutti i dati inviati con questi parametri, esiste un modo per sfruttare un'applicazione che invia parametri aggiuntivi.

Con questo intendo il seguente: supponendo che la mia applicazione accetti solo un parametro post ' number ', c'è un modo per inviare in qualche modo altri parametri (potrebbero essere troppi parametri, o potrebbero essere parametri troppo grandi) per sfruttare il applicazione?

La domanda non è specifica per lingua / server.

    
posta Salvador Dali 10.03.2014 - 10:06
fonte

3 risposte

3

In circostanze normali, la tua applicazione dovrebbe gestire esclusivamente i parametri che ti aspetti. Se si utilizza un framework, tuttavia, potrebbero esserci problemi di sicurezza aggiuntivi come "Assegnazione di massa" (buona lettura su Ruby on Rails 'data security problema ).

Ma, come nel tuo esempio, se l'applicazione accetta solo "numero" come argomento POST, non dovrebbe gestire altro.

    
risposta data 10.03.2014 - 11:36
fonte
1

Sì, certamente. C'è Insecure Object Mapping , che è un termine più generico per "Assegnazione di massa" in @ Risposta di m1ke.

Nel tuo caso potrebbe essere possibile sfruttare l'applicazione includendo due parametri number .

es. https://www.example.com?number=1&number=2 (questo è un GET, ma lo stesso vale per il POST).

tutto dipende da come l'applicazione lo gestisce. Alcuni framework possono rendere il primo parametro disponibile per l'applicazione ( 1 ), alcuni possono rendere disponibile il secondo ( 2 ) e alcuni possono fornire entrambi ( 1,2 ). Tuttavia, quest'ultimo è spesso equivalente alla stringa di query semplicemente essendo number=1,2 .

Dove potrebbe trovarsi una vulnerabilità è se la stringa di query viene analizzata in due modi diversi in punti diversi. Ad esempio, uno script di autorizzazione può essere scritto utilizzando un framework che controlla se l'utente corrente ha il permesso di accedere al number fornito. Questo framework accetta il primo valore di stringa di query ( 1 ). Tuttavia, il framework che gestisce il number per l'elaborazione back-end accetta l'ultimo number fornito ( 2 ), dando a un utente malintenzionato un modo per aggirare il controllo dell'autorizzazione.

Come dici tu, potrebbe essere possibile che esista un exploit in cui esiste un grande valore di stringa di query singola o che ci sono molti parametri forniti. Qualsiasi vulnerabilità in questo caso verrebbe probabilmente attribuita al server Web e allo stack tecnologico lato server stesso e sono stati scoperti tali exploit .

    
risposta data 10.03.2014 - 15:41
fonte
1

Ci sono alcuni casi in cui questo può essere sfruttato. Un esempio che ho visto è dove l'applicazione fa eco a un'intera richiesta GET nel corpo della pagina risultante, ad esempio in un campo di collegamento o in un codice di monitoraggio.

Se ciò è fatto e l'URL non è codificato correttamente, potrebbe esserci un problema XSS da un parametro che l'applicazione non usa.

    
risposta data 10.03.2014 - 12:08
fonte

Leggi altre domande sui tag