2024 SWLUG/WebHacking

4주차_웹해킹 수업 정리

un_plugged 2024. 11. 13. 11:14

XSS 모의해킹 실습 정리

7번

개발자가 의도하지 않은 alert나 console.log 함수를 실행하여 문제를 해결한다.

일단 문제를 들어가면 위의 그림과 같이 나오는데 구매 버튼을 클릭해본다. 

Enter your credit card number에 입력된 카드 번호가 그대로 응답이 되고 있다. 

XSS는 공격 구문을 포함하여 보낸 요청 서버에서 그대로 응답 본문에 추가할 때 주로 발생되는 취약점으로 아래와 같이 구문을 포함하여 공격한다.

Enter your credit cared number 입력칸에 "<script>alert(1)</script>" 와 같이 script 태그를 이용해 alert(1) 함수를 실행하는 공격 구문을 추가한 후 구매 버튼을 클릭하면 XSS 공격에 성공하여 개발자가 의도하지 않은 alert(1)이 실행된다.

 

10번

이번 문제는 숨어있는 test route를 찾아서 인증하는 것이다.

  • base route는 start.mvc#lesson/
  • 파라미터는 CrossSiteScripting.lesson/0

-> 이 2가지의 문제에서 주어진 정보를 활용하여 해결한다. 

 

개발자 도구를 실행하여 base route의 일부인 lesson/를 입력해 검색하면

GoatRouter.js라는 파일 내부에 관련 정보가 있는 것을 확인할 수 있다.

여러 route 정보를 확인할 수 있는데 그 중 test/:param 형태의 테스트용 route를 찾을 수 있다.

 

  • base route가 start.mvc#lesson/이었는데 코드를 보면 lesson이 route임을 확인
  • 이를 통해 # 뒷부분이 route인 것을 알 수 있음

-> 따라서, 테스트용 route를 여기에 접목하면 정답은 start.mvc#test/임을 알 수 있다. 

 

11번

테스트용 route를 통해 webgoat.customjs.phoneHome() 함수를 실행하여 생성되는 랜덤 번호를 인증하는 문제이다.

다시 개발자 도구를 켜서 확인해보면 testRoute 함수는 테스트용 route인 test/:param에서 param을 인자로 lessonController의 testHandler 함수를 다시 호출하고 있다.

testHandler를 검색하면 LessonController.js 파일에서 위와 같이 특정 코드를 발견할 수 있다. 해당 위치로 들어가보면 

testHandler 함수는 전달받은 param을 다시 LessonContentView의 showTestParam 함수로 전달하고 있다.

showTestParam 함수를 검색 후 해당 위치로 들어가보면

showTestParam 함수는 전달받은 param을 lesson-content 클래스에 해당하는 요소의 하위에 inner html 형태로 test 단어와 함께 추가하고 있다.

 

직접 테스트용 route을 이용하여 문제를 해결한다. 테스트용 route는 start.mvc#test/:param로 사용할 수 있다.

:param 부분에 1234를 추가해 start.mvc#test/1234로 입력되어 있고 그 결과 test:1234 형태로 본문에 추가된다.

 

:param 부분에 <script>alert(1)<%2fscript>를 입력하여 개발자가 의도하지 않은 함수를 실행해본다.

마지막으로 :param 부분에 <script>webgoat.customjs.phoneHome()<%2fscript>를 입력하여 문제를 해결한다. 

 

'2024 SWLUG > WebHacking' 카테고리의 다른 글

5주차_웹해킹 수업 정리  (0) 2024.11.19
3주차_웹해킹 수업 정리  (0) 2024.10.30
2주차_웹해킹 수업 실습  (0) 2024.10.01
[webhacking.kr] old-52  (0) 2024.09.20
1주차_웹해킹 수업 정리  (0) 2024.09.16