본문 바로가기

전체 글

(76)
[WebGoat] Injection-SQL Injection (intro) 풀이 SQL Injection을 학습하는 챕터이다. 기본적인 SQL에 대한 설명을 하고, SQL Injection의 아주 기초적인 부분을 다루는 챕터이다. 문제 풀이 가자. 문제라기 보다는, 튜토리얼에 가깝다. Employees 테이블의 정보를 보여주고, 이를 SQL Query를 이용해서 특정 정보를 조회하면 해결할 수 있는 문제이다. 문제에서 요구한건 BoB Franco의 정보. Select문을 이용하면 될것이고... first_name과 last_name column을 조건으로 조회하면 될것같다. 정답이다. 빠르게 다음으로 넘어가자. DML에 대한 내용을 담은 부분이다. DML은 데이터를 직접적으로 조회, 수정, 추가, 삭제 가능한 쿼리들을 말한다. Select/Insert/Delete/Update 가 있..
[WebGoat] Broken Access Control-Spoofing an Authentication Cookie 풀이 이번 챕터는 authentication 즉 사용자 인증에 사용되는 쿠키 관련한 내용이다. 그 중에서도 이제 인증정보가 담긴 쿠키가 어떤 알고리즘을 이용하여 생성되는지를 추측할 수 있다면, 타 사용자의 쿠키값을 유추해내, 그 사용자로 로그인할 수 있다는 내용을 담고있다. 그럼 관련 문제를 풀러가자 이번 문제는 로그인을 해볼 수 있는 계정 2개(webgoat, admin)에 대한 정보를 주고, 인증 쿠키가 생성되는 알고리즘을 알아내서 Tom으로 로그인하는 것이 목표이다. 우선은 로그인을 하고 돌아오는 응답 패킷을 보자. webgoat로 로그인을 했더니, spoof_auth라는 쿠키값에 인증정보를 담아서 주었다는 내용을 확인할 수 있다. ==으로 끝나는 모양새가 base64 인코딩을 의심하게 하게 만든다. b..
[WebGoat] Broken Access Control-Missing Function Level Access Control 풀이 이번 챕터는 Missing Function Level Access Control 에 관련한 것이다. 보통 대부분의 pentester들은 IDOR와 Missing Function Level Access Control 을 동일하게 취급한다. 하지만 세부적으로 따지면 조금은 다르다보니, webgoat에서는 그 차이를 알려주기 위한 챕터를 따로 만들어 두었다고 한다. IDOR는 수직적 또는 수평적 권한상승이 핵심이라면, Missing Function Level Access Control은 권한상승이라기보다는, 기능 접근제어 미비로 보아야한다. IDOR는 내가 아닌 타 사용자에 포커싱이 맞추어져 있다면 Missing Function Level Access Control은 사용 불가능한 기능을 사용할 수 있는 경우..
[WebGoat] Broken Access Control-Insecure Direct Object References 풀이 이번 주제는 Insecure Direct Object References, 즉 IDOR 취약점에 대한 것이다. 이것저것 예시들이 나와있는데, 파라미터 값이나, URI 만을 가지고 토큰이나 세션에 대한 검증없이 객체에 접근시킬 경우, 수직적 또는 수평적 권한상승이 일어날 수 있는 가장 보편적으로 나오는 취약점이다. 그럼 바로 문제 풀러 가보자 이건 문제라기보다는, IDOR 취약점이 주로 인증된 사용자이지만 허가되지 않은 객체에 접근할때 발생한다는 점을 알려주려는 내용으로 보인다. 가볍게 본문내용에서 알려주는 tom과 cat으로 로그인하면 된다. 완료되었다면 다음스텝으로 넘어가면 된다. 이것 역시 문제라기 보다는 Application Security에서 공격자들이 주로 화면에만 보이는 정보가 아닌 응답값을 ..
[WebGoat] Broken Access Control-Hijack a session 풀이 Broken Access control. 쉽게 말해 접근 제어에 실패한 경우를 의미한다. 한국에서는 주로 '부적절한 인가' 라는 항목으로 불리운다. 첫 문제는 세션이 완전히 난수가 아닌 추측 가능한 경우 hijacking당할 수 있음을 알려주는 문제로 보인다. 이제 풀어보자. 문제를 보면 hijack_cookie라는 쿠키값을 예측해서, 로그인에 성공한 타 사용자의 세션값을 맞추라는 문제이다. 우선 어떻게 하는지 모르겠으니 아무거나 입력을 하고 Access를 눌러보자 Access 버튼을 누르면 login api로 request가 전송된다. request header나 body에 크게 일반적인 request와의 차이점이 보이지는 않는다. response를 보니 Set-Cookie를 이용하여 hijack_co..
[WebGoat] General-Developer Tools 풀이 이번것은 크롬브라우저에서 사용 가능한 개발자도구에 대해서 설명하는 부분이다. WebGoat에서는 크롬 브라우저를 포커싱해서 설명하고 있지만 사실 거의 모든 브라우저는 개발자도구를 제공하고 있고, 그 기능은 대부분 비슷하다. 크롬과 파이어폭스 두개 브라우저가 가장 많은 기능을 제공하는것으로 알고있다. 다른 챕터와 마찬가지로 기본적인 기능들을 설명하고 실습하는 과정이 포함되어있다. 기능설명은 찬찬히 읽어보고 일단 문제 풀러 이동하자. 실습문제를 읽어보니, webgoat.customjs.phoneHome 이라는 javascript 함수를 실행시키는 것이 목적임을 알 수 있다. 내용을 보니 해당 함수를 실행시키면 실습을 통과할 수 있는 임의의 랜덤번호르 얻을 수 있는듯 하다. 개발자도구에서 Console 탭으로..
[WebGoat] General-HTTP Proxies 풀이 이번 내용은 Proxy에 대한 내용을 다루고있다. 아무래도 웹 해킹에 있어서 Proxy라는 개념은 필수이기에, 반드시 익혀야만한다. 자세한 내용은 쭉 훑어보면 된다. 여기서는 OWASP ZAP이라는 프록시 툴을 소개하고 있으나, 나는 주로 Burpsuite를 사용한다. 툴은 자유이니, Proxy가 무엇이고 Proxy툴이 무엇인지만 명확히 이해하면 된다. 그러면 바로 문제가 있는 5번으로 넘어가자 정리하자면 Request 패킷을 잡아서 적어준 내용에 맞게 변조하라는 것인데... Request 메서드를 GET 바꿔라 'x-request-intercepted:true'라는 값을 헤더에 추가해라 Request body를 삭제하고, changeMe 파라미터의 값을 'Requests are tampered easi..
[WebGoat] General-HTTP Basics 풀이 General HTTP Basics는 HTTP Request에 대한 정보를 나열해두었으며, 이를 프록시 툴을 이용한 실습을 통해 직접 보고, 문제를 푸는 형태이다. Try It에는 사용자가 이름을 입력해서 보내면, 서버에서 그 이름을 반대로 응답해주는 간단한 실습을 제공하고 있다. 12345를 입력하고 Go! 버튼을 클릭하면, 서버로부터 전달한 값을 거꾸로 한 54321이 응답됨을 확인할 수 있다. 마지막은 잘 이해했는지를 확인하기 위한 퀴즈이다. 퀴즈의 문제는 아래 보이는 실습에서는 어떤 HTTP Request method를 사용하는지에 대한 질문과 magic number가 몇번인지를 묻는 질문으로 이루어져 있다. HTTP Request에 관련한 내용인 만큼, 프록시 툴을 연결한 뒤, 두개의 입력란에 ..