본문 바로가기

공격기법/Web

SSRF(Server Side Request Forgery)공격

SSRF(Server Side Request Forgery)공격

공격자가 서버 측 응용 프로그램이 공격자가 선택한 임의의 도메인에

HTTP 요청을 할 수 있도록하는 웹 보안 취약점

 

웹 어플리케이션에서 요청을 보내기 때문에 웹 어플리케이션이 작동하고 있는

서버 내부의 포트, 서버와 연결된 내부망에 요청을 보낼 수 있고

Server-side에서 변조된 요청 / 의도하지 않은 서버로 요청가능

출처 : www.netsparker.com 의 blog

CSRF와의 차이점

CSRF는 변조된 요청이 웹 클라이언트(브라우저)가 보내며,

SSRF는 웹 어플리케이션에서 보내지게 됨

 

 

 

공격 시나리오

서버 자체에 대한 SSRF 공격에서 공격자는 루프백 네트워크 인터페이스를 통해

응용 프로그램을 호스팅하는 서버에 HTTP 요청을 다시 보내도록 응용 프로그램을 유도.

일반적으로 127.0.0.1 (루프백 어댑터를 가리키는 예약 된 IP 주소) 또는 

localhost (같은 어댑터에 일반적으로 사용되는 이름 ) 와 같은 호스트 이름이 포함 된 URL이 제공.

 

예를 들어, 특정 상점의 품목 재고가 있는지

사용자가 볼 수있는 쇼핑 응용 프로그램이 존재

재고 정보를 제공하려면 애플리케이션이 해당 제품 및 상점에 따라 다양한 백엔드 REST API를 조회.

 이 기능은 프론트 엔드 HTTP 요청을 통해 관련 백엔드 API 엔드 포인트에 URL을 전달하여 구현. 

따라서 사용자가 상품의 재고 상태를 볼 때 브라우저는 다음과 같이 요청.

 

POST / product / stock HTTP / 1.0
Content-Type : application / x-www-form-urlencoded
Content-Length : 118

stockApi = http : //stock.weliketoshop.net : 8080 / product / stock / check % 3FproductId % 3D6 % 26storeId % 3D1

 

이로 인해 서버는 지정된 URL을 요청하고 재고 상태를 검색 한 후 이를 사용자에게 반환.

공격자는 요청을 수정하여 서버 자체에 로컬 URL을 지정 가능.

 예를 들면 다음과 같음.

 

POST / product / stock HTTP / 1.0
Content-Type : application / x-www-form-urlencoded
Content-Length : 118

stockApi = http : // localhost / admin

 

여기서 서버는 / admin URL 의 내용을 가져 와서 사용자에게 반환

물론 침입자는 /admin URL을 직접 방문가능

하지만 관리 기능은 일반적으로 인증 된 사용자 만 액세스 가능

 따라서 단순히 URL을 직접 방문하는 공격자에게는 액세스 거부

하지만 /admin URL에 대한 요청이 로컬 시스템 자체에서 오는 경우 일반 액세스 제어가 무시

 요청이 신뢰할 수있는 위치에서 시작된 것으로 보이므로

애플리케이션은 관리 기능에 대한 전체 액세스 권한을 부여

 

출처: https://portswigger.net/web-security/ssrf

 

What is SSRF (Server-side request forgery)? Tutorial & Examples | Web Security Academy

In this section, we'll explain what server-side request forgery is, describe some common examples, and explain how to find and exploit various kinds of SSRF ...

portswigger.net

 

'공격기법 > Web' 카테고리의 다른 글

파일 업로드/다운로드 취약점  (0) 2020.05.18
Command Injection  (0) 2020.05.15
XSS와 CSRF의 차이  (0) 2020.03.08
브루트 포스 공격  (0) 2020.01.28
CSRF(Cross Site Request Forgery)  (0) 2019.11.15