SSRF이란?
공격자가 서버사이드에서 의도하지 않은 지점으로 요청을 하도록 만드는 행위이다.
일반적으로 서버가 조직의 인프라 내에 내부망 서비스에 연결을 하도록 하거나, 외부 시스템에 연결해서 중요한 데이터 유출등이 일어날 수 있음.
SSRF 공격이 성공한다면 조직의 허가되지 않은 행위나 데이터 액세스가 발생할 수 있음. 애플리케이션이 연결되어 있는 백엔드 시스템 같은 취약한 시스템을 이용한다.
SSRF 공격의 예시
서버로 ssrf 공격을 할떄 공격자는 주로 HTTP 요청을 호스팅 서버에 보내는데 여기서 URL을 사용할 수 있다.
예를 들어서 유저가 특정 상품의 재고를 확인해야 할 때, 앱에서는 백엔드의 API 쿼리를 해야 한다. 백엔드에서 받은 쿼리 결과를 브라우저에 전달해서 유저에게 보일 텐데 이 API 리퀘스트는 대략 이렇다
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에 요청을 보내고 재고 상태를 유저에게 반환한다
아래처럼 수정하면
POST /product/stock HTTP/1.0
Content-Type: application/x-www-form-urlencoded
Content-Length: 118
stockApi=http://localhost/admin
대강 이건 원리로 /admin url의 내용을 서버에서 가져와서 유저에게 리턴할수 있다
HTTP 요청을 이용한 공격이라는 점에서 CSRF와 유사하지만 공격이 이루어지는게 클라이언트/서버 사이드라는 차이가 있다
미국 캐피탈원이라는 은행이 SSRF공격으로 침해사고가 발생한 적이 있는 만큼, xss와 더불어 굉장히 비중 있는 취약점임
SSRF 취약점을 이용한 공격사례 분석 및 대응방안
01. SSRF 개요 서버 측에서 위조된 HTTP 요청을 발생시켜 직접적인 접근이 제한된 서버 내부 자원에 접근하여 외부로 데이터 유출 및 오동작을 유발하는 공격을 SSRF(Server Side Request Forgery)라고 한다.
www.igloo.co.kr
이글루 사이트에 있는 ssrf 설명을 보면 그 공격 과정이 설명되어 있는데
무려 은행 사이트가 이 정도로 허술한게 놀랍다
버그바운티 제보했다면...
SSRF 공격 대응 방법
- url값에 http, https만 허용하기
- 요청 처리 서버와 중요 서버 저장하는 서버 분리
- 사용자 입력값 검증
SSRF 공격 실습
내부 시스템에서 데이터를 가져와 재고를 확인하는 기능이 있다
ssrf 취약점을 이용해서 carlos라는 유저를 삭제해 보자
stockApi=http%3A%2F%2Fstock.weliketoshop.net%3A8080%2Fproduct%2Fstock%2Fcheck%3FproductId%3D3%26storeId%3D1
이렇게 백엔드로 api 쿼리를 하는 url이 있으니 이걸 수정해 보자
POST 메서드의 이 파켓을 Repeater에 보내기
carlos 계정을 삭제하려면 admin으로 들어가야 한다
stockApi 부분의 url 값을 localhost/admin으로 변경하고 send하니
200 ok라고 성공적인 응답을 받았다
그리고 응답 부분의 내용을 자세히 살펴보니까 carlos의 계정을 삭제할 수 있는 url이 있다
처음에는 admin/delete/username=carlos라고 생각했는데
이렇게 친절하게 나와있으니 위의 url을 사용하자
수정한 url을 보내고 follow redirection을 하니까 성공적으로 랩을 해결한 브라우저 화면이 보인다
다음 포스팅에서 다른 ssrf 랩도 풀어보자
'웹해킹' 카테고리의 다른 글
버그헌팅 기초/종류/구성요소/프로세스 윤리적 해킹에 대하여 (0) | 2025.03.06 |
---|---|
[웹해킹] Lab: File path traversal, traversal sequences stripped with superfluous URL-decode Writeup (1) | 2025.03.05 |
웹해킹 :: 경로 탐색 Path Traversal 취약점이란 | File Path Traversal 실습 (1) | 2025.03.05 |
[웹해킹] Lab: Stored DOM XSS Writeup (1) | 2025.03.03 |
[웹해킹] XSS 공격의 원리와 종류 | Reflected XSS 실습 (0) | 2025.03.03 |