Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

FeedContattoPrivacy© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2020-0022 — CVE-2020-0022 sfruttamento della vulnerabilità su Bouygues BBox Miami (Android TV 8.0 - ARM32 Cortex A9) | Kitploit
Strumenti/GitHubGitHub/polo35/cve-2020-0022
Sicurezza AndroidSicurezza BluetoothMemory ForensicsExploitShellcodeStrumento di Accesso RemotoSviluppo PayloadBinary Exploitation
GitHubpolo35/cve-2020-0022

CVE-2020-0022

CVE-2020-0022 sfruttamento della vulnerabilità su Bouygues BBox Miami (Android TV 8.0 - ARM32 Cortex A9)

Vedi Repository
3713755 anni faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

########################################################################################

Vulnerabilità CVE-2020-0022 su Bouygues BBox Miami Android TV 8.0 - ARM32 Cortex A9 Di Polo35 - 2020/08/24

########################################################################################

"Utilizzo: python polo_exploit.py target_bt_mac [target_adb_ip, shell_command, disable_reboot, verbose]"

########################################################################################

Basato sugli script di Jan Ruge CVE-2020-0022: un RCE Bluetooth Zero-Click su Android 8.0-9.0 – BlueFrag https://insinuator.net/2020/04/cve-2020-0022-an-android-8-0-9-0-bluetooth-zero-click-rce-bluefrag/

########################################################################################

INTRODUZIONE E CONSIGLI

########################################################################################

Lo script utilizza il modulo bluetooth di Python per ottenere l'handle della connessione ACL. Quindi è necessario installare le librerie bluetooth e pybluez (versione 0.22 per python2 e l'ultima versione per python3)

sudo apt-get update sudo apt-get install bluetooth bluez libbluetooth-dev sudo pip install pybluez

Puoi passare un comando shell allo script come parametro, che verrà eseguito con la funzione system dal demone bluetooth. Sono disponibili solo 104 caratteri per il comando shell perché la catena ROP occupa i primi 20 byte del secondo payload.

Esempio: shell_command = "cat /dev/zero | echo 'Target Exploited' > /sdcard/Download/cve-2020-0022-poc"

Lo script può utilizzare adb per controllare la connessione, ispezionare logcat e riavviare il target quando necessario. Per questo, devi passare l'IP del target come parametro. Assicurati di connettere il target con adb connect e di aprire una shell per verificare la connessione prima di utilizzare lo script.

I migliori risultati si ottengono connettendo il target via bluetooth con uno smartphone quando lo script lo dice ;) Possono essere necessari più di 30 tentativi per attivare l'exploit, ma a volte funziona al primo colpo.

########################################################################################

PERDITA DI MEMORIA CON ARM32

########################################################################################

Il Bouygues BBox Miami è basato su un processore ARM Cortex A9 a 32 bit. La differenza con ARM64 è che la funzione memcpy di libc non va in underflow, quindi è impossibile ottenere le stesse perdite di memoria di Jan Ruge. Ma la vulnerabilità è presente ed è sfruttabile in modo diverso.

Inviando un pacchetto l2cap con frammentazione a 4 byte, possiamo attivare una memcpy di lunghezza 0 in reassemble_and_dispatch. Ciò consente di ottenere 4 byte di dati non inizializzati alla fine di echo.

Aumentare la lunghezza del primo pacchetto (di seguito chiamato mem_offset) permette di "camminare" attraverso la memoria non inizializzata. Ottenere 32 echo con lo stesso mem_offset fornisce da 2 a 8 echo sfruttabili. Gli echo si ripetono, quindi non è necessario ottenere più di 32 echo con lo stesso mem_offset. Questo metodo riempie anche la memoria con i pacchetti, quindi è facile riconoscere schemi e trovare offset nelle perdite.

Il mem_offset è la lunghezza del pacchetto l2cap in caratteri. Esempio: mem_offset 184 = pacchetto l2cap di 184 caratteri = pacchetto l2cap di 368 byte.

