SSRF(Server-Side-Request Forgery)
SSRF는 위조된 HTTP 요청을 발생시켜 접근할 수 없는 서버 내부 자원에 접근해 외부로 데이터 유출 및 오동작을 일으키는 공격이다 CSRF와 SSRF는 공격이 비슷하다고도 할 수 있지만 다른점이 있다. CSRF는 보는거와 같이 CLIENT 즉, 사용자쪽에서 시행되어지는 공격이고 SSRF는 SERVER측에서 시행되어지는 공격이다. CSRF도 물론 위협적이지만 SSRF는 서버의 권한 탈취 및 DB에 접근하여 모든 사용자들의 개인정보가 유출될 수 있는 등 규모가 큰 피해를 입을 가능성이 높기에 더 위협적이다. 다음은 SSRF와 관련한 문제를 풀어보면서 SSRF가 대강 무엇인지 체감해보려 한다. 이 문제는 블랙리스트 기반의 입력필터를 가지고 있는데 이것을 우회하여 관리자 또는 로컬에서만 들어갈 수 있는 웹페이지에 접속하여서 'carlos' 라는 유저데이터를 삭제하는 문제이다. ACCESS THE LAB을 눌러 페이지로 들어가보면 이런식으로 되어져 있는데 이 페이지에서는 딱히 POST값이나 GET값을 보낼 구멍이 없기에 첫번째사진의 View details을 눌러 들어갔다. 이런식으로 페이지가 나오고 여기서 혹시나 주소에 admin을 쳐서 접속할 수 있나 했지만 당연하게 막혔고 admin 권한 또는 로컬에서 들어가야한다고 나와있다. 다시 이전페이지로 돌아와서 Check stock이라는 유일하게 POST값을 보내는 버튼이 있다. 버튼을 누르게 되면 이런식으로 서버에 Payload로 주소에 대한 정보를 보여달라고 요청을 보낸다. 이 주소를 조작하기 위해서 Element에서 버튼에 대한 요소를 가져온다. payload에 있는 값과 value에 있는 값이 같다는걸 알게 되었고 이걸 통해서 버튼을 클릭하는순간 value에 있는 값이 서버에 전송된다는걸 유추할 수 있다. 여기서 단순하게 http://localhost/admin이라는 주소를 치고 버튼을 누르게되면 이런식으로 요청이 걸러지게 된다. 걸러지게 되는 이유는 아까전에 말했듯이 블랙리스트기반의 필터를 가지고