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이라는 주소를 치고 버튼을 누르게되면 이런식으로 요청이 걸러지게 된다. 걸러지게 되는 이유는 아까전에 말했듯이 블랙리스트기반의 필터를 가지고

[WHS] 컴퓨터구조 일부분

이미지
각 타입(ex. int , char 등등)들은 바이트수에 따라서 각각의 크기들을 가지고 있다.                                                                                                                                                                                                                       (크기 : 바이트단위) 이런식으로 C언어의 sizeof 메서드를 이용하여 각각의 타입 크기가 몇인지 알아낼 수 있다. 또다른 다양한 타입의 크기를 알아보고 싶으면  문서 를 참조해보는 방법이 있다. 데이터타입들은 다 컴퓨터가 해석하기 위해서 이진수로 해석이 되어진다. char 자료형(1바이트 = 8비트)을 그림으로 표현하자면 이런식으로 방이 8개 있다고 생각하면 편하다. 예를들어 10을 이진법으로 표현하면 1010으로 표현되어진다. -와 +를 표현하기 위해서 컴퓨터는 마지막의 비트자리를 +/-를 구분하는 비트로 정한다. 최솟값(즉 char이 -128)인 값에서 -1을 하게되면 어떻게 될까? 보는바와 같이 이미 한정된 크기에서 더 늘리려 하니까 값이 뒤집힌걸 볼 수 있다. int도 마찬가지로 -에서 +로 넘어간것을 볼 수 있다. 이러한 현상을 언더플로우라고 부른다. (반대로 최댓값에서 +1 한것을 오버플로우라고 부른다.) 그래서 이러한 불상사가 발생하지않도록 값을 넘을 수 있는 상호작용들이 있는지 점검해봐야한다. 그리고 이런 특별한 구조는 각 비트들을 껏다 켰다 하면서 숫자를 바꿀 수 있다. (여기서 +/-를 구분하는 비트도 숫자를 표현하는 비트로 생각한다) 10을 예시로 설명해보면 아까도 말했듯이 1010으로 표현할 수 있다. 여기에 대해서 두번째의 비트를 끄고 싶은 경우에 다른 방에 두번째 비트를 켜준다. 그리고 여기서 NOT연산을 해서 반전시켜준다. 여기서 and연산을 통해 연산을 해주게