Impossibile caricare la libreria libcutils.so durante l'iniezione di shellcode

1

Sto lavorando alla mia tesi di scuola.

Sto cercando di iniettare alcuni shellcode in una libreria condivisa usando la vulnerabilità di Dirty Cow su Android x86.

Il mio shellcode è scritto in asembly e chiama solo sys_execve con un argomento touch /sdcard/FILE.txt . Lo shellcode dovrebbe essere OK, non sto usando nessun indirizzo assoluto per gli argomenti della stringa - tutto viene creato nello stack e indirizzato relativamente al puntatore dello stack. Sto cercando di iniettare questo shellcode in libc.so (nella funzione time ), che penso abbia esito positivo - prima di questo ho provato uno shellcode più semplice che ha funzionato perfettamente ( xor eax, eax; ret ).

Ma subito dopo l'attacco il programma fallisce:

01-29 15:56:40.305 3255-3255/com.example.vitek.bakalarka A/libc: Fatal signal 11 (SIGSEGV) at 0x00000000 (code=128), thread 3255 (vitek.bakalarka)

E quando provo a comunicare con il dispositivo tramite adb , ottengo solo questo:

$ adb shell ls -la /sdcard/
CANNOT LINK EXECUTABLE: could not load library "libcutils.so" needed by "/system/bin/touch"; caused by library "libcutils.so" not found

Non capisco perché fallisce. Ho pensato che il syscall execve crea un sottoprocesso che esegue qualunque cosa ottiene come argomento.

Perché non carica la libreria libcutils.so ?

Posso aggiungere qualcosa al mio shellcode per far funzionare questo attacco? In caso contrario, c'è qualche altro bersaglio adatto che sarebbe più facile da attaccare?

Ho visto alcuni PoC di Dirty Cow che stavano attaccando vDSO , ma nel mio caso vDSO non è usato dal sistema - Ho provato a iniettare anche quello, ha funzionato perfettamente (l'ho visto in objdump e hexdump delle pagine vDSO che ho scritto in un file), ma la funzione che ho attaccato ( clock_gettime ) sembra non essere mai chiamata (o dal sistema o direttamente da me).

Grazie per le risposte.

    
posta Topper Harley 27.02.2018 - 15:16
fonte

0 risposte

Leggi altre domande sui tag