[10์ 1์ฃผ์ฐจ] ํดํน ์๋ ค์ค๊ฒ 9ํ: Command Injection ์๋
ํ์ธ์! ์ค๋์ ํดํน ์๋ ค์ค๊ฒ๋ Command Injection์
๋๋ค. ๐
Command Injection์ ํด์ํ๋ฉด ๋ช
๋ น ์ฃผ์
์ทจ์ฝ์ ์ผ๋ก, ์ด๋ฆ์ผ๋ก ์ง์ํด๋ณด๋ฉด ํด์ปค๊ฐ ์
๋ ฅํ ๋ช
๋ น์ด๊ฐ ๊ทธ๋๋ก ์คํ๋ ์ ์๋ ๊ฑธ๊น์? ๐ฑ
ํด๋น ์ทจ์ฝ์ ์ ๋ฆฌ๋
์ค ๋ฟ ์๋๋ผ ์น์์๋ ๋ฐ์ํ๋ ์ทจ์ฝ์ ์ด์ง๋ง, ์ด๋ฒ์๋ ์์คํ
ํดํน ๊ด์ ์์ ์ค๋ช
ํด๋๋ฆด๊ฒ์. ๐ ํด์ปค๋ ๋ฌด์จ ๋ช
๋ น์ ๋ด๋ฆด๊น์? ๐ฟ ์ ๊น, ์์ํ๊ธฐ ์ ์ ๋ฆฌ๋
์ค์ ์ฌ๋ฌ ๋ฉํ ๋ฌธ์๋ฅผ ์์๋์? ๐ค
; , && , || , < ๋ฑ ๋ฉํ ๋ฌธ์๋ฅผ ์ ๋ชจ๋ฅด๊ฒ ๋ค๋ฉด Hackyboiz์ ํดํคํผ๋์๋ฅผ ๋ณด๊ณ ์ค๋๊ฑธ ์ถ์ฒ๋๋ฆด๊ฒ์.์ฌ๊ธฐ์ ์ค์ํ ๊ฒ์ '์ํฐ๋ฅผ ํ ๋ฒ๋ง ๋๋ฌ๋ ์ฌ๋ฌ ๋ช
๋ น์ด๋ฅผ ์คํํ ์ ์๋ค๋ ๊ฒ' ์
๋๋ค! ๐คจ ์ด๊ฒ์ ์ด๋ป๊ฒ ํ์ฉํ ์ ์์์ง ๊ฐ์ด ์์๋ด์! Command Injection์ด ๋ญ์์? ๐ง
Command Injection(๋ช
๋ น ์ฃผ์
)์ ์ฌ์ฉ์์ ์
๋ ฅ์ ํํฐ๋งํ์ง ์์ ๋, ์ฌ์ฉ์๊ฐ ์๋ํ๋ ๋ช
๋ น์ ์ถ๊ฐ์ ์ผ๋ก ์ฝ์
ํ์ฌ ํธ์คํธ ์ด์ ์ฒด์ (OS)์์ ์์์ ๋ช
๋ น์ ์คํํ ์ ์์ต๋๋ค.
๋ํ์ ์ผ๋ก ์ฌ์ฉ์์ ์
๋ ฅ์ด
system() ํจ์์ ์ธ์๋ก ์ฌ์ฉ๋๊ฑฐ๋ ์น์์๋ ์ฌ์ฉ์ ์ ๊ณต ๋ฐ์ดํฐ(์๋ฒ์ ์ ๋ฌํ๋ ์์, ์ฟ ํค, HTTP ํค๋ ๋ฑ)๊ฐ ์์คํ
์์ ์ ๋ฌ๋ ๋ ์
๋ ฅ์ ๊ฒ์ฌํ์ง ์๋ ๊ฒ์ด ๋ฌธ์ ๊ฐ ๋ฉ๋๋ค.๋ฐ๋ก ์ด๋, ์์์ ๋งํ๋ '์ํฐ๋ฅผ ํ ๋ฒ๋ง ๋๋ฌ๋ ์ฌ๋ฌ ๋ช
๋ น์ด๋ฅผ ์คํํ ์ ์๋ค๋ ๊ฒ' ์ ์ง์ค์ ์๊ฒ ๋ค์. ๋ฐ๋ก ํ๋ก๊ทธ๋จ์ด ์์ํ๋ ๋ช
๋ น์ด(command1) ํ๋ ๋๊ฒจ์ฃผ๊ณ , ๊ทธ ๋ค๋ก ์คํํ๊ณ ์ถ์ ๋ช
๋ น์ด(command2, command3, ..... )๋ฅผ ๊ปด๋ฃ์ ์ ์์ต๋๋ค.
์๋ฌดํผ ํญ์ ์ฌ์ฉ์์ ์
๋ ฅ์ ๊ฒ์ฌํ์ง ์๋ ๊ฒ์ด ๋ฌธ์ ๊ฐ ๋๋ค์. ๐ ์์คํ
ํดํน(pwnable) ๋ฌธ์ ๋ฅผ ํ๋ค ๋ณด๋ฉด ํญ์ ์ฐ๋ฆฌ ๊ฐ์ด์ ๋๊ทผ๊ฑฐ๋ฆฌ๊ฒ ๋ง๋๋๊ฒ
system() ํจ์์ฃ ? ๐ system("/bin/sh"); ์ ํํ๋ฅผ ๊ฐ์ฅ ๋ง์ด ๋ณด์
จ์ ๊ฒ ๊ฐ์์.system() ํจ์์ ์ํ์ int system(const char* command) ์ผ๋ก ์ธ์์ธ command ๋ฅผ ์์คํ
์ ๋ช
๋ น์ด๋ก ๋ฐ๋ก ์ ๋ฌํด์. ๋์ถฉ ๋ค์ด๋ ์์ฒญ ์ํํด๋ณด์ด๋์?
Command Injection์ Command๊ฐ ๋ฐ๋ก ์ system() ํจ์์ ์ธ์๋ฅผ ๋งํ๋ ๊ฒ๊ฐ๋ค์.command_injection ํ์ผ์ ์คํํ๋ฉด ์ฒซ ๋ฒ์งธ ์ธ์๊ฐ์ ํด๋นํ๋ cat ๋ช
๋ น์ด๋ก ํ์ผ์ ์ฝ์ต๋๋ค.ํ์ง๋ง ์ด๋, command๋ฅผ ํํฐ๋งํ๋ ๊ณผ์ ์ด ์๊ธฐ ๋๋ฌธ์ ์ถ๊ฐ์ ์ผ๋ก
; ์ ์ฌ์ฉํด์ command๋ฅผ ์ถ๊ฐํด๋ณผ๊ฒ์! " " ๋ฅผ ์ฌ์ฉํ์ฌ ํ๋์ ๋ฌธ์์ด๋ก ์ ์กํ ์ ์์ต๋๋ค."Hacking.txt; cat Hacking_JJack.txt" ๋ก ํ๋ฒ์ ์ธ์๋ฅผ ๋ณด๋ด์ฃผ๋ฉด ๋ค์ด์ด์ Hacking_JJack.txt ์ ํ์ผ๋ ์ฝ๊ฒ ๋ฉ๋๋ค.ํ์ผ์ SetUID ๊ฐ ์ค์ ๋์ด ์์ผ๋ฉด ์ผ๋ฐ ์ฌ์ฉ์๋ ํด๋น ํ์ผ์ ์์ ์ ๊ถํ์ ๊ฐ์ง๊ฒ ๋ฉ๋๋ค. ์ด๋, command_injection ํ์ผ์ด root ์์ ์์ SetUID ๊ฐ ์ค์ ๋์ด ์๋ค๋ฉด, root ๊ถํ์ ์์ ๋ธ ์๋ ์๊ฒ ๋ค์! ๐ฑ๊ทธ๋ฆฌ๊ณ ๋ง์ฝ rm -rf / ๋ช
๋ น์ ๋ด๋ฆฐ๋ค๋ฉด ์ด๋ค ์ผ์ด ๋ฒ์ด์ง์ง ์๊ฐ์กฐ์ฐจ ํ๊ณ ์ถ์ง ์๋ค์. ์์คํ
์ ๋ชจ๋ ํ์ผ์ ๊ฐ์ ๋ก ์ญ์ ํด๋ฒ๋ฆฝ๋๋ค.Christmas CTF 2020์ oil system ๋ฌธ์ ๋ฅผ ์์๋์?
Fabu1ous๋์ด ๋ง๋ค๊ณ ๊ณ ํต๋ฐ์ ๋ฌธ์ ์
๋๋ค. ๐คฃ ์ด ๋ฌธ์ ๋ ํ์ผ์ ์ด๋ฆ์ ์ฌ์ฉ์๊ฐ ์
๋ ฅํ ์ ์๊ณ , Out of Bounds(OOB) ์ทจ์ฝ์ ์ ์ด์ฉํด ๋ฆฌํด๊ฐ์ ์กฐ์ํ๋๋ก ๋ง๋ ๋ฌธ์ ์๋๋ฐ ์๋ํ์ง ์๊ฒ ๋ฐ๋ก ์ด Command Injection์ผ๋ก๋ ํ๋ ธ๊ธฐ ๋๋ฌธ์ด์ฃ !
๋ฐ๋ก ์ด ๋ถ๋ถ์ด ํ์ผ๋ช
์ ํํฐ๋งํ๋ ํจ์์์ต๋๋ค. ์ Command Injection์ด ๋ฐ์ํ๋์ง ์์๋ณด์ฃ . ๐ต๐ป ์๋ฌธ ์๋ฌธ์(a~z) ์ด์ธ์ ์ฌ์ฉ์ ์
๋ ฅ์ด ๋ค์ด์ค๋ฉด ์ข
๋ฃํ๋๋ก ํ์ง๋ง, ๋ชจ๋ ์
๋ ฅ์ ๊ฒ์ฌํ๋ ๊ฒ์ด ์๋ ์ฒซ ๋ฌธ์๋ง ๊ฒ์ฌํ๋ค์. ๐ฑ ๋ฐ๋ผ์ a;sh ๋ฑ์ ์
๋ ฅ์ผ๋ก ์์ ์คํํ ์ ์์๋ค๊ณ ํด์. ๐คฏ ์ค์ ๋ก ๋ง์ ๋ถ๋ค์ด Command Injection์ผ๋ก ํ์ด์ฃผ์
จ์ต๋๋ค. ์์ธํ ๋ฌธ์ ํด์ค๊ณผ ๋ผ์ดํธ์
์ด ๊ถ๊ธํ์๋ฉด ์ฐธ๊ณ ํด์ฃผ์ธ์! ๊ผญ ๋ช
๋ น์ด๋ก๋ง ๊ณต๊ฒฉ์ด ๊ฐ๋ฅํ๊ฐ์? ์๋์! ์คํฌ๋ฆฝํธ๊ฐ ์คํ๋ ๋๋ Command Injection ๊ณต๊ฒฉ์ ์ํํ ์ ์์ต๋๋ค. ์์๋ก 10์ 2์ผ๋ ์์ฑ๋ ๋ฐ๋๋ฐ๋ํ ํ๋ฃจํ์ค์ ๊ฐ์ ธ์๋ดค์ด์. ์์ฝํ๋ฉด Cisco HyperFlex์์ 3๊ฐ์ง ์ทจ์ฝ์ ์ด ๋ฐ๊ฒฌ๋์๋๋ฐ ๊ทธ ์ค์ CVSS์ ์๊ฐ 9.8๋ก ๊ฐ์ฅ ๋์ ์ทจ์ฝ์ ์ด ๋ฐ๋ก Command Injection์ด๋ค์. ์ฌ์๋ณด์ด์ง๋ง ๊ทธ๋งํผ ๊ฐ๋ ฅํ ์ทจ์ฝ์ ์ด๋ผ๋ ๊ฑฐ๊ฒ ์ฃ . ๐ ์ฌ์ฉ์์๊ฒ ๊ณ์ ์ ๋ณด๋ฅผ ์
๋ ฅ๋ฐ์ ๋, ํ์ด์ฌ ์คํฌ๋ฆฝํธ๋ฅผ ํ์ฉํด ๊ณ์ ์ ๋ณด๋ฅผ ํด์ํํ๋ ์์
์ ์ํํฉ๋๋ค. ๋ฐ๋ผ์ ํจ์ค์๋ ํ๋์ ์๋์ ๊ฐ์ ์คํฌ๋ฆฝํธ๋ฅผ ์ฝ์
ํ๋ฉด ์์คํ
์ ์ฌ๋ถํ
์ํฌ ์๋ ์์ด์. ๋ง์ฐฌ๊ฐ์ง๋ก ์์ธํ ์ ๋ณด๋ฅผ ์ํ์๋ฉด ๋ธ๋ก๊ทธ๋ฅผ ์ฐธ๊ณ ํด์ฃผ์ธ์! ๊ทธ๋ฆฌ๊ณ ๊ตฌ๊ฒฝ๋ ํ ๋ฒ.. ๐ ์ด๋ป๊ฒ ๋ง์ ์ ์์๊น์?
์ฐ์ ์ฌ์ฉ์์ ์
๋ ฅ์ ๊ทธ๋๋ก ์์คํ
๋ช
๋ น์ผ๋ก ์คํํ์ง ์๋ ๊ฒ์ด ๊ฐ์ฅ ์ข๊ฒ ์ง๋ง, ํญ์ ๊ทธ๋ด ์๋ ์๊ฒ ์ฃ . ๐
์์คํ
๋ช
๋ น์ ์ฌ์ฉ์ ์
๋ ฅ์ ์ฌ์ฉํด์ผ ํ๋ ๊ฒฝ์ฐ, ์ฌ์ฉ์์ ์
๋ ฅ์ ๊ฒ์ฆํ๋ ๊ณผ์ ์์ ํ์ฉ๋ ๋ช
๋ น์ ๋ํ ํ์ดํธ๋ฆฌ์คํธ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ํ์ฉ๋ ๋ช
๋ น์ด ๋๋ ํ์ฉ๋ ๋ฌธ์(์๋ฅผ ๋ค์ด ์ซ์์ ์๋ฌธ์๋ง ํ์ฉ)๋ง ์ฌ์ฉํ๋๋ก ํ ์ ์๊ฒ ์ฃ . ๋ํ ๋ฌธ์์ด์ ๊ธธ์ด๋ฅผ 10์๋ก ์ ํํ๊ฑฐ๋,
&& & || | ; $ > < \ ! ๋ฑ์ ๋ฌธ์๋ฅผ ๋ธ๋๋ฆฌ์คํธ์ ํฌํจํ์ฌ ์คํ์ํค์ง ๋ชปํ๋๋ก ํด์ผํฉ๋๋ค. ๋ฌผ๋ก ;๋ง ๋ธ๋๋ฆฌ์คํธ์ ๋ฃ๊ณ &&๋ ํ์ฉํ๋ ๊ทธ๋ฐ ์ผ์ ์์ด์ผ๊ฒ ์ฃ .๊ทธ๋ฆฌ๊ณ ํ๋ก์ธ์ค์๊ฒ ์์
์ ํ์ํ ์ต์ํ์ ๊ถํ๋ง ์ ๊ณตํ๋๋ก ํ์ฌ ์ฌ์ฉ์๊ฐ ๋ช
๋ น์ ์ฃผ์
ํ ์ ์๋ ๊ฒฝ์ฐ์๋ ๊ถํ์ด ์ ํ๋๋๋ก ํด์ผํฉ๋๋ค. ์ค๋๋ ์ฝ์ด์ฃผ์
์ ๊ฐ์ฌํฉ๋๋ค! ๐ ๊ธ์์ผ์๋ ์ฌ๋ฐ๋ ๋ด์ฉ์ ์ค๋นํ์ผ๋ ๊ธฐ๋ํด์ฃผ์ธ์. ๐ ์ค๋ ์ ํด๋๋ฆฐ ๋ด์ฉ์ด ๋ง์์ ๋์
จ๋์? ์ฃผ์ ์น๊ตฌ๋ค์๊ฒ ๋ด์ค๋ ํฐ๋ฅผ ์ถ์ฒํด์ฃผ์ธ์! ๋ค์์ฃผ์๋ ์์ฐฌ ๋ด์ฉ์ผ๋ก ๋์์ค๊ฒ ์ต๋๋ค. ๐ ํน์ ๋ง์์ ์๋๋ ๋ถ๋ถ์ด ์์๋์? ์ฌ๊ธฐ์์ ํผ๋๋ฐฑ์ ์ ๋ฌํด์ฃผ์ธ์! ์ฌ๋ฌ๋ถ์ ์๊ฒฌ๋ค์ ์ ๊ทน ๋ฐ์ํด์ ๋์ฑ ์ ์ตํ ๋ด์ค๋ ํฐ๋ฅผ ๋ง๋ค์ด๊ฐ๋๋ก ํ๊ฒ ์ต๋๋ค. ๐ ํดํค๋ณด์ด์ฆ |