본문 바로가기

전체 글

(72)
[WebGoat] Injection-Cross Site Scripting 풀이 이번챕터는 XSS에 대한 내용을 담고있다. 원래 XSS는 Injection과 별개로 OWASP에서 항목이 있었는데, 2021 항목에서 Injection에 포함되었다. XSS도 어찌보면 클라이언트사이드 코드 인젝션처럼 볼 수 있으니, 이해가 된다. 문제 풀어보자. (첫번째 문제는 그냥 체크박스 클릭만 하면 되기때문에, 그냥 넘어가고 다음문제부터 풀이하겠다) Reflected XSS 문제이다. alert나 console.log를 실행시키면 되는 문제인데, 일단 지금 당장은 공격을 할 부분이 마땅히 보이지 않으니, Purchase를 눌러보자. Purchase 버튼을 누르니, 추가 정보가 서버로부터 응답되었다. 응답된 정보를 살펴보다보니, 입력되어있던 credit card number가 응답값에 노출됨을 확인할..
[WebGoat] Injection-Path traversal 풀이 Path traversal 취약점에 대한 챕터이다. 한글로는 경로 탐색 또는 디렉터리 탐색 취약점이라고 한다. 쉽게 설명하면 개발자가 의도한 경로에서 임의로 벗어나 어떠한 행위를 하거나 정보를 조회하는 등의 행위를 할 수 있는 취약점을 의미한다. 문제를 한번 보자. 첫번째 문제를 보니... 임의의 경로에 파일을 업로드하면 풀리는 문제로 보인다. 우선 파일을 업로드 할 수 있는 부분은 프로필 사진밖에 없으니, 프로필 사진을 업로드 한 뒤 Update를 시도해보자 파일명 testtesttest.png를 이용해 업로드했는데, 응답을 보니 /root/.webgoat-2023.3/PathTraversal/testtest/asdf 경로에 저장된다고 한다. 보아하니 testtest까지는 고정이고 그 뒤 경로는 Ful..
[WebGoat] Injection-SQL Injection (mitigation) 풀이 이번엔 SQL Injection 대응 방안에 대한 내용이다. Static Queries 방법을 사용했을때 문제가 발생하고, 우리는 Parameterized Queries 방법이나 아니면 정적인 쿼리만을 수행하는 Stored Procedures 방법을 사용하면 된다. Stored Procedure란 실행시킬 쿼리를 하나의 명령어처럼 만들어서, 이를 호출해서 사용하도록 하는 방식이다. 주로 Safe Stored Procedure 방식을 사용하기에, SQL Injection으로 부터 보호받을 수 있으나, 간혹 Injectable하게 procedure안에 또 다른 쿼리를 넣어 dynamic하게 만드는 실수를 하는 개발자분들이 있다. 이 경우 SQL Injection으로부터 위험해진다. 또 여기 설명은 되어있지 ..
[WebGoat] Injection-SQL Injection (advanced) 풀이 SQL Injection 고급 버전 챕터이다. 조금더 어려운 내용을 다루고 있다고 생각하면 된다. 문제풀러 가자. 이번 문제는 다른 테이블에 있는 데이터를 조회하는 SQL Injection 문제이다. 다른 테이블에 있는 데이터를 조회하기 위해서는 몇가지 방법이 존재한다. 이전에 학습한 쿼리체이닝, 그리고 Union 마지막으로 서브쿼리형태가 있다. 이번 문제의 경우 Union방식 또는 쿼리체이닝 방식으로 풀수가 있다. 먼저 쿼리체이닝부터 테스트를 진행해보자. 공격은 Name에 진행하고 Password는 실제 찾아낸 정보를 인증하는 부분이다. Name에 우선 임의의 값을 넣고 ';를 넣어 문자열 범위를 임의로 종료시킨 뒤, 쿼리를 임의로 종료시키고 이어 select * from user_system_data..
[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에서 공격자들이 주로 화면에만 보이는 정보가 아닌 응답값을 ..