Vulnerabilità di injection URL

2

Sono occupato con un pentest e ho trovato qualcosa che mi ha fatto chiedere se sarebbe stato sfruttabile. Al momento non sono in grado di sfruttarlo, ma volevo esserne sicuro. Inoltre sono curioso del perché l'applicazione / server si comporta come fa.

Questa è la funzionalità:

  • L'applicazione ti consente di caricare immagini nel cloud e restituire un URL in cui l'immagine è
  • L'applicazione invia quindi l'URL di ritorno al server in cui è memorizzato in modo che altre persone trovino le immagini tramite l'URL
  • Basandosi su alcune parti dell'URL, gli utenti ottengono un certo URL diverso in un documento JSON con tutte le immagini:

link

diventa:

{"URL":"https://res.cloud.com/app/image/param1,param2,param3/something/picture1.jpg"}

  • Questo documento JSON viene quindi utilizzato per creare richieste GET sull'URL esatto (secondo)

Questa è la "vulnerabilità":

  • Modifica dell'URL nel modo seguente:

    http%73://myevilurl.org/pic1.jpg?https://res.cloud.com/app/image/something/picture1.jpg

  • l'utente ottiene quindi qualcosa nel documento JSON sotto forma di:

    {"URL":"http%73://myevilurl.org/pic1.jpg?https://res/cloud.com/app/image/something/picture1.jpg"}

  • Quale mi aspetterei che l'applicazione provi semplicemente a GET, ma l'applicazione in qualche modo fa una richiesta GET a:

    https://RootServerOfApplication.com/NameOfApplication/^^The URL above with https instead of http%73^^

Dato che questo è un test in corso, non posso davvero entrare nei dettagli (riservatezza e tutto!). Quindi spero che questo fornisca sufficienti informazioni.

EDIT: Ciò che ho omesso di menzionare sopra è che quando manometto il JSON in arrivo e inserisco semplicemente qualsiasi URL con HTTPS nella stringa JSON, l'applicazione tenta di ottenere quell'URL preciso. Quindi cambio il JSON in qualcosa del genere:

{"URL" : "https://myevilurl.org/shell.exe"}

L'applicazione prova effettivamente a GET shell.exe dal mio server. Questo non funziona quando provo con% 73 invece di un s.

Modifica2: Ciò che ho omesso di menzionare è che questa è un'app per Android.

    
posta Wealot 13.03.2017 - 16:32
fonte

3 risposte

0

Grazie a tutti per le ottime risposte che mi hanno aiutato ulteriormente! Quello che ho imparato è che l'URL è stato rimosso a un certo punto nell'URL (/ point /). Se non c'era, il server ha iniziato a fare cose "strane" come il reindirizzamento a / AppName / ***. Ma quando iniettare un'immagine come questa:

https://www.evilurl.org/?point/something

Ricevo una vera richiesta di GET al mio diabolico. Quindi è una vulnerabilità legata all'URL.

    
risposta data 14.03.2017 - 08:52
fonte
3

Ciò a cui si sta assistendo è probabilmente una attenuazione per una vulnerabilità comune, OWASP 2013 A10, non convalidato Reindirizzamenti e inoltro .

Se l'applicazione viene semplicemente reindirizzata all'URL trovato nel JSON, letteralmente, avresti un problema. Fondamentalmente chiunque manomette quel JSON potrebbe mandare il tuo browser ovunque desideri. Questo è chiamato un reindirizzamento non convalidato

Ma l'applicazione non lo fa. Invece, reindirizza a un gestore all'interno del dominio RootServerOfApplication.com, passando l'URL dal documento JSON come argomento .

Presumibilmente, RootServerOfApplication.com/NameOfAplication dà un'occhiata all'URL e garantisce che sia valido (ad esempio, forse si assicura che il dominio si trovi in una lista bianca, una che includa presumibilmente cloud.com ). Questo meccanismo impedirebbe di inoltrare un utente finale a myevilurl.org .

Dovresti verificarlo. Prova a incollare https://RootServerOfApplication.com/NameOfApplication/^^The URL above with https instead of http%73^^ direttamente nel tuo browser e guarda dove ti porta.

    
risposta data 14.03.2017 - 00:01
fonte
1

Questo problema è un Richiesta sul lato server Vulnerabilità vulnerabilità. È possibile utilizzarlo per inviare richieste HTTP GET come server vulnerabile. Questo potrebbe essere usato per indirizzare le richieste HTTP alla rete interna o alle distribuzioni di cloud IP limitati .

Inoltre, questo è un proxy GET HTTP, quindi puoi usarlo per fornire exploit basati su GET HTTP mentre oscuri il tuo indirizzo IP. Il caricamento di un file SWF valido (anche con un tipo di contenuto errato) può essere utilizzato per dirottare le sessioni del browser .

    
risposta data 13.03.2017 - 17:30
fonte

Leggi altre domande sui tag