SSRF
Last updated
Was this helpful?
Last updated
Was this helpful?
SSRF는 공격자가 직접적으로 접근하지 못하는 서버의 자원 혹은 외부 자원에 대하여
서버를 통해 대신 요청하여 정보 수집, DDoS, 데이터 탈취가 가능한 공격입니다.
위 다이어그램은 SSRF의 대체적인 공격 흐름에 대해서 설명하고 있습니다.
공격자는 내부망에 구현되어 있는 웹 서버 혹은 호스트 등과 같이 내부 리소스 정보를 수집하고 싶지만
내부망은 외부에서 접속하지 못하도록 폐쇄적 네트워크 구조이기 때문에 직접 접근하지 못합니다.
하지만 외부에 노출되어 있으며, 내부망과 연결되어 있는 DMZ 구간에 있는 웹 서비스에서
SSRF 취약점이 있을 경우, 공격자는 웹 서비스의 SSRF 취약점을 통한 내부망 정보 수집이 가능합니다.
주로 발견되는 공격 벡터는 웹 서비스에서 외부 이미지 파일을 로드하기 위해
URL 파라미터를 처리하며 발생합니다.
위 코드는 url 파라미터를 통해 이미지 주소를받은 뒤, 해당 url의 이미지를 화면에 띄우는 코드입니다.
예를 들어 사과 이미지를 띄울 수 있는 주소인 https://img.hankyung.com/photo/202403/AA.36104679.1.jpg
를 URL 파라미터에 입력하면
아래와 같이 페이지에는 사과 이미지가 출력됩니다.
이때 정상적인 URL이 아닌 file://C:\Windows\System32\drivers\etc\hosts
와 같이
웹 서비스가 실행되는 호스트의 로컬 파일에 대한 요청을 전송하면
해당 파일의 내용이 Base64로 인코딩 되어 페이지 소스에 출력됩니다.
화이트리스트 기반의 사용자 입력 URL 검증
로컬 영역의 요청 차단
민감 자산일 경우 DMZ와 연결되지 않는 내부망에 보관
SSRF는 사용자가 URL을 비정상적으로 입력함에 따라 발생되는 취약점입니다.
따라서 사용자가 입력한 URL이 신뢰받는 URL인지를 확인하기 위해,
사전에 신뢰하는 도메인 목록을 화이트리스트로 정의하여 해당 도메인이 아닐 경우
요청이 거부되도록 설정할 수 있습니다.
또한 로컬 영역의 요청을 차단하며 DMZ에 놓인 웹 서비스와 직접적으로 연결 가능한
내부 호스트 및 서비스에는 민감한 자산을 보관하지 않도록 하여 2차 피해를 예방할 수 있습니다.