소학회/Dreamhack

[Dreamhack] ServerSide: SSRF

도아돵 2023. 11. 21. 15:27

 

* 마이크로서비스: 소프트웨어가 잘 정의된 API를 통해 통신하는 소규모의 독립적인 서비스로 구성되어 있는 경우의 소프트웨어 개발을 위한 아키텍처 및 조직적 접근 방식


Server-side Request Forgery(SSRF)

 

웹 서비스는 외부에서 접근할 수 없는 내부망의 기능을 사용할 때가 있습니다.

(ex: 내부망의 기능 백오피스 서비스)

백오피스 서비스는 관리자 페이지라고도 불리며, 이용자의 행위가 의심스러울 때 해당 계정을 정지시키거나 삭제하는 등 관리자만이 수행할 수 있는 기능을 구현한  시스템입니다. 

 

 웹 서비스의 요청을 변조하는 취약점으로, 브라우저가 변조된 요청을 보내는 CSRF와는 다르게 웹 서비스의 권한으로 변조된 요청을 보낼 수 있음

 

ssrf 공격 효과:

웹 서비스는 외부에서 직접 접근할 수 없는 내부망 서비스와 통신할 수 있습니다. 만약 공격자가 SSRF 취약점을 통해 웹 서비스의 권한으로 요청을 보낼 수 있다면 공격자는 외부에서 간접적으로 내부망 서비스를 이용할 수 있고, 이는 곧 기업에 막대한 피해를 입힐 수 있습니다.

 

웹 서비스가 보내는 요청을 변조하기 위해서는 요청 내에 이용자의 입력값이 포함돼야 합니다. 입력값이 포함되는 예시로는 웹 서비스가 이용자가 입력한 URL에 요청을 보내거나 요청을 보낼 URL에 이용자 번호와 같은 내용이 사용되는 경우, 그리고 이용자가 입력한 값이 HTTP Body에 포함되는 경우로 나눠볼 수 있습니다.

 


 

[SSRF 취약점 발생 예시]

 

1.이용자가 입력한 URL에 요청을 보내는 경우

2.웹 서비스의 요청 URL에 이용자의 입력값이 포함되는 경우

3.웹 서비스의 요청 Body에 이용자의 입력값이 포함되는 경우

 


 
SSRF 해결 방안은  입력 값에 대한 적절한 필터링과 도메인 또는 아이피에 대한 검증이 필수적~~!!!!!!
 
 

*구분 문자(Delimiter): 일반 텍스트 또는 데이터 스트림에서 별도의 독립적 영역 사이의 경계를 지정하는 데 사용하는 하나의 문자 혹은 문자들의 배열.

URL 에서 구분 문자는 "/"(Path identifier), "?" (Query identifier) 등 이 있으며 구분 문자에 따라 URL의 해석이 달라질 수 있음.

 


 

*SSRF(Server Side Request Forgery): 웹 애플리케이션이 변조된 요청을 하게 하는 공격

*블랙리스트 필터링: URL에 포함되면 안되는 문자열로 블랙리스트를 만들고, 이를 이용하여 이용자의 접근을 제어

*화이트리스트 필터링: 접근을 허용할 URL로 화이트리스트를 만들고, 이용자가 화이트리스트 외의 URL에 접근하려 하면 이를 차단


# 실습추후 다시 정리할 예정