Sploitus

Exploit for CVE-2022-30525

kitploit Β· 2026-09-03

Exploit Code

MARKDOWN46 lines
## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-FURKANZENGIN-CVE-2022-30525
# CVE-2022-30525

Zyxel의 CGI ν”„λ‘œκ·Έλž¨μ—μ„œ λ°œμƒν•œ OS λͺ…λ Ή μ£Όμž… 취약점

# μš”μ•½

이 취약점은 2022λ…„ 4μ›” 13일에 처음 λ°œκ²¬λ˜μ—ˆμœΌλ©°, Zyxel λ°©ν™”λ²½ μ œν’ˆμ—μ„œ 원격 μ½”λ“œ 싀행을 μœ λ°œν–ˆμŠ΅λ‹ˆλ‹€. CVSS 점수 9.8의 μ€‘μš”ν•œ μ·¨μ•½μ μœΌλ‘œ, 발견 ν›„ 15일 λ§Œμ— Zyxel이 μ—…λ°μ΄νŠΈλ₯Ό μΆœμ‹œν•˜μ—¬ μ°¨λ‹¨ν–ˆμŠ΅λ‹ˆλ‹€. 이 κ³Όμ •μ—μ„œ μ΅œμ†Œ 20,800개의 λͺ¨λΈμ΄ 영ν–₯을 λ°›μ•˜μœΌλ©°, λŒ€λΆ€λΆ„ 유럽 μ§€μ—­μ΄μ—ˆμŠ΅λ‹ˆλ‹€.

취약점은 μ œλ‘œν„°μΉ˜ ν”„λ‘œλΉ„μ €λ‹ μ• ν”Œλ¦Ώ λ‚΄μ˜ "setWanPortSt" λͺ…λ Ήμ–΄λ‘œ 인해 λ°œμƒν•©λ‹ˆλ‹€. "setWanPortSt" λͺ…령어에 λŒ€ν•œ 접근은 /ztp/cgi-bin/handler μ—”λ“œν¬μΈνŠΈλ₯Ό 톡해 μ΄λ£¨μ–΄μ§‘λ‹ˆλ‹€.

Zyxel이 ν•΄λ‹Ή 취약점에 λŒ€ν•œ λͺ¨λΈ μ—…λ°μ΄νŠΈλ₯Ό μ œκ³΅ν•œ 이후 μ•…μš© μ‚¬λ‘€λŠ” κ΄€μ°°λ˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€. 영ν–₯을 받은 λͺ¨λΈμ˜ μ†Œν”„νŠΈμ›¨μ–΄ 버전은 v5.30으둜 μ—…κ·Έλ ˆμ΄λ“œλ˜μ—ˆμœΌλ©°, 취약점을 λ°©μ§€ν•˜κΈ° μœ„ν•΄ μžλ™ μ†Œν”„νŠΈμ›¨μ–΄ μ—…λ°μ΄νŠΈλ₯Ό ν™œμ„±ν™”ν•΄μ•Ό ν•œλ‹€λŠ” 점이 κ°•μ‘°λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

# μ†Œκ°œ

2022λ…„ 4μ›” 13일, Rapid7은 Zyxel λ°©ν™”λ²½ μž₯μΉ˜μ— 영ν–₯을 λ―ΈμΉ˜λŠ” 취약점을 λ³΄κ³ ν–ˆμŠ΅λ‹ˆλ‹€. 이 취약점을 톡해 κ³΅κ²©μžλŠ” 인증 없이 μ›κ²©μœΌλ‘œ "nobody" μ‚¬μš©μžλ‘œ μž„μ˜ λͺ…령을 μ£Όμž…ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 이 취약점은 치λͺ…적인 μˆ˜μ€€μœΌλ‘œ μ²˜λ¦¬λ˜μ—ˆμœΌλ©° CVSS μ μˆ˜λŠ” 9.8둜 κ²°μ •λ˜μ—ˆμŠ΅λ‹ˆλ‹€. 이후 Zyxel은 2022λ…„ 4μ›” 28일에 λ³΄μ•ˆ μ—…λ°μ΄νŠΈλ₯Ό λ°œν–‰ν•˜μ—¬ 취약점을 ν•΄κ²°ν–ˆμŠ΅λ‹ˆλ‹€. 2022λ…„ 5μ›” 12일, Rapid7은 이 취약점에 λŒ€ν•œ κΆŒκ³ μ™€ Metasploit λͺ¨λ“ˆμ„ κ²Œμ‹œν–ˆμŠ΅λ‹ˆλ‹€.

# 취약점과 κ·Έ 영ν–₯

ShadowServer의 연ꡬ원듀은 CVE-2022-30525 μ•…μš© μ‹œλ„λ₯Ό λͺ¨λ‹ˆν„°λ§ν•˜κΈ° μ‹œμž‘ν–ˆμŠ΅λ‹ˆλ‹€. 쑰사 κ³Όμ •μ—μ„œ 영ν–₯을 받은 Zyxel λ°©ν™”λ²½ λͺ¨λΈ 쀑 μ΅œμ†Œ 20,800κ°œκ°€ μ˜¨λΌμΈμ— λ…ΈμΆœλœ κ²ƒμœΌλ‘œ λ‚˜νƒ€λ‚¬μŠ΅λ‹ˆλ‹€. 영ν–₯을 받은 λͺ¨λΈμ˜ λŒ€λΆ€λΆ„μ€ ν”„λž‘μŠ€μ™€ μ΄νƒˆλ¦¬μ•„μ— μžˆμ—ˆμŠ΅λ‹ˆλ‹€.

![λŒ€μ²΄ ν…μŠ€νŠΈ](https://assets.kitploit.com/production/public/readmes/25668/01d3684ec53ca90ce4fc6cd6f28c379056a361df876a3266a910dccac434b8f7.jpg)

취약점은 κ³΅κ²©μžκ°€ μ œκ³΅ν•œ 데이터와 ν•¨κ»˜ "os.system"을 μ‚¬μš©ν•˜λŠ” λ°μ„œ λΉ„λ‘―λ©λ‹ˆλ‹€. /ztp/cgi-bin/handler μ—”λ“œν¬μΈνŠΈκ°€ 곡격을 μ‹€ν–‰ν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€. HandlerλŠ” μ—¬λŸ¬ λͺ…령을 μ‹€ν–‰ν•  수 μžˆλŠ” Python μŠ€ν¬λ¦½νŠΈμž…λ‹ˆλ‹€. 이 였λ₯˜λ₯Ό 처음 λ³΄κ³ ν•œ Jake BainesλŠ” μžμ‹ μ˜ λΈ”λ‘œκ·Έμ—μ„œ λ‹€μŒκ³Ό 같이 취약점을 μ„€λͺ…ν–ˆμŠ΅λ‹ˆλ‹€: "Rapid7은 ZTP(Zero Touch Provisioning)λ₯Ό μ§€μ›ν•˜λŠ” Zyxel λ°©ν™”λ²½(ATP μ‹œλ¦¬μ¦ˆ, VPN μ‹œλ¦¬μ¦ˆ, USG FLEX μ‹œλ¦¬μ¦ˆ(USG20-VPN 및 USG20W-VPN 포함))에 영ν–₯을 λ―ΈμΉ˜λŠ” 취약점을 λ°œκ²¬ν•˜μ—¬ λ³΄κ³ ν–ˆμŠ΅λ‹ˆλ‹€. CVE-2022-30525둜 μ‹λ³„λœ 이 취약점은 μΈμ¦λ˜μ§€ μ•Šμ€ 원격 κ³΅κ²©μžκ°€ 영ν–₯을 λ°›λŠ” μž₯μΉ˜μ—μ„œ nobody μ‚¬μš©μžλ‘œ μž„μ˜ μ½”λ“œλ₯Ό μ‹€ν–‰ν•  수 μžˆλ„λ‘ ν•©λ‹ˆλ‹€."

λ¬Έμ œλŠ” μ œλ‘œν„°μΉ˜ ν”„λ‘œλΉ„μ €λ‹ κ΅¬ν˜„ λ‚΄μ—μ„œ "setWanPortSt"λΌλŠ” λͺ…λ Ήμ–΄λ‘œ 인해 λ°œμƒν•˜λ©°, 이 λͺ…λ Ήμ–΄λŠ” 원격 ν”„λ‘œλΉ„μ €λ‹μ΄ λ°©ν™”λ²½ 포트의 IP 섀정을 λ³€κ²½ν•  수 μžˆλ„λ‘ ν•©λ‹ˆλ‹€.

# μ•…μš©

μ•…μš©μ΄ μ–΄λ–»κ²Œ μ΄λ£¨μ–΄μ§€λŠ”μ§€ 더 잘 μ΄ν•΄ν•˜κΈ° μœ„ν•΄ PoCκ°€ κ²Œμ‹œλ˜μ—ˆμŠ΅λ‹ˆλ‹€. Victorian MachineryλŠ” CVE-2022-30525에 λŒ€ν•œ κ°œλ… 증λͺ… μ΅μŠ€ν”Œλ‘œμž‡μž…λ‹ˆλ‹€. 이 취약점은 μ œλ‘œν„°μΉ˜ ν”„λ‘œλΉ„μ €λ‹μ„ μ§€μ›ν•˜λŠ” Zyxel 방화벽에 영ν–₯을 λ―ΈμΉ˜λŠ” μΈμ¦λ˜μ§€ μ•Šμ€ 원격 λͺ…λ Ή μ£Όμž… μ·¨μ•½μ μž…λ‹ˆλ‹€.

![](https://assets.kitploit.com/production/public/readmes/25668/ce9dc51a068c91216a20949648c3cb7730fe3a9652df36195475e98675c8defe.jpg)

λ¨Όμ €, λŒ€μƒμ€ netcat λ¦¬μŠ€λ„ˆλ₯Ό μ‚¬μš©ν•˜μ—¬ μ•…μš©λ˜κ³  λ¦¬λ²„μŠ€ 셸이 νšλ“λ©λ‹ˆλ‹€. 기본적으둜 "nc"λŠ” "nc-path"λ₯Ό μ œκ³΅ν•˜μ—¬ μ‹€ν–‰λ©λ‹ˆλ‹€. Pythonμ—μ„œλŠ” "os.fork()" μž‘μ—…μ„ μ‚¬μš©ν•˜μ—¬ 메인 ν”„λ‘œμ„ΈμŠ€μ˜ 볡사본이 μƒμ„±λ©λ‹ˆλ‹€. 그런 λ‹€μŒ ν”„λ‘œμ„ΈμŠ€ IDκ°€ 0이면 μ§€μ •λœ URL μ£Όμ†Œλ‘œ POST μš”μ²­μ΄ μ „μ†‘λ©λ‹ˆλ‹€. URLμ—λŠ” 각각 ν”„λ‘œν† μ½œ, μ•…μš©ν•  원격 μ£Όμ†Œ, 원격 포트 및 "/ztp/cgi-bin/handler" μ—”λ“œν¬μΈνŠΈκ°€ ν¬ν•¨λ©λ‹ˆλ‹€. μ—¬κΈ°μ„œ /ztp/cgi-bin/handler μ—”λ“œν¬μΈνŠΈλ₯Ό 톡해 λ°©ν™”λ²½ 포트의 IP 섀정을 λ³€κ²½ν•  수 μžˆλŠ” "setWanPortSt" λͺ…λ Ήμ–΄μ˜ κΈ°λŠ₯에 μ ‘κ·Όν•  수 μžˆμŠ΅λ‹ˆλ‹€. νŽ˜μ΄λ‘œλ“œλ₯Ό 검토해보면 λͺ…λ Ήμ–΄μ˜ λŒ€μƒμ΄ DHCP ν”„λ‘œν† μ½œμ˜ 포트 1270μž„μ„ μ•Œ 수 μžˆμŠ΅λ‹ˆλ‹€. μ΄λŸ¬ν•œ λ°©μ‹μœΌλ‘œ κ³΅κ²©μžλŠ” nobody둜 원격 μ½”λ“œ 싀행을 μ œκ³΅ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

# μ•…μš© ν˜„ν™©

μ „ 세계 μ•…μš© 사둀λ₯Ό μ‘°μ‚¬ν•˜λŠ” Shadowserver Foundation은 κ΄€μ°°λœ μ•…μš© μ‹œλ„μ™€ κ·Έ νŠΉμ„±μ— λŒ€ν•œ μΆ”κ°€ 정보λ₯Ό κ³΅κ°œν•˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€. 2022λ…„ 5μ›” 16일 μ›”μš”μΌ μ΄ν›„λ‘œ μ•…μš© μ‹œλ„λŠ” μ—†μ—ˆμ§€λ§Œ μ‘°μ‚¬λŠ” κ³„μ†λ˜κ³  μžˆλ‹€κ³  λ°œν‘œλ˜μ—ˆμŠ΅λ‹ˆλ‹€.

# μ™„ν™” μ œμ•ˆ

영ν–₯을 받은 μž₯치의 κ΄€λ¦¬μžλŠ” κ°€λŠ₯ν•œ ν•œ 빨리 νŽŒμ›¨μ–΄λ₯Ό V5.30으둜 μ—…κ·Έλ ˆμ΄λ“œν•˜λŠ” 것이 μ’‹μŠ΅λ‹ˆλ‹€. Jake BainesλŠ” λ˜ν•œ κ°€λŠ₯ν•˜λ©΄ μžλ™ νŽŒμ›¨μ–΄ μ—…λ°μ΄νŠΈλ₯Ό ν™œμ„±ν™”ν•˜λΌκ³  λ§ν–ˆμŠ΅λ‹ˆλ‹€. Zyxel은 취약점을 쑰용히 μ²˜λ¦¬ν–ˆλ‹€λŠ” λΉ„νŒμ„ λ°›μ•˜μ§€λ§Œ, μ„±λͺ…μ„œμ—μ„œλŠ” μ΄λŠ” "곡개 μ‘°μ • κ³Όμ • 쀑 μ˜μ‚¬μ†Œν†΅ 였λ₯˜" λ•Œλ¬Έμ΄λΌκ³  μ„€λͺ…ν–ˆμŠ΅λ‹ˆλ‹€. λ‚΄λΆ€ μ§μ›λ“€μ—κ²ŒλŠ” μˆ˜λ™ μ™„ν™”λ₯Ό μœ„ν•œ 사전을 μƒμ„±ν•˜μ—¬ μƒˆλ‘œμš΄ "HTTP ν”„λ‘œν† μ½œ μ„œλͺ…" 정책을 λ§Œλ“€λ©΄ μ•…μš©μ„ λ°©μ§€ν•  수 μžˆλ‹€κ³  μ „ν•΄μ‘ŒμŠ΅λ‹ˆλ‹€.

# κ²°λ‘ 

결과적으둜, Zyxel λ°©ν™”λ²½ μ œν’ˆμ—μ„œ λ°œμƒν•œ 이 취약점은 λ§Žμ€ λͺ¨λΈμ— 치λͺ…적인 μˆ˜μ€€μœΌλ‘œ 영ν–₯을 λ―Έμ³€μŠ΅λ‹ˆλ‹€. λ¬Έμ œκ°€ 짧은 μ‹œκ°„ 내에 μ²˜λ¦¬λ˜μ—ˆμ§€λ§Œ μ•…μš©μ˜ 영ν–₯은 μƒλ‹Ήνžˆ μ»ΈμŠ΅λ‹ˆλ‹€. μ˜€λž«λ™μ•ˆ μ•…μš© 사둀가 λ°œκ²¬λ˜μ§€ μ•Šμ€ 것은 μ—…λ°μ΄νŠΈκ°€ ν˜„μž¬λ‘œμ„œλŠ” λ³΄μ•ˆ 취약점을 차단할 수 μžˆμŒμ„ λ³΄μ—¬μ€λ‹ˆλ‹€.