
이번 세션은 SQL Injection 중 UNION Injection과 Blind Injection에 대한 내용이다. 첫 번째 퀴즈는 UNION Injection을 이용해서 유저의 패스워드 정보를 탈취하는 퀴즈인데, 친절하게도 두 개의 테이블에 대한 정보를 제공해준다. SQL Injection이 발생하는지 확인하기 위해 쿼리 에러가 발생할 수 있도록 입력값을 구성해서 전달해보니, 에러가 발생하는 것을 알 수 있었다. 이를 통해 SQL Injection이 가능할 수 있다는 것을 알 수 있다. 특히 에러 메시지를 통해 실제 실행되는 쿼리 구문이 무엇인지 까지 전달해주고 있어, SQL Injection에 더욱 도움이 되고 있는 상태이다. UNION SQL Injection을 할 때에는 테이블명, 필드명을 알..

이번 세션에서는 준비된 도커이미지를 다운받고, 해당 이미지의 /root 경로에 있는 파일을 확인하여 제시한 암호문을 복호화하는 것이다. 우선 도커 이미지부터 다운받고 bash shell로 해당 도커에 접속해보자 docker exec -it [docker image id] /bin/bash 이제 /root에 접속해보면, 현재 사용된 계정은 권한 때문에 접근이 불가능하다는 메시지를 받게 된다. 그럼 이번에는 passwd 파일을 확인하여 관리자 그룹으로 변경해보면 어쩔까 싶어, /etc/passwd 파일을 확인해 보았다. 역시 현재 사용되고 있는 webgoat 계정의 UID/GID는 root와 다른 값이였다. 이제 이 /etc/passwd를 로컬로 다운로드 받아 수정 후 관리자 UID/GID로 변경을 해보자 ..

이번 세션은 서명과 관련된 내용이다. 우선 이번 세션은 자주 접하지 못했던 부분이라 온전히 혼자 힘만으로 해결할 수 없었고, 다른 유튜버가 풀이한 내용을 많이 참고하여 진행하였다. https://www.youtube.com/watch?v=9lQJa4zHRYM 우선 해당 세션에서는 RSA 암호화 알고리즘에 대한 Private Key를 제공할 때, Pubilc Key에 대한 Modulus를 구하고, 이 Modulous를 이용한 서명을 확인하라는 퀴즈를 제공하고 있다. 사실 나는 Modulus가 무엇인지 부터 막막했다. 이럴땐 역시 ChatGPT에게 문의해본다. Modulus는 Public Key에 저장되고, 이 값은 암호화나 서명 검증 등에 사용된다는 것을 확인할 수 있었지만, 여전히 완전히 이해가 되지 않..

이번 페이지에서는 Base64 외의 다양한 인코딩 방법에 대해서 안내해주고 있다. URL encoding과 HTML encoding 인데, 이 두 방법은 웹서비스에서 파라미터를 전달하거나 웹에 출력할 때 자주 사용하는 방법이라 자주 보았던 인코딩 방법이였다. 하지만 다른 UUEncode, XOR encoding은 이번에 처음 본 인코딩 방법이였다. 문제에서는 XOR 인코딩 값을 주고 이 값을 디코딩할 수 있는지 확인해보라는 것이다. XOR 인코딩이 내부적으로 어떻게 인코딩을 하고 있는지는 사실 중요하지 않다. 왜냐하면 요즈음은 대부분의 인코딩과 디코딩을 제공해주는 무료 웹서비스가 너무 많기 때문이다. 인코딩은 암호화 방식이 아니기 때문에 너무 쉽게 본래 값을 확인할 수 있을 것이다. 간단히 XOR 디코딩..

WebGoat의 두 번째 도메인은 암호화와 관련된 내용이다. 여기서 다루어야 하는 내용은 후반부에 꽤 많은 내용이 있어, 나눠서 작성하려고 한다. 처음 이야기하는 부분은 인코딩과 관련된 내용이다. Basic Authentication으로 전달되는 입력값을 통해 계정정보를 탈취하라는 퀴즈이다. Authorization: Basic bXl1c2VyOm15cGFzc3dvcmQ= Basic Auth는 계정정보를 암호화가 아닌 인코딩을 통해 전달하는 방법이기 때문에, 해당 인증값이 노출될 경우, 디코딩을 통해 계정정보를 확인할 수 있다. 간단히 해당 정보를 디코딩 해보면 예문에서 이야기 했던 계정정보와 똑같은 값을 확인할 수 있었다. 그럼 실제 문제로 나온 Basic Authentication을 동일한 방법으로 ..

이번 퀴즈는 인증쿠키 스푸핑을 통한 인증우회 방법에 대한 내용이다. 주어진 내용은 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씩 증가하는 것으로 보이고, 두번째 숫자는 대략 현재시간을 나타내는 것으로 보인다. 중..

Developer Tools의 두 번째 퀴즈는 Proxy 툴이 없을 때 간이적으로 패킷을 확인하기 위해 자주 사용하는 방법인 Network 기능을 이용하는 부분이다. 나 또한 개발자와 리뷰 미팅을 진행할 때, 자주 사용하는 크롬 기능이다. 해당 퀴즈는 Go 버튼을 눌렀을 때, networkNum 값을 확인인하여 제출하는 문제이다. 그럼 Go 버튼을 눌러보자. 그럼 Network 탭에는 해당 페이지에서 발생한 여러 패킷들을 확인할 수 있는데, 그 중 해당 버튼을 눌렀을 때 발생했던 패킷을 확인해보니, 지문에서 확인해야 한다고 언급한 networkNum 값이 전달되고 있는 것을 확인할 수 있었다. 실제 Proxy 툴에서도 해당 패킷이 그대로 전달되었던 것을 확인해보면 Developer Tool이 정확하고 패..
- Total
- Today
- Yesterday