Esempio di "camminamento" della memoria e dati non inizializzati con ripetizioni:

176: 00000000 01000000 01000000 00000000 00000000 01000000 00000000 00000000 00000000 01000000 01000000 00000000 00000000 01000000 00000000 00000000 ................................................................ 177: 00000000 000000a4 00000024 00000000 00000000 000000a4 00000000 00000000 00000000 000000a4 00000024 00000000 00000000 000000a4 00000000 00000000 ...........$...............................$.................... 178: 00000000 0000a4ce 000024d2 00000000 00000000 0000a4d5 00000000 00000000 00000000 0000a4ce 000024d2 00000000 00000000 0000a4d5 00000000 00000000 ..........$...............................$..................... 179: 00000000 00a4ce80 0024d280 00000000 00000000 00a4d580 00000000 00000000 00000000 00a4ce80 0024d280 00000000 00000000 00a4d580 00000000 00000000 .........$...............................$...................... 180: 00000000 a4ce80a3 24d280a3 00000000 00000000 a4d580a3 00000000 00000000 00000000 a4ce80a3 24d280a3 00000000 00000000 a4d580a3 00000000 00000000 ........$...............................$....................... 181: 00000000 ce80a39c d280a31c 00000000 00000000 d580a39c 00000000 00000000 00000000 ce80a39c d280a31c 00000000 00000000 d580a39c 00000000 00000000 ................................................................ 182: 00000000 80a39cce 80a31cd2 00000000 00000000 80a39cd5 00000000 00000000 00000000 80a39cce 80a31cd2 00000000 00000000 80a39cd5 00000000 00000000 ................................................................ 183: 00000000 a39cce80 a31cd280 00000000 00000000 a39cd580 00000000 00000000 00000000 a39cce80 a31cd280 00000000 00000000 a39cd580 00000000 00000000 ................................................................ 184: 00000000 9cce80a3 1cd280a3 00000000 00000000 9cd580a3 00000000 00000000 00000000 9cce80a3 1cd280a3 00000000 00000000 9cd580a3 00000000 00000000 ................................................................ 185: 00000000 ce80a300 d280a300 00000000 00000000 d580a300 00000000 00000000 00000000 ce80a300 d280a300 00000000 00000000 d580a300 00000000 00000000 ................................................................ 186: 00000000 80a30000 80a30000 00000000 00000000 80a30000 00000000 00000000 00000000 80a30000 80a30000 00000000 00000000 80a30000 00000000 00000000 ................................................................ 187: 00000000 a3000000 a3000000 00000000 00000000 a3000000 00000000 00000000 00000000 a3000000 a3000000 00000000 00000000 a3000000 00000000 00000000 ................................................................ 188: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 ................................................................

Possiamo vedere a mem_offset 180 e 184 alcuni indirizzi di memoria in little endian.

a4ce80a3 dà l'indirizzo 0xa380cea4 24d280a3 dà l'indirizzo 0xa380d224 a4d580a3 dà l'indirizzo 0xa380d5a4 9cce80a3 dà l'indirizzo 0xa380ce9c 1cd280a3 dà l'indirizzo 0xa380d21c 9cd580a3 dà l'indirizzo 0xa380d59c

Ci sono almeno 4 o 5 mem_offset in cui è possibile trovare indirizzi di memoria reali dopo quasi ogni riavvio. Vedremo più avanti come possiamo usarli.

########################################################################################

ANALISI DEL PRIMO CRASH

########################################################################################

Inviando un pacchetto l2cap con frammentazione a 2 byte, possiamo attivare una memcpy di lunghezza -2 in reassemble_and_dispatch. Ciò consente di overfloware al di fuori del pacchetto parziale con 30 byte di dati controllati dal secondo pacchetto. A causa dei 30 byte copiati, non è necessario inviare pacchetti più grandi di 32 byte con gli ultimi 4 byte nulli.

Questo metodo di overflow a volte causa il crash del demone bluetooth con il registro R0 controllato in _Z11list_appendP6list_tPv+65:

Scarica lo strumento