웹해킹

웹해킹 :: SSRF 취약점/ Lab: Basic SSRF against the local server

이둥둥 2025. 3. 1. 20:37

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 랩도 풀어보자