이번 세션은 SQL Injection 중 UNION Injection과 Blind Injection에 대한 내용이다. 첫 번째 퀴즈는 UNION Injection을 이용해서 유저의 패스워드 정보를 탈취하는 퀴즈인데, 친절하게도 두 개의 테이블에 대한 정보를 제공해준다. SQL Injection이 발생하는지 확인하기 위해 쿼리 에러가 발생할 수 있도록 입력값을 구성해서 전달해보니, 에러가 발생하는 것을 알 수 있었다. 이를 통해 SQL Injection이 가능할 수 있다는 것을 알 수 있다. 특히 에러 메시지를 통해 실제 실행되는 쿼리 구문이 무엇인지 까지 전달해주고 있어, SQL Injection에 더욱 도움이 되고 있는 상태이다. UNION SQL Injection을 할 때에는 테이블명, 필드명을 알..
이번 세션은 Injection 취약점 중 SQL Injection에 대한 내용이다. 세션 내용은 기본적인 Query 지식을 시작으로 간단한 SQL Injection 내용을 순으로 다루고 있다. 앞 부분에서 다루고 있는 Query에 대한 내용은 간단히 질문에 해당하는 쿼리구문을 입력만 하면 되는 문제들이므로 넘어가고, 후반부의 SQL Injection 부분을 다뤄본다. 첫 번째 문제는 주어진 쿼리구문이 SQL Injection이 발생하도록 3개의 셀렉트 박스에서 값을 선택해서 실행해보도록 디자인 되어 있다. 쿼리구문이 항상 참이 되도록 아래와 같이 선택하여 문제를 통과한다. Smith' or '1'='1 두 번째는 직접 쿼리를 입력하도록 좀 더 어렵게 퀴즈가 나왔다. 이때 두 필드 중 한개의 필드에서만 인..
이번 세션에서는 준비된 도커이미지를 다운받고, 해당 이미지의 /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에 저장되고, 이 값은 암호화나 서명 검증 등에 사용된다는 것을 확인할 수 있었지만, 여전히 완전히 이해가 되지 않..
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씩 증가하는 것으로 보이고, 두번째 숫자는 대략 현재시간을 나타내는 것으로 보인다. 중..
해당 페이지는 보안 3대 요소(기밀성/무결성/가용성)에 대한 내용을 다루는 페이지이다. 간단히 내용을 확인하고 퀴즈 부분으로 넘어갔는데.... 뭔가 이상하다. 상황을 가정해 퀴즈를 풀라고 하고 있는데... 무슨 퀴즈인지 제대로 알려주지 않는다. 우선 Submit answer를 눌러보니 화면상에서는 보이지 않지만 패킷을 주고받고 있었다. 소스코드를 확인해보니 질문의 답을 체크하는 URL이였다. 그리고 클라이언트 코드를 확인해보아도 파라미터 변조 등을 하는 것은 아니고 실제 퀴즈가 있는 것 같은데.... 퀴즈가 보이지 않는다. 그래서 우선 해당 이슈에 대해서 검색을 해보았다. OWASP WebGoat Git에 가보니 나와 같은 이슈가 레포트 되어 있었고, 최근에 해당 이슈가 해결되어 코드도 머지된 것으로 보..
- Total
- Today
- Yesterday