SSRF(Server Side Request Forgery)공격
공격자가 서버 측 응용 프로그램이 공격자가 선택한 임의의 도메인에
HTTP 요청을 할 수 있도록하는 웹 보안 취약점
웹 어플리케이션에서 요청을 보내기 때문에 웹 어플리케이션이 작동하고 있는
서버 내부의 포트, 서버와 연결된 내부망에 요청을 보낼 수 있고
Server-side에서 변조된 요청 / 의도하지 않은 서버로 요청가능
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
'공격기법 > 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 |