SSRF는 사용자의 입력을 통해 서버가 의도하지 않은 외부 또는 내부 주소로 HTTP 요청을 보내도록 유도하는 취약점
공격자는 이를 통해 서버가 위치한 내부망 자원이나 클라우드 메타데이터 서버 등에 접근할 수 있다.
| 목적 | 설명 |
|---|---|
| 내부 자원 접근 | 127.0.0.1, localhost, 사설 IP 대역 등에 위치한 관리자 페이지 또는 내부 API 접근 |
| 클라우드 메타데이터 접근 | AWS, GCP 등 클라우드 환경의 메타데이터 엔드포인트를 통한 자격증명 탈취 |
| 포트 스캐닝 | 내부망에 존재하는 서비스의 열려 있는 포트 식별 |
| 방화벽 우회 | 원래 외부에서 차단된 자원에 서버를 경유해 우회 접근 |
| 원격 코드 실행(RCE) 연계 | SSRF를 통해 민감한 내부 서비스 호출 및 악의적 명령 전달 가능성 |
예시 1: 내부 관리자 페이지 접근
요청: POST /fetch
파라미터: url=http://127.0.0.1/admin
예시 2: AWS 메타데이터 접근
url=http://169.254.169.254/latest/meta-data/iam/security-credentials/
| 기법 | 설명 | 예시 |
|---|---|---|
| IP 인코딩 | 내부 IP를 정수 등으로 표현 | http://2130706433 (→ 127.0.0.1) |
| 이중 인코딩 | 필터 우회 | %252e%252e%252f → ../ |
| DNS rebinding | 외부 도메인을 내부 IP로 리디렉션 | attacker.com 도메인 설정 |
| 포트 우회 | 비정상 포트로 접근 시도 | localhost:3306, localhost:8080 등 |