๋ฌด์์ ๋ฐ๋ผํ๋ฉฐ ์๋ฆฌ๋ฅผ ๊นจ์ฐ์น๋ ์น ํดํน : WebGoat ํธ
ํฌ๋ฆฌํตํฐ๋ธ
WebGoat ๋ฌธ์ ํ์ด๋ฅผ ํตํด ๋ฌด์์ ๋ฐ๋ผํ๋ฉด์ ๋ฐฐ์ฐ๊ณ , ์ตํ๊ณ , ์๋ฆฌ๋ฅผ ํ์ ํ ์ ์๋ ์น ํดํน ๊ฐ์!
์ด๊ธ
๋ชจ์ํดํน, WebGoat
๋ฆฌ๋ ์ค ์ปค๋์ ๊ฐ์ข ๋ณดํธ ๊ธฐ๋ฒ๊ณผ ๊ทธ์ ๋ํ ์ฐํ ๋ฐฉ์ ๋ฐ ๋ค์ํ ์ทจ์ฝ์ ๋ค์ ๋ถ์ํด๋ณด๋ ๊ฐ์์ด๋ฉฐ, ๊ฐ์๋ณ๋ก ์ค์ต ์์ ๊ฐ ์ ๊ณต ๋ฉ๋๋ค.
๋ฆฌ๋ ์ค ์ปค๋ ํดํน
CTF ์ปค๋ ๋ฌธ์ ํ์ด
Linux Kernel Exploit
์ด ๊ฐ์๋ ๋ฆฌ๋ ์ค ์ปค๋ ํดํน์ ๋ํ ์ ๋ฐ์ ์ธ ์ง์์ ํ์ตํ๋ ๊ฐ์์ ๋๋ค.
๋ฆฌ๋ ์ค ์ปค๋ ํดํน์ ๊ตญ๋ด์์ ๊ณต๋ถํ ์ ์๋ ์๋ฃ๊ฐ ๋งค์ฐ ๋ถ์กฑํ ๋ถ์ผ์ด๋ฉฐ, ํ๊ฒฝ ๊ตฌ์ฑ ๋จ๊ณ๋ถํฐ ์๋ง์ ์ ๋ก ์ฌํญ์ด ์๋ ๋ถ์ผ์ ๋๋ค. ํ์ง๋ง, ์ด ๊ฐ์๋ฅผ ์๊ฐํ์๋ฉด ํ๊ฒฝ ๊ตฌ์ฑ์ ๋ฌผ๋ก ์ด๊ณ ๋ค์ํ ๋ณดํธ ๊ธฐ๋ฒ์ ์ฐํ ๋ฐฉ๋ฒ๊ณผ ๊ฐ์ข ์ทจ์ฝ์ ์ ๋ํด ์ฝ๊ฒ ๊ณต๋ถํ์ค ์ ์์ต๋๋ค.
๋, ๋จ์ํ ํน์ ํด ์ฌ์ฉ๋ฒ๋ง์ ๊ฐ๋ฅด์น๊ฑฐ๋ ์ด๋ฏธ ์ ์๋ ค์ง ํดํน ๊ธฐ์ ๋ค์ ๋ค์ ์๊ฐํ๋ ์์ค์ ๋ถ๊ณผํ ์ฌํ ์ ๋ณด๋ณด์ ๊ฐ์๋ค๊ณผ ๋ฌ๋ฆฌ, low-level์์์ ๋์ ์๋ฆฌ์ ์ ๊ฐํ์ฌ ๊ฐ์ข ์ต์คํ๋ก์ ํ ํฌ๋๋ค์ ์๊ฐํ๋ค๋ ๊ฒ์ด ์ด ๊ฐ์์ ํน์ง์ ๋๋ค.
โฒ ๋ฆฌ๋ ์ค ์ปค๋์ ์ทจ์ฝ์ ์ ์ด์ฉํด ๊ถํ ์์น์ ์ผ์ผํจ ๋ชจ์ต
์ต๊ทผ ๋ช ๋ ๊ฐ major ํ CTF์์๋ ๋ฆฌ๋ ์ค ์ปค๋ ๋ฌธ์ ๊ฐ ๊พธ์คํ ์ถ์ ๋์ต๋๋ค. ์ต๊ทผ์ ๊ฒฝ์ฐ ์ถ์ ๋น๋๊ฐ ๋์ฑ ์ฆ๊ฐํ๋ ์ถ์ธ๊ณ ์. ์ด ๊ฐ์๋ฅผ "์๋ฒฝํ" ์ดํดํ์ ๋ค๋ฉด, CTF์์ ์ถ์ ๋๋ ๋ฆฌ๋ ์ค ์ปค๋ ๋ฌธ์ ๋ค์ ๋๋ถ๋ถ ํด๊ฒฐํ์ค ์ ์์ ๊ฒ์ด๋ฉฐ, ๋ฆฌ์ผ ์๋์์ ์ทจ์ฝ์ ์ ์ฐพ๋ ๋ฐ๋ ํฐ ๋์์ ๋ฐ์ผ์ค ์ ์์ ๊ฑฐ๋ผ ๋ง์๋๋ฆฌ๊ณ ์ถ์ต๋๋ค.
๋ง์ง๋ง์ผ๋ก ์ด ๊ฐ์์ ๊ฐ์ฅ ํฐ ํน์ง์, ๊ฐ์๋ง๋ค ๊ฐ์ฌ๊ฐ ์ง์ ์ ์ํ ์ค์ต ์์ ํ์ผ์ ์ ๊ณตํด ์ค๋ค๋ ์ ์ ๋๋ค. ์ด๋ฌํ ์ค์ต ์์ ํ์ผ์ ํตํด ์๊ฐ์ ์ฌ๋ฌ๋ถ๋ค์ด ์ง์ ๊ฐ์๋ฅผ ๋ฐ๋ผ ํด ๋ณด๊ณ , ๋๋ฒ๊น ์ ํด๋ณด์ค ์ ์์ต๋๋ค.
โฒ ์น์ 4.6. userfaultfd ํ์ฉ ๊ธฐ๋ฒ ๊ฐ์ ์๋ฃ
์ด ๊ฐ์๋ ๋๋ถ๋ถ ์์ ์์์ ๊ฐ์ด ํค๋ ธํธ๋ฅผ ์ด์ฉํ ๋ฐํ๋ก ๊ตฌ์ฑ๋์ด ์์ต๋๋ค.
๋ณธ๊ฒฉ์ ์ผ๋ก ๊ฐ์๋ฅผ ์์ํ๊ธฐ์ ์์, ๊ฐ์ฌ์ ๋ํ ๊ฐ๋จํ ์๊ฐ์ ๊ฐ์ ๊ณํ์ ์ค๋ช ํด ๋๋ฆฌ๋ ์น์ ์ ๋๋ค.
๋ฆฌ๋ ์ค ์ปค๋์ ํดํนํ๊ธฐ ์ํ ๊ธฐ๋ณธ์ ์ธ ๋ฐฐ๊ฒฝ์ง์์ ๊ณต๋ถํ๋ ์น์ ์ ๋๋ค.
๋ฆฌ๋ ์ค ์ปค๋์ ๋๋ฒ๊น ํ ์ ์๋ ํ๊ฒฝ์ ๊ตฌ์ฑํ๋ ๋ฐฉ๋ฒ์ ์์๋ณด๋ ์น์ ์ ๋๋ค. ๋ฆฌ์ผ ์๋๋ฅผ ์ํ ํ๊ฒฝ ์ธํ ๊ณผ์ ์์๋ ๋ฆฌ๋ ์ค ์ปค๋๊ณผ ํ์ผ ์์คํ ์ ์ง์ ๋น๋ํด๋ณผ ๊ฒ์ด๋ฉฐ, CTF๋ฅผ ์ํ ํ๊ฒฝ ์ธํ ๊ณผ์ ์์๋ ๋ฌธ์ ๋ฅผ ํ๊ธฐ ์ํ ์ค๋น ๊ณผ์ ์ ์์๋ณผ ์์ ์ ๋๋ค.
๋ฆฌ๋ ์ค ์ปค๋์ ๋ค์ํ ๋ณดํธ ๊ธฐ๋ฒ์ ๋ํด ์์๋ณด๊ณ , ๊ฐ ๋ณดํธ ๊ธฐ๋ฒ๋ค์ ์ฐํํ ์ ์๋ ํ ํฌ๋๋ค์ ์ค์ต์ ํตํด ๊ณต๋ถํด๋ณด๋ ์น์ ์ ๋๋ค. ๊ณต๋ถํด๋ณผ ๋ณดํธ ๊ธฐ๋ฒ๋ค์ ์ธํ ๊ณ์ด ์ํคํ ์ณ์ ๋ณดํธ ๊ธฐ๋ฒ๋ค์ด๋ฉฐ, ์ด 6๊ฐ์ง์ ๋ณดํธ ๊ธฐ๋ฒ์ ๊ณต๋ถํด ๋ณผ ์์ ์ ๋๋ค. ๋, ์ด๋ฒ ์น์ ๋ถํฐ๋ ๊ฐ ๊ฐ์๋ง๋ค ์ค์ต ์์ ํ์ผ์ด ์ ๊ณต๋ฉ๋๋ค.
๋ฆฌ๋ ์ค ์ปค๋ ์ทจ์ฝ์ ์ด ํฐ์ง๋ ์ํฉ์์ ๊ถํ ์์น์ ์ผ์ผํฌ ์ ์๋ ๋ค์ํ ํ ํฌ๋๋ค์ ๊ณต๋ถํด๋ณด๋ ์น์ ์ ๋๋ค.
๋ฆฌ๋ ์ค ์ปค๋์์ ๋ฐ์ํ ์ ์๋ ๋ค์ํ ์ ํ์ ์ทจ์ฝ์ ์ ์์๋ณด๋ ์น์ ์ ๋๋ค.
์ค์ ๋ก CTF์ ์ถ์ ๋ ๋ฆฌ๋ ์ค ์ปค๋ ๋ฌธ์ ๋ฅผ ํ์ด๋ณด๋ ์น์ ์ ๋๋ค. ํ์ด๋ณผ ๋ฌธ์ ๋, ๊ฐ์ฌ๊ฐ ์์๋ ํ์์ ์ด์ํ๋ ๋ํ์ธ 2020 Defenit CTF์์ ์ถ์ ๋ Input Test Driver ๋ฌธ์ ์ ๋๋ค.
๋ฆฌ๋ ์ค ์ปค๋์ ๊ณต๋ถํ ๋ ๋์์ด ๋๋ ๋ ํผ๋ฐ์ค๋ฅผ ์๊ฐํ ๋ค, ๊ฐ์๋ฅผ ๋ง๋ฌด๋ฆฌํ๋ ์น์ ์ ๋๋ค.
1. C ์ธ์ด
1. ์์คํ
ํดํน ๊ด๋ จ ์ง์ (BOF, ROP, UAF ๋ฑ)
2. ์ด์
๋ธ๋ฆฌ ์ธ์ด (x86_64)
Q. ์ ๋ ์์คํ
ํดํน์ ํด๋ณธ ์ ๋ ์๊ณ ์ด์
๋ธ๋ฆฌ ์ธ์ด๋ ๋ชจ๋ฅด๋๋ฐ ๊ฐ์๋ฅผ ๋ค์ด๋ ๋ ๊น์?
A. ๊ฐ ๊ฐ์๋ฅผ ์ ์ํ ๋, ์์คํ
ํดํน์ด ์ฃผ ๋ถ์ผ๊ฐ ์๋์ ๋ถ๋ค๋ ๋ค์ ์ ์๋๋ก ์ ์ํ๊ธฐ ๋๋ฌธ์, ์๋ก์ด ์ฉ์ด๊ฐ ๋ฑ์ฅํ ๋๋ง๋ค ๊ฐ์์ ๊ทธ์ ๋ํ ์ค๋ช
์ด ๋ค์ด๊ฐ ์์ต๋๋ค.
ํ์ง๋ง, ์ด๋ ์์ฝ๋ ์ค๋ช ์ด๊ธฐ ๋๋ฌธ์ ๋ชจ๋ฅด๋ ๊ฐ๋ ์ด ๋ฑ์ฅํ์ ๋ ๊ตฌ๊ธ ๊ฒ์๊ณผ ๋ณํํด์ ๊ณต๋ถํ์ ์ผ ํ๋ฉฐ, ์์คํ ํดํน ๊ด๋ จ ์ง์์ด ์๋ ์ํ์์ ์๊ฐํ์ค ๊ฒฝ์ฐ ํ์ต ๊ธฐ๊ฐ์ด ํจ์ฌ ๊ธธ์ด์ง๋ค๋ ์ ์ ์ผ๋์ ๋์ ์ผ ํฉ๋๋ค.
Q. ๋ฆฌ๋
์ค๋ ์ด๋ค ๋ฒ์ ์ ์ฌ์ฉํ์๋์?
A. ์ ๊ฒฝ์ฐ ์ฐ๋ถํฌ 18.04 ๋ฒ์ ์ ์ฌ์ฉํ์ต๋๋ค.(https://releases.ubuntu.com/18.04/)
Q. ๊ฐ์๊ฐ ์ฐ์ฌ์ ๊ฐ์๋๋ฐ, ๋จ์ ๊ฐ์๋ ์ธ์ ์ฌ๋ผ์ค๋์?
A. ํ์ฌ ๋ชจ๋ ๊ฐ์์ ์
๋ก๋๊ฐ ์๋ฃ๋์์ต๋๋ค.
ํ์ต ๋์์
๋๊ตฌ์ผ๊น์?
๋ฆฌ๋ ์ค ์ปค๋ ํดํน์ ์ฒ์ ๊ณต๋ถํด๋ณด๊ณ ์ถ์ ๋ถ๋ค
ํฌ๋๋ธ์ ๊ณต๋ถํด ๋ณด์๊ณ , ์ด์ ๋ฆฌ๋ ์ค ์ปค๋ ์ต์คํ๋ก์์ ์ ๋ฌธํ๊ณ ์ถ์ผ์ ๋ถ๋ค
์ ์ ์ง์,
ํ์ํ ๊น์?
C์ธ์ด
603
๋ช
์๊ฐ์
24
๊ฐ
์๊ฐํ
62
๊ฐ
๋ต๋ณ
4.8
์
๊ฐ์ ํ์
1
๊ฐ
๊ฐ์
๋ฆฌ๋ ์ค ์ปค๋ ํด์ปค ๋ฐ ์ปจํธ๋ฆฌ๋ทฐํฐ๋ก ํ๋ ์ค์ธ ๊นํ์ฐ(V4bel)์ ๋๋ค.
โฆ Contact: imv4bel@gmail.com
Awards
โฆ Pwn2Own Berlin 2025 Red Hat Linux in the LPE category WIN (Theori, $15,000)
โฆ Google kernelCTF LTS-6.6.75/COS-105 1-day WIN (CVE-2025-21756, $71,337)
โฆ Google kernelCTF LTS-6.6.56/COS-109 0-day WIN (CVE-2024-50264, $81,337)
โฆ Google kernelCTF LTS-6.6.35 0-day WIN (CVE-2024-41010, $51,337)
Vulnerability Reports
โฆ CVE-2024-27394 (Linux Kernel TCP Use-After-Free)
โฆ CVE-2024-27395 (Linux Kernel OpenvSwitch Use-After-Free)
โฆ CVE-2024-27396 (Linux Kernel GTP Use-After-Free)
โฆ CVE-2023-51779 (Linux Kernel Bluetooth socket Use-After-Free)
โฆ CVE-2023-51780 (Linux Kernel ATM socket Use-After-Free)
โฆ CVE-2023-51781 (Linux Kernel Appletalk socket Use-After-Free)
โฆ CVE-2023-51782 (Linux Kernel Rose socket Use-After-Free)
โฆ CVE-2023-32269 (Linux Kernel NET/ROM socket Use-After-Free)
โฆ CVE-2022-41218 (Linux Kernel DVB core Use-After-Free)
โฆ CVE-2022-45884 (Linux Kernel DVB core Use-After-Free)
โฆ CVE-2022-45885 (Linux Kernel DVB core Use-After-Free)
โฆ CVE-2022-45886 (Linux Kernel DVB core Use-After-Free)
โฆ CVE-2022-45919 (Linux Kernel DVB core Use-After-Free)
โฆ CVE-2022-40307 (Linux Kernel Device Driver Use-After-Free)
โฆ CVE-2022-41848 (Linux Kernel Device Driver Use-After-Free)
โฆ CVE-2022-41849 (Linux Kernel Device Driver Use-After-Free)
โฆ CVE-2022-41850 (Linux Kernel Device Driver Use-After-Free)
โฆ CVE-2022-44032 (Linux Kernel Device Driver Use-After-Free)
โฆ CVE-2022-44033 (Linux Kernel Device Driver Use-After-Free)
โฆ CVE-2022-44034 (Linux Kernel Device Driver Use-After-Free)
โฆ CVE-2022-45888 (Linux Kernel Device Driver Use-After-Free)
Linux Kernel Contributions
โฆ vsock: prevent null-ptr-deref in vsock_*[has_data|has_space]
(github.com/torvalds/linux/commit/91751e248256efc111e52e15115840c35d85abaf)
โฆ vsock/virtio: cancel close work in the destructor
(github.com/torvalds/linux/commit/df137da9d6d166e87e40980e36eb8e0bc90483ef)
โฆ vsock/virtio: discard packets if the transport changes
(github.com/torvalds/linux/commit/2cb7c756f605ec02ffe562fb26828e4bcc5fdfc1)
โฆ vsock/virtio: Initialization of the dangling pointer occurring in vsk->trans
(github.com/torvalds/linux/commit/6ca575374dd9a507cdd16dfa0e78c2e9e20bd05f)
โฆ hv_sock: Initializing vsk->trans to NULL to prevent a dangling pointer
(github.com/torvalds/linux/commit/e629295bd60abf4da1db85b82819ca6a4f6c1e79)
โฆ tcp: Fix Use-After-Free in tcp_ao_connect_init
(github.com/torvalds/linux/commit/80e679b352c3ce5158f3f778cfb77eb767e586fb)
โฆ net: openvswitch: Fix Use-After-Free in ovs_ct_exit
(github.com/torvalds/linux/commit/5ea7b72d4fac2fdbc0425cd8f2ea33abe95235b2)
โฆ net: gtp: Fix Use-After-Free in gtp_dellink
(github.com/torvalds/linux/commit/f2a904107ee2b647bb7794a1a82b67740d7c8a64)
โฆ Bluetooth: af_bluetooth: Fix Use-After-Free in bt_sock_recvmsg
(github.com/torvalds/linux/commit/2e07e8348ea454615e268222ae3fc240421be768)
โฆ atm: Fix Use-After-Free in do_vcc_ioctl
(github.com/torvalds/linux/commit/24e90b9e34f9e039f56b5f25f6e6eb92cdd8f4b3)
โฆ appletalk: Fix Use-After-Free in atalk_ioctl
(github.com/torvalds/linux/commit/189ff16722ee36ced4d2a2469d4ab65a8fee4198)
โฆ net/rose: Fix Use-After-Free in rose_ioctl
(github.com/torvalds/linux/commit/810c38a369a0a0ce625b5c12169abce1dd9ccd53)
โฆ media: dvb-core: Fix use-after-free due to race at dvb_register_device()
(github.com/torvalds/linux/commit/627bb528b086b4136315c25d6a447a98ea9448d3)
โฆ af_key: Fix heap information leak
(github.com/torvalds/linux/commit/2f4796518315ab246638db8feebfcb494212e7ee)
โฆ netrom: Fix use-after-free caused by accept on already connected socket
(github.com/torvalds/linux/commit/611792920925fb088ddccbe2783c7f92fdfb6b64)
โฆ net/rose: Fix to not accept on connected socket
(github.com/torvalds/linux/commit/14caefcf9837a2be765a566005ad82cd0d2a429f)
โฆ net/x25: Fix to not accept on connected socket
(github.com/torvalds/linux/commit/f2b0b5210f67c56a3bcdf92ff665fb285d6e0067)
โฆ efi: capsule-loader: Fix use-after-free in efi_capsule_write
(github.com/torvalds/linux/commit/9cb636b5f6a8cc6d1b50809ec8f8d33ae0c84c95)
โฆ HID: roccat: Fix Use-After-Free in roccat_read
(github.com/torvalds/linux/commit/cacdb14b1c8d3804a3a7d31773bc7569837b71a4)
โฆ video: fbdev: smscufx: Fix use-after-free in ufx_ops_open()
(github.com/torvalds/linux/commit/5610bcfe8693c02e2e4c8b31427f1bdbdecc839c)
โฆ video: fbdev: smscufx: Fix several use-after-free bugs
(github.com/torvalds/linux/commit/cc67482c9e5f2c80d62f623bcc347c29f9f648e1)
โฆ char: xillybus: Fix trivial bug with mutex
(github.com/torvalds/linux/commit/c002f04c0bc79ec00d4beb75fb631d5bf37419bd)
โฆ bpf: Always use maximal size for copy_array()
(github.com/torvalds/linux/commit/45435d8da71f9f3e6860e6e6ea9667b6ec17ec64)
โฆ media: dvb-core: Fix UAF due to refcount races at releasing
(github.com/torvalds/linux/commit/fd3d91ab1c6ab0628fe642dd570b56302c30a792)
์ ์ฒด
33๊ฐ โ (5์๊ฐ 31๋ถ)
ํด๋น ๊ฐ์์์ ์ ๊ณต:
์ ์ฒด
24๊ฐ
4.8
24๊ฐ์ ์๊ฐํ
์๊ฐํ 1
โ
ํ๊ท ํ์ 5.0
5
๋ฆฌ๋ ์ค ์ปค๋ ํดํน์ ์ฒ์ ๋ฐฐ์ฐ๋ ์ ์ฅ์์ ๋งค์ฐ ์ ์ฉํ ๊ฐ์์์ต๋๋ค. ํต์ฌ ๋ด์ฉ์ ์ดํด๊ฐ ์ฝ๊ฒ ์ค๋ช ํด์ฃผ์ จ๊ณ QEMU๋ฅผ ํตํ ํ์ต ์์ ๋ก ๋์ฑ ์ดํด๊ฐ ์ฌ์ ์ต๋๋ค. https://defenit.kr/2019/12/03/Pwn/%E3%84%B4%20Research/linux-kenel-bpf/ ํ Defenit์ ์ปค๋ LPE ์ทจ์ฝ์ ๋ถ์ ์๋ฃ์ธ ์ ๋งํฌ์ ์ฐ๊ณํด์ ํ์ตํ๋ฉด ํ์ต ํจ๊ณผ๊ฐ ๋์ฑ ์ข์ ๊ฒ ๊ฐ์ต๋๋ค. ์ฌ๋ฌ๊ฐ์ง๋ก ํ์ต์ ๋์ ๋ง์ด ๋ฐ๊ณ ๊ฐ๋๋ค. ๊ฐ์ฌํฉ๋๋ค.
์์ธํ ํ๊ธฐ ๊ฐ์ฌ๋๋ฆฝ๋๋ค :)
๊ฐ์ ๋ถ์ผ์ ๋ค๋ฅธ ๊ฐ์๋ฅผ ๋ง๋๋ณด์ธ์!
์ โฉ33,000
5๊ฐ์ ํ ๋ถ ์
โฉ165,000