## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-NICOIBARBURU-CVE-2021-4034
# ΠΡΠΎΠ²Π΅ΡΠΊΠ° ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΠΈ (Proof of Concept): CVE-2021-4034 (PwnKit)
**ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅:** ΠΡΠΎΡ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ ΠΈ Π΅Π³ΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΡΠ²Π»ΡΡΡΡΡ ΡΠ°ΡΡΡΡ Π΄ΠΈΠΏΠ»ΠΎΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ° (GrAL), ΡΠΎΠ·Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΈΡΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π² ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΡ
ΡΠ΅Π»ΡΡ
ΠΈ Π΄Π»Ρ Π°ΠΊΠ°Π΄Π΅ΠΌΠΈΡΠ΅ΡΠΊΠΈΡ
ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠΉ.
## ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅
ΠΡΠΎΡ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΡ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΠΈ (PoC β Proof of Concept) Π΄Π»Ρ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈ **CVE-2021-4034** (ΡΠ°ΠΊΠΆΠ΅ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎΠΉ ΠΊΠ°ΠΊ PwnKit). ΠΡΠ° ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΡ ΠΏΠΎΠ²ΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ ΠΏΠ°ΠΌΡΡΠΈ Π·Π°ΡΡΠ°Π³ΠΈΠ²Π°Π΅Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ `pkexec` ΠΈΠ· Polkit Π² Linux-ΡΠΈΡΡΠ΅ΠΌΠ°Ρ
. ΠΡΠΈ Π·Π°ΠΏΡΡΠΊΠ΅ `pkexec` Ρ ΠΏΡΡΡΡΠΌ ΡΠΏΠΈΡΠΊΠΎΠΌ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² (`argc == 0`) ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌΠΈ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ ΠΏΡΠΈΠ½ΡΠ΄ΠΈΡΡ Π·Π°Π³ΡΡΠ·ΠΊΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΠΎΠΉ ΠΎΠ±ΡΠ΅ΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ Π΄ΠΎΠ±ΠΈΠ²Π°ΡΡΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ²ΡΡΠ΅Π½ΠΈΡ ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΉ.
## ΠΡΠ°ΠΏΡ ΡΠΊΡΠΏΠ»ΡΠ°ΡΠ°ΡΠΈΠΈ (ΠΠ½Π°Π»ΠΈΠ· ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ)
ΠΠΈΠΆΠ΅ ΠΎΠΏΠΈΡΠ°Π½Ρ ΡΠ°Π³ΠΈ, Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΡΠ΅ Π΄Π»Ρ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠΈ ΡΡΠ΅Π΄Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Ρ ΡΠ΅Π»ΡΡ ΡΠΊΡΠΏΠ»ΡΠ°ΡΠ°ΡΠΈΠΈ ΡΡΠΎΠΉ ΠΎΡΠΈΠ±ΠΊΠΈ. ΠΡΠΎΡ ΠΏΡΠΎΡΠ΅ΡΡ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΎΡΠΈΠ±ΠΊΠ° ΡΡΠ΅Π½ΠΈΡ/Π·Π°ΠΏΠΈΡΠΈ ΠΏΠ°ΠΌΡΡΠΈ Π² `pkexec`:
### 1\. ΠΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠ° ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ (ΡΡΡΡΠΊΡΡΡΠ° `gconv`)
ΠΡΠΎΡ ΡΠΊΡΠΏΠ»ΠΎΠΉΡ Π·Π»ΠΎΡΠΏΠΎΡΡΠ΅Π±Π»ΡΠ΅Ρ ΡΠ΅ΠΌ, ΠΊΠ°ΠΊ GLib ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² ΠΏΡΠΈ ΠΏΠΎΠΏΡΡΠΊΠ΅ Π²ΡΠ²Π΅ΡΡΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΏΠ΅ΡΠ²ΡΠΌ ΡΠ°Π³ΠΎΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΠΎΠΉ ΡΡΡΡΠΊΡΡΡΡ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΎΠ², ΠΊΠΎΡΠΎΡΠ°Ρ Π±ΡΠ΄Π΅Ρ ΡΠ»ΡΠΆΠΈΡΡ Π΄Π»Ρ GLib Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠΌ Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΠΌ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ GCONV.
### 2\. ΠΠ°Π½ΠΈΠΏΡΠ»ΡΡΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌΠΈ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ
ΠΠ»ΡΡ ΠΊ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈ β Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ `GCONV_PATH` Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π·Π°ΠΏΠΈΡΠΈ Π·Π° Π³ΡΠ°Π½ΠΈΡΡ ΠΌΠ°ΡΡΠΈΠ²Π°, Π²ΡΠ·Π²Π°Π½Π½ΠΎΠΉ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ΠΌ `argc == 0` Π² `pkexec`. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΏΡΠΈΠ½ΡΠΆΠ΄Π°Π΅ΡΡΡ ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π°Π½ΠΎΠΌΠ°Π»ΡΠ½ΠΎΠΉ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠΈ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ², ΡΡΠΎ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ GLib Π½Π° Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ ΠΏΠΎΠΈΡΠΊΠ° ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² Π² ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΡΠ΅ΠΌΠΎΠΌ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅, ΡΠΎΠ·Π΄Π°Π½Π½ΠΎΠΌ Π½Π° ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΌ ΡΠ°Π³Π΅.
### 3\. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π²ΡΠ΅Π΄ΠΎΠ½ΠΎΡΠ½ΠΎΠΉ ΠΎΠ±ΡΠ΅ΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ (`.so`)
ΠΠ»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π½Π°ΡΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π° Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΠΎΠ±ΡΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ (shared object ΠΈΠ»ΠΈ `.so`). ΠΠΎΠ³Π΄Π° `pkexec` ΠΏΠΎΠΏΡΡΠ°Π΅ΡΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ², ΠΊΠΎΡΠΎΡΡΡ Π½Π΅ ΡΠΌΠΎΠΆΠ΅Ρ Π½Π°ΠΉΡΠΈ, ΠΎΠ½ Π·Π°Π³ΡΡΠ·ΠΈΡ ΡΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ ΠΈΠ· Π½Π°ΡΠ΅Π³ΠΎ ΠΏΠΎΠ΄Π΄Π΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π° `gconv`. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ `pkexec` ΡΠ²Π»ΡΠ΅ΡΡΡ Π±ΠΈΠ½Π°ΡΠ½ΠΈΠΊΠΎΠΌ Ρ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΡΠΌ SUID-Π±ΠΈΡΠΎΠΌ (ΠΎΠ½ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΎΡ ΠΈΠΌΠ΅Π½ΠΈ root), ΠΏΡΠΈ Π·Π°Π³ΡΡΠ·ΠΊΠ΅ ΡΡΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π½Π°Ρ ΠΊΠΎΠ΄ ΠΏΠΎΠ»ΡΡΠΈΡ root-ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ, ΠΏΠΎΠ»ΡΡΠΈΠ² ΠΏΠΎΠ»Π½ΡΠΉ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π½Π°Π΄ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΡΠΊΡΡΠ² root-ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΡ).
### 4\. ΠΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ ΡΠ°ΠΉΠ»Π° `gconv-modules`
ΠΠ°ΠΊΠΎΠ½Π΅Ρ, Π² ΡΡΠΎΠΌ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΌ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΡΠΉ ΡΠ°ΠΉΠ» `gconv-modules`. ΠΡΠΎΡ ΡΠ°ΠΉΠ» Π΄Π΅ΠΉΡΡΠ²ΡΠ΅Ρ ΠΊΠ°ΠΊ ΠΈΠ½Π΄Π΅ΠΊΡ: ΠΎΠ½ ΡΠΎΠΎΠ±ΡΠ°Π΅Ρ GLib, ΠΊΠ°ΠΊΡΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ (`.so`) Π½ΡΠΆΠ½ΠΎ Π·Π°Π³ΡΡΠ·ΠΈΡΡ Π΄Π»Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ Π·Π°ΠΏΡΠΎΡΠ΅Π½Π½ΠΎΠΉ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΉ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠΈ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ². ΠΡΠΎΡ ΡΠ°ΠΉΠ» ΡΠ²ΡΠ·ΡΠ²Π°Π΅Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅, Π·Π°ΠΏΡΠ°ΡΠΈΠ²Π°Π΅ΠΌΠΎΠ΅ `pkexec`, Ρ ΠΎΠ±ΡΠ΅ΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΎΠΉ, ΡΠΎΠ·Π΄Π°Π½Π½ΠΎΠΉ Π½Π° ΡΠ°Π³Π΅ 3.
## ΠΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ ΠΈ ΠΎΡΠΈΡΡΠΊΠ°
Π ΠΏΡΠΎΠ΅ΠΊΡΠ΅ Π΅ΡΡΡ `Makefile` Π΄Π»Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ C-Π±ΠΈΠ½Π°ΡΠ½ΠΈΠΊΠ° ΠΈ ΠΎΡΠΈΡΡΠΊΠΈ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ.
* **ΠΠ»Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ°:** $ make
* **ΠΠ»Ρ ΠΎΡΠΈΡΡΠΊΠΈ ΡΠΎΠ·Π΄Π°Π½Π½ΡΡ
ΡΠ°ΠΉΠ»ΠΎΠ² (Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
, ΠΏΠ°ΠΏΠΎΠΊ ΠΈ Π±ΠΈΠ½Π°ΡΠ½ΠΈΠΊΠΎΠ²):** $ make clean