keyword : Shared Memory
level10-WriteUp
Shared Memory
๊ณต์ ๋ฉ๋ชจ๋ฆฌ๋ ์ฌ๋ฌ ์ฅ์น(์ฃผ๋ก CPU)๋ ์ฌ๋ฌ ํ๋ก์ธ์ค๊ฐ ๊ณต๋์ผ๋ก ์ฌ์ฉํ๋ ๋ฉ๋ชจ๋ฆฌ
Ex) ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฑ..
๊ณต์ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅํ๋ค๋ผ.. ๊ทธ๋ผ ๋จผ์ ๊ณต์ ๋ฉ๋ชจ๋ฆฌ ์ค์ ๊ณผ ๊ธฐ๋ฅ ๊ทธ๋ฆฌ๊ณ ์ฝ๋ฉ์ ๋ํ์ฌ
์์๋ณด๊ธฐ ์ ์ ์ถ๊ฐ์ ์ผ๋ก ์ ๋ณด๊ฐ ์๋์ง ํ์ธํด๋ด
์๋ค
์ผ๋จ ./program์ด๋ผ๋ ํ์ผ์ด ์กด์ฌํ๊ธฐ์ ํ์ธ์ ํด๋ณด๋๊น ๊ถํ์ด ์๋ค.. ์ฆ, root ๊ถํ์์
์คํ๋๋ ์ฝ๋๋ก์จ ์ ๋์ด ๋๋ ๋ด์ฉ์ ๊ณต์ ๋ฉ๋ชจ๋ฆฌ์ ์ ๋ณด์ธ๋ฏ ์ถ๋ค์
๊ทธ๋ฌ๋ฉด ์คํํ์ผ๋ก์จ ์คํ๋๋ SetUID๊ฑฐ๋ ํ์ฌ ๊ถํ์ ํ์ผ์์ ์์ฌ๋๋ ํ์ผ๋ก์จ ์กด์ฌ,
์๋๋ฉด ๋ฐฑ๊ทธ๋ผ์ด๋๋ก ์คํ๋๋ ํ์ผ์ด๋ผ๋ ๊ฑฐ๊ธฐ์ ํ๋์ฉ ์์๋ด
์๋ค
๊ทธ๋ฆฌ๊ณ SetUID๋ ํ์ธ๋ ํ๊ณ , level10์ ์๋ ์ ๋ณด๋ ํ์ธํด๋ด ์๋ค.
๋ญ ๋ฑํ ์์ฌ๋๋ ํ์ผ๋ ์๊ณ , SetUID๋ ๊ฑธ๋ ค์๋๊ฒ๋ ์๋ค์
์ฌ์ค level10์ ๋ญ ๋์ฌ์ง ์์๋๋ฐ ์ ๋ ๊ฒ ๋์ฌ์ค์;; ์จ๋ ์ ๋ ๊ฒ ๋์จ๊ฑด
๋ญ.. backdoor๋ ์๋๊ฑฐ ๊ฐ๊ณ , ๋ญ ํนํ์ฌํญ๋ ์์ผ๋๊น ๋์ด๊ฐ์ฃ
๋ฐ์ ์ฐธ๊ณ ์๋ฃ์ ์์ ๋น์ทํ ๋งํฌ๊ฐ ํ.. 3๊ฐ ์ฌ๋ ธ๋? ๊ทธ๊ฒ๋ค์ ๊ตฌ๊ธ๋งํด์ ์ฐพ์ ๊ฒฐ๊ณผ!
background excute program๋ค์ด ์์ฃผํ๋ ๊ณณ์ด ๋ฐ๋ก(๋น์ฐํ ์์คํ
๊ด๋ จ ํ์ผ์ ์๊ฒ ์ฃ ?)
/etc/rc.d(์ด๊ฑด ๋ฒ์ ๊ณผ ๊ธฐ๋ฅ์ ๋ฐ๋ผ ๋๋์ด์ง๋๋ฐ ์ด ๋ฒ์ ์ด ๊ฐ์ฅ ๊ทผ๋ณธ)์ผ๋ก ์ ๊ทผํ์๋ฉด..
๊ทผ๋ฐ ํ๋ฉด์ ๋๋ผ๋๊ฑด๋ฐ ์ง์ง ์ฌ๊ธฐ ์๊น ๋์ ๊ฐ๋
์ฑ์ด ๋๋ฝ๋ค์..
์ค.. level8์ง๋ฆฌ๋ ์๋ฒ ๊ด๋ จ ๋ฌธ์ ์๋๋ฐ ์๋ฒ๋ ์ต๊ฐํด์ ๋ฐฑ๊ทธ๋ผ์ด๋๋ก ์คํ ์์น ํ์ผ์ ์์ฃผํ๋๋ณด๋ค์?
๊ทธ๋ฌ๋ฉด ์ผ๋ฐ ํ์ผ(์ด๋ก์)์์ rc์ ๊ด๋ จ๋ ์ ๋ณด๋ฅผ ํ์ธํ๊ธฐ ์ ์..
rc(rc ํ์ผ์ ์ค์ ๊ฐ์), rc.local(์ฌ๊ธฐ ๋ด๋ถ์ ์ค์ ํ ๋ฐฑ๊ทธ๋ผ์ด๋ ํ์ผ),sysinit(์์คํ
์ด๊ธฐํ?) ๋๋์ด๋๊น
rc.local๋ก ์ ๊ทผํด์ผ๊ฒ ์ฃ
level10์ ํ์ผ์ด ์ฌ๊ธฐ์ ์กด์ฌํ๋ค๋ ์ฌ์ค์ ์ ์ ์๋ค์
๊ทธ๋ผ ์ ํฌ๋ ์ด๋ํ ๊ถํ์ด ์์ผ๋๊น ์ง์ ์ฝ๋ฉํด์ ๋ฐ๋ด์ผ๊ฒ ์ฃ ?
์ฐธ๊ณ ๋ก level10์ผ๋ก ์คํ๋๋ ํ๋ก์ธ์ค๋ฅผ ํ์ธํด๋ณด์๋ฉด.. ์๋ฌด๊ฒ๋ ์๋๋ผ๊ณ ์
์.. ๋จ์ํ ํ๋ก์ธ์ค๋ก๋ง ์๋ค์
์๋ค์ ์ก(Process์ Daemon์ ์ฐจ์ด์ )
Process
- ํ๋ก๊ทธ๋จ์ ์คํ ์ํ์คํ ๋ฐ ์ข ๋ฃ๋ฅผ ์์ ๋กญ๊ฒ ์ํ
Ex) cat, vi, ps, grep etc...
Daemon
- ํญ์ ์ํ๋๊ณ ์๋ ํ๋ก์ธ์ค
- ์ฌ์ฉ์๊ฐ ์ง์ ์ ์ดํ์ง ์๊ณ ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์ํ
- ์ฃผ๋ก, ์์คํ ์คํํธ์ ์ ์๋์ผ๋ก ๊ธฐ๋๋๋ ํ๋ก์ธ์ค๋ฅผ ์ง์นญ
Ex) inetd, syslogd, crond, httpd etc...
Exploit Code
์ฝ๋๋ฅผ ์ง๊ธฐ ์ ์ ๊ณต์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ดํ C ์ฝ๋ ์์ฑ์ ๋ํ์ฌ ์์๋ด
์๋ค.
์ฌ์ฉํ ๋ชจ๋๋ก์จ๋ <sys/shm.h>์ <sys/types.h>๋ฅผ ๋ถ๋ฌ์์ผํด์
๊ทผ๋ฐ ๋ค๋ฅธ ๊ฒฝ์ฐ๋ ์์ด์ <sys/ipc.h>๋ ๋ถ๋ฌ์ฃผ์ธ์
์ธ์ฐ๊ธฐ ์ฝ๊ฒ ๋งํ์๋ฉด shm(shared memory ์ฝ์ด), types(ํ์
๋ค์ lib - ์์ด๋ ๋ฌด๋ฐฉํ ๋ฏ),
ipc(ํ๋ก์ธ์ค ํต์ ์ฝ์ด; Inter-Process Communication)
- int shmget(key_t key, int size, int shmflg) : ๊ณต์ ๋ฉ๋ชจ๋ฆฌ ์์ฑ(์ฌ์ฉ)
- key_t key : ๊ณต์ ๋ฉ๋ชจ๋ฆฌ ๊ตฌ๋ณ key๊ฐ
- int size : ๊ณต์ ๋ฉ๋ชจ๋ฆฌ ํฌ๊ธฐ ๊ฒฐ์
- int shmflg : ์ฌ๋ฌ๊ฐ์ง ์ต์
์ถ๊ฐ
- IPC_CREATE : ๊ถํ 0666์ ์ค์ (์ฒซ๋ฒ์งธ ์ธ์ key์ ํด๋น ๋ฉ๋ชจ๋ฆฌ ์์ผ๋ฉด ์์ฑํจ)
- IPC_EXCL(์์ธ) : ๊ณต์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์์ผ๋ฉด ์คํจ๋ก ๋ฐํ ์ ๊ทผ X
- void shmat(int shmid, const void *shmaddr, int shmflg) : ํ๋ก์ธ์ค์ ๊ณต์ ๋ฉ๋ชจ๋ฆฌ ์ธ๊ทธ๋จผํธ ์ฝ์
- int shmid : shmget ํจ์์ ์ํด ๋ฐํ๋ intํ์ ์๋ณ์
- const void *shmaddr : ์ผ๋ฐ์ ์ผ๋ก NULL ์ง์ (์ปค๋์ ๋งคํ X ๊ณณ์ ์๋์ผ๋ก ์ฐพ์ ๋ถ์ฌ์ค)
- int shmflg : ์ฌ๋ฌ๊ฐ์ง ์ต์
์ถ๊ฐ
- SHM_RDONLY : ๊ณต์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฝ๊ธฐ์ ์ฉ์ผ๋ก ์ค์
- SHM_RND : shmaddr์ด NULL์ด ์๋๊ฒฝ์ฐ๋ง ์ฌ์ฉ/shmaddr์ ๋ฐ์ฌ๋ฆผํด ๋ฉ๋ชจ๋ฆฌ๊ฒฝ๊ณ์ ๋ง์ถค
์ด์ ๋์ถฉ ํ์ํ ์ ๋ณด์ ๋ํ์ฌ ์์์ผ๋๊น ์ฝ๋ฉ์ ํด๋ด
์๋ค.
์ฐธ๊ณ ๋ก ๋ฐ๋ก level10์์ ์ฝ๋ฉํ๊ณ ์ ์ฅํ ๋ ค๋๊น ์๋์ ๋ง์ด ์ง์ฏฉ๋ฌ๋๋ฐ.. ์ ๊ทธ๋ฐ ์ค๋ฅ์ธ์ง๋ ๋ชจ๋ฅด์ง๋ง..
tmp ์ชฝ ํ์ผ์ ์ฝ๋ฉํ๋ฉด ๋ ๊ฑฐ ๊ฐ๋ค์(์งํผ tmp๋ฉด ์์ ํ์ผ ์ ์ฅํ๋ ๊ณณ์ด๋๊น..)
123456789101112131415161718192021 //vi exploit.c//gcc -o exploit exploit.c#include <stdio.h>#include <stdlib.h>#include <sys/shm.h>#include <sys/types.h>#include <sys/ipc.h>#include <unistd.h>#include <string.h>int main(int *argc, char **argv[]){int shm_id;void *shm_value;char flag[50];shm_id = shmget(7530, 100, 0);shm_value = shmat(shm_id, NULL, 0);strcpy(flag, shm_value);print("%s", flag);}cs
level11 : what!@#$?
์ฐธ๊ณ ์๋ฃ
์ฐธ๊ณ ์ด๋ฏธ์ง
'๐โSystem_Study > ๐โHackerSchool_FTZ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
HackerSchool_level12 (0) | 2022.09.14 |
---|---|
HackerSchool_level11 (2) | 2022.08.11 |
HackerSchool_level9 (2) | 2022.07.11 |
HackerSchool_level8 (0) | 2022.07.06 |
HackerSchool_level7 (0) | 2022.07.05 |