이번 퀴즈는 인증쿠키 스푸핑을 통한 인증우회 방법에 대한 내용이다. 주어진 내용은 webgoat, admin 계정과 패스워드를 제공해주고 있으며, 이때 Tom 계정으로 스푸핑을 진행하는 것이다. 우선 주어진 계정정보를 통해 어떤 쿠키가 생성되고 있는지 확인해보자 다음으로 로그인 시 다른 계정의 인증토큰을 함께 넣었을 때, 어떻게 반응하는지 확인해보자 위 스크린샷을 보는 것처럼, 전달한 계정정보와 상관없이 인증쿠키가 있을 경우, 인증쿠키를 통해 로그인이 진행된 것을 확인할 수 있다. 그렇다면 퀴즈의 의도는 인증쿠키의 값에 계정정보 등이 포함되어 결정되고 있어, 해당 패턴을 유추하여 특정 계정에 해당하는 인증쿠키를 생성하여 인증로직을 우회하는 것일 것이다. 그럼 인증쿠키가 어떻게 생성되고 있는지 확인해보도록..
이번 내용은 기능(Function) 레벨에서의 Access Control 부재에 대한 내용이다. 이전에 진행했던 객체 단위의 Access Control과는 다르게 이번에는 기능 단위의 Access Control 이다. 첫 번째 퀴즈는 숨겨진 기능이 있는지 확인하는 것이다. 우선 눈에 보이는 메뉴로는 아래와 같이 2개 메뉴와 총 5개의 기능이 있다. Account -> My Profile, Privacy/Security, Log Out Messages -> Unread Messages, Compose Message 우선 숨겨진 기능이 무엇인지 찾으라고 하였으니, 가장 먼저 생각 나는 것은, 권한에 따라 메뉴를 숨겼는지 보기 위해 클라이언트 코드를 확인해본다. 역시 Admin 권한으로 제공되는 메뉴가 3개가..
이번 퀴즈는 안전하지 않은 직접 객체 참조(Insecure Direct Object Reference)에 대한 내용이다. API에서 SSRF와 함께 상당히 많이 발생하는 취약점 중 하나이다. 가이드에 작성된 것처럼, ID(username)에 ‘tom’, Password에 ‘cat’을 입력하여 로그인을 시도해보면 첫 번째 퀴즈는 간단히 통과된다. 두 번째 퀴즈에서 View Profile을 보면 name, color, size 정보를 보여주는 것을 알 수 있다. 그리고 응답값에는 위 3개 정보 외에도 2개 정보가 더 보여지고 있으니, 어떤 값들이 보여지고 있는지 확인해보라고 한다. 해당 API의 응답값을 보면, name, color, size를 포함하여 총 5개의 값이 전달되고 있다. 이 중 role, us..
본격적으로 WebGoat에서 제공하는 주요 취약점에 대해서 하나씩 진행할 차례가 되었다. 첫 번째 교육은 Broken Access Control 이고, 그 중에서 세션 하이재킹에 대한 내용이다. 퀴즈에서는 hijack_cookie 값을 예측해서 Access Control을 우회하라고 한다. 우선 hijack_cookie가 어떻게 생겼는지 확인해보기 위해 로그인을 시도해본다. 존재하지 않는 계정으로 로그인을 시도해보니, 로그인 실패 시에도 cookie 값으로 hijack_cookie가 생성되는 것으로 보인다. 몇 번의 로그인을 시도해보니, hijack_cookie가 대략적으로 예측되는 부분이 있다. 우선 첫번째 숫자는 1씩 증가하는 것으로 보이고, 두번째 숫자는 대략 현재시간을 나타내는 것으로 보인다. 중..
해당 페이지는 보안 3대 요소(기밀성/무결성/가용성)에 대한 내용을 다루는 페이지이다. 간단히 내용을 확인하고 퀴즈 부분으로 넘어갔는데.... 뭔가 이상하다. 상황을 가정해 퀴즈를 풀라고 하고 있는데... 무슨 퀴즈인지 제대로 알려주지 않는다. 우선 Submit answer를 눌러보니 화면상에서는 보이지 않지만 패킷을 주고받고 있었다. 소스코드를 확인해보니 질문의 답을 체크하는 URL이였다. 그리고 클라이언트 코드를 확인해보아도 파라미터 변조 등을 하는 것은 아니고 실제 퀴즈가 있는 것 같은데.... 퀴즈가 보이지 않는다. 그래서 우선 해당 이슈에 대해서 검색을 해보았다. OWASP WebGoat Git에 가보니 나와 같은 이슈가 레포트 되어 있었고, 최근에 해당 이슈가 해결되어 코드도 머지된 것으로 보..
Developer Tools의 두 번째 퀴즈는 Proxy 툴이 없을 때 간이적으로 패킷을 확인하기 위해 자주 사용하는 방법인 Network 기능을 이용하는 부분이다. 나 또한 개발자와 리뷰 미팅을 진행할 때, 자주 사용하는 크롬 기능이다. 해당 퀴즈는 Go 버튼을 눌렀을 때, networkNum 값을 확인인하여 제출하는 문제이다. 그럼 Go 버튼을 눌러보자. 그럼 Network 탭에는 해당 페이지에서 발생한 여러 패킷들을 확인할 수 있는데, 그 중 해당 버튼을 눌렀을 때 발생했던 패킷을 확인해보니, 지문에서 확인해야 한다고 언급한 networkNum 값이 전달되고 있는 것을 확인할 수 있었다. 실제 Proxy 툴에서도 해당 패킷이 그대로 전달되었던 것을 확인해보면 Developer Tool이 정확하고 패..
WebGoat의 General 항목의 세 번째는 Develop Tools 사용방법에 대한 내용이다. 특히 개발자들이 자주 사용하는 크롬의 개발자 툴을 자세히 이야기 해주고 있다. 해당 내용에서는 2개의 퀴즈가 존재하는데 순서대로 확인해보겠다. 첫 번째 퀴즈는 크롬 개발자 툴에서 Console을 이용하여 특정 스크립트 함수를 실행하고, 이를 통해 생성된 값을 확인하는 퀴즈였다. 여기서 우선 Submit을 눌렀을 때 어떻게 값을 확인하고 있는지 소스코드를 확인해보자 소스코드를 확인해보면, 입력값(successMessage)와 User Session에 저장된 randValue가 같은 값인지 확인하는 것을 알 수 있다. 이를 보면 어디선가 User Session에 randValue를 설정하는 코드가 있을 것을 ..
General의 두 번째 페이지에서는 본격적으로 Proxy 사용방법에 대해서 이야기 해주는 페이지이다. 특히 OWASP ZAP Proxy에 대한 사용방법을 상세하게 알려주고 있으니, Proxy 사용에 익숙하지 않은 분들은 이 페이지를 읽어보면 많은 도움이 될 것 같다. 나는 이미 Burp를 사용하고 있기 때문에, 빠르게 퀴즈 부분으로 넘어가 보았다. 해당 요청을 처리하는 함수 내용을 확인해보면 POST method인 경우, 요청을 실패했다고 응답처리 하고 있고, 다음으로 x-request-intercepted 라는 헤더값과 changeMe라는 파라미터를 가져와서 값이 Null 인지 여부를 확인하고 있다. 특히 헤더값는 true인지 여부와 changeMe는 “Requests are tampered easi..
WebGoat에 로그인하면 소개, 기본내용, 그리고 OWASP Web Top10과 관련된 실습내용을 확인할 수 있다. 이제 차례대로 하나씩 진행해보면서 WebGoat를 분석해 보고자 한다. 가장 먼저 General > HTTP Basics 을 확인해보면 Proxy를 이용하여 요청 및 응답을 확인이 필요하다고 하며, 응답값에 사용되는 HTTP Request 파라미터, 쿠키 등을 확인해보라고 이야기 하고 있다. 해당 내용을 확인하고 나면 간단한 퀴즈를 보여준다. 퀴즈는 현재 페이지에서 제공하는 요청기능에 대해서 어떤 HTTP Method를 사용하고 있고, 이때 Magic Number가 무엇인지 물어보고 있다. 해당 요청을 처리하는 Controller의 함수를 확인해보면, answer, magic_answer..
WebGoat에서 발생하는 요청/응답을 확인하기 위해 Proxy를 설정하고, Burp로 패킷을 확인하고자 하는데, WebGoat의 패킷을 확인할 수 없었다. 우선 기본적으로 WebGoat와 Proxy가 사용하고 있는 Port가 8080으로 동일했기 때문에, Proxy를 8888 포트로 변경하고, Burp에서도 Proxy listener를 새로운 포트로 설정하였다. Port를 변경하였으나 여전히 WebGoat의 패킷을 확인할 수 없었다. 여기서 문제는 WebGoat가 Loopback IP로 접근하였기 때문에, 기본적으로 Loopback IP로 접근 시 Proxy로 패킷이 전달되지 않는 것이 문제였다. 이런 경우, WebGoat를 Internal IP로 접속하면 되는 것을 확인하였으나, Internal IP..
- Total
- Today
- Yesterday