Index
Webgoat 설치
https://github.com/WebGoat/WebGoat/releases/tag/v8.2.2
Webgoat 서버 실행
java -jar webgoat-server-8.2.2.jar
2번 문제
XSS가 발생한다면, 클라이언트 사용자의 쿠키 값을 탈취할 수 있다는 것을 확인할 수 있다. 또한, 두개의 탭을 이용하여 콘솔 창에 <script>document.cookie</script
> 를 입력해도 쿠키 값이 같다.
문제 2 클리어!
7번 문제
XSS에 취약한 필드를 식별하라고 한다. 입력 창에 6개가 있고, 수량 입력 창은 문자가 입력되지 않았다. 남은 아래 두 입력 창에 <script>alert(1)</script>
을 입력해보니, 신용 카드 번호 입력 창에서 XSS 가 발생한 것을 확인할 수 있다.
문제 7 클리어!
10번 문제
먼저, DOM이란 웹 브라우저가 HTML 페이지를 인식하는 방식을 의미한다. tree 형식으로 태그들이 존재하기 때문에, 키워드를 통해 필요로 하는 작업을 동적으로 추가할 수 있다.
이 문제의 url에서 start.mvc
경로가 나오는데, 이 파일의 소스코드에서 라우팅해주는 부분을 찾아보자.
기존 문제에서는 start.mvc#lesson/CrossSiteScripting.lession/9로 각 문제 페이지를 띄워준다.
왼쪽 사진 아래의 test/:param의 testRoute를 따라 검색해보면, 오른쪽 사진처럼 함수가 선언되어 있다. 이 함수는 lessonController의 testHandler 함수에 param을 넘긴다.
직접 따라가서 확인해보면, console.log를 찍고, 다시 lessonContentView의 showTestParam 함수로 param을 넘긴다.
또 다시 따라가면, 넘어온 param을 html 객체에 ‘test:’ + param으로 띄워버린다.
이때, html안에서 <scirpt>alert(document.cookie)</script>
로 XSS 취약점이 발생한다.
http://127.0.0.1:8080/WebGoat/start.mvc#test/hihi%3Cscript%3Ealert(document.cookie)%3C%2fscript%3E
슬래시(/)를 url 인코딩이 된 %2f
으로 작성해줘야 한다.
문제 10 클리어!
11번 문제
앞선 문제처럼 DOM 기반 XSS가 동일하게 적용되기 때문에, 문제에 나오는 함수를 직접 실행시켜 함수를 트리거 할 수 있었다.
http://127.0.0.1:8080/WebGoat/start.mvc#test/hihi%3Cscript%3Ewebgoat.customjs.phoneHome()%3C%2fscript%3E
입력하면, 콘솔 창에서 해당 함수가 실행된 것을 확인할 수 있다.
console.log로 넘어온 data를 json 형식으로 찍어준다.
문제에서 말하는 숫자 난수를 정답으로 입력해준다.
문제 11 클리어!
Uploaded by N2T