SSRF(Server Side Request Forgery)란?
SSRF는 웹 애플리케이션의 서버 측에서 다른 서버로의 요청을 조작할 수 있는 공격을 의미합니다. Server Side에서 이루어지는 요청을 변조하여 공격자가 의도한 서버로 임의의 요청을 할 수 있는 공격입니다. 일반적으로 기업들은 특정 웹서버만 외부에 공개하며, 조직 내부적으로 사용하는 서버는 방화벽으로 차단합니다. SSRF는 다양한 보안 문제를 야기할 수 있으며, 예를 들어 내부 네트워크 리소스에 접근하거나, 인증 정보를 탈취하거나, 외부 서비스를 악용하는 데 사용될 수 있습니다.
취약점 예제
1) 공격자는 SSRF 취약점이 존재하는 웹서버에서 내부 서버 자원 요청
2) 취약한 웹서버는 공격자로부터 받은 내부서버로의 자원 요청을 수행
3) 내부 서버는 취약한 웹서버와 같은 네트워크에 존재하여 자원 접근이 가능하며, 내부서버는 자원을 취약한 웹서버에 전달
4) 공격자는 내부 중요 정보들을 획득 가능
발생원인
● URL 입력 제어 미흡 : 외부 서버 자원을 처리하는 서비스에서 외부 서버 URL 파라미터에 대한 검증이 없거나 미흡하여 발생
● 로컬 리소스 요청 : 공격자가 서버의 로컬 리소스에 접근하려고 시도할 때 발생
● 다른 프로토콜 요청: 애플리케이션이 다양한 프로토콜에 대한 요청을 처리하는 경우, 공격자는 이를 악용하여 예상치 못한 요청을 전송할 수 있음
공격포인트
Black List 방식 Filter Bypass
=> URL Short를 이용한 우회 : URL 문자열 검증을 우회하는 방법
=> Redirect 기능을 이용한 우회 : 공격자의 웹서버에서 리다이렉트 시키는 페이지에 접근하도록 하여 문자열 필터링을 우회하는 방법
=> DNS Spoofing을 이용한 우회
해킹 시나리오
○ 로컬 서버 파일 접근 : 로컬에 존재하는 임의의 파일에 접근하기 위해 SSRF 공격 이용
○ 내부 웹 서버의 정보 획득 : 내부 웹서버의 자원에 접근하기 위해 SSRF 공격 이용
○ 조작된 HTTP Request를 특정 내부 서버로 전송 : 취약한 웹 서버 등에 악의적인 Payload를 전송하기 위해 SSRF 공격 이용
○ 내부 네트워크 스캐닝 : 내부 네트워크에 존재하는 호스트들을 스캔하기 위해 SSRF 공격 이용
○ 관리자 페이지 접근 : 외부에서 접근이 제한된 관리자 페이지에 접근하기 위해 SSRF 공격 이용
보안대책
Server Side 요청에 사용되는 입력 값 검증 및 필터링 강화
White List 방식 검증 : 사용자 입력에 대한 신뢰할 수 있는 URL 목록을 사용하여 외부 연결을 허용
Black List 방식 검증 : 금지할 URL 목록을 정의해두고 외부 연결을 거부 (ex) 사설 IP, localhost, sftp://, file://, ftp:// 등