SSRF 실습 문제 Basic SSRF
SSRF 란?
- 서버가 임의의 요청을 보내도록 하는 공격이다.
 
SSRF 문제
문제 내용
- 수량 체크를 하기위해 내부 시스템으로 부터 데이터를 가지고온다.
 - 문제를 해결하기 위해서는 
http://localhost/admin에 접근하여carlos유저를 삭제해야 한다. 
문제 풀이
사이트 분석 및 취약점 찾기
상품 수량 체크부분
- 
    
상품 수량 체크부분 POST요청의 파라미터로 URL을 넣어 요청을 보낸다. 즉 이 부분에서 SSRF 공격을 시도할 수 있다.
 - 
    
오직 POST 요청으로만 수량을 체크할 수 있다. GET 요청을 보냈을 때 수량을 체크할 수가 없다.
 
admin 페이지 접속 시도
https://문제 주소/admin을 통해 바로 접속을 시도해 보았다. 하지만 admin 페이지에 접속하기 위해서는administrator로 로그인 하거나 내부에서 접속해야 한다.
공격 시나리오
- 서버로 수량 체크 요청을 보낼 때 수량을 체크하기 위한 링크가 아닌 서버 내부 페이지 URL를 파라미터에 넣어 요청을 보낸다.
 - 서버에서 파라미터에 들어있는 URL주소로 요청을 보낸다.
 - 서버는 URL주소 응답을 받는다.
 - 서버는 공격자에게 URL 페이지 응답을 그대로 사용자에게 보내준다.
 
admin 페이지 접속 공격
stockApi파라미터에http://localhost/admin주소를 입력해 준다.- Post 요청을 보내면 
http://localhost/admin페이지가 나타난다. 이 페이지는 서버 내부에서 접속된 페이지이다. - admin 페이지 접속에 성공하였다. 이제 
carlos유저를 삭제하면 된다. 즉 위의 사진에서 보이듯Delete링크를 눌러줘야한다. 하지만 바로 누르면 외부에서 요청한 것이라 동작을 안한다. 따라서 파라미터에Delete링크를 넣어 요청을 보내주면 된다. 
유저 삭제하기
stockApi파라미터에http://localhost/admin/delete?username=wiener링크를 입력해 준다.- Post 요청을 보내면 성공적으로 
wiener유저가 삭제되었다. - 목표는 
carlos유저를 삭제하는 것이다. 따라서carlos를 링크에 넣어주자. 그러면stockApi파라미터에는http://localhost/admin/delete?username=carlos가 들어가게 된다. - Post 요청을 보내면 목표였던  
carlos유저가 삭제된다. 
후기
- 직접 스터디에서 풀이해 주었지만 직접 SSRF 문제를 풀어보니 파라미터로 URL을 입력받는 것이 얼마나 위험한지 알 수 있었다. SSRF 취약점을 이용하면 외부에서 접근이 불가능한 내부 페이지에 접속을 직접 확인할 수 있어 재밌었다.
 
댓글남기기