Code::Security/비박스(BWAPP)

비박스(bWAPP) A3 XSS - Stored (Cookies)

태군 코드 2022. 8. 23. 18:06
반응형

이 도구를 이용하여 허용받지 않은 서비스 대상으로 해킹을 시도하는 행위는 범죄 행위입니다. 해킹을 시도할 때에 발생하는 법적인 책임은 그것을 행한 사용자에게 있다는 것을 명심하시기 바랍니다.

 

해당 문제를 살펴보기 전에 앞에서 확인하였던 Session Mgmt. - Cookies (HTTPOnly) 페이지를 참고하시기 바랍니다.

 

A3 - XSS - Stored (Cookies)

 

난이도 하

xss_stored_2.php

xss_stored_2.php 페이지는 문제에서도 알 수 있듯이 저장된 쿠키에 대한 취약점에 관한 내용입니다. 문제를 살펴보면 좋아하는 영화 장르를 선택하라는 메시지를 확인할 수 있습니다.

 

Action 선택후 Like 버튼 클릭

Action을 선택하고 Like 버튼을 누른후 URL을 살펴보면 genre 변수에 선택한 영화 장르가 표시되는 것을 알 수 있습니다. 쿠키 정보를 확인하기 위하여 크롬 확장 프로그램인 EditThisCookie를 통하여 쿠키의 정보를 확인해 보도록 하겠습니다.

 

EditThisCookie를 통한 쿠키 정보 확인

EditThisCookie를 통하여 쿠키 정보를 확인하면 쿠키헤더에 movie_genre가 포함되어 있는 것을 알 수 있습니다. movie_genre 값에는 선택하였던 영화 장르가 담겨 있는 것을 확인할 수 있습니다. 앞에서 다뤘던 Session Mgmt. - Cookies (HTTPOnly) 페이지에서도 확인을 해보도록 하겠습니다.

 

smgmt_cookies_httponly.php

먼저 xss_stored_2.php 페이지에서 영화 장르를 선택후 Like 버튼을 누른 후 Session Mgmt. - Cookies (HTTPOnly) 페이지로 이동하여 Cookies 버튼을 누르면 현재의 쿠키 정보가 테이블에 표시되는 것을 확인할 수 있습니다.

 

genre 변수에 스크립크문 삽입

좋아하는 영화장르를 선택하고 Like 버튼을 눌렀을 때 영화 장르는 URL genre 변수에 담기고 쿠키 헤더에 값이 전달되는 것을 알았으므로 genre 변수에 스크립트 문을 입력하였습니다.

 

EditThisCookie를 통하여 쿠키 정보를 확인하면 genre 변수에 넣었던 스크립트 코드가 쿠키값에 전달이 되는것을 알 수 있습니다. Session Mgmt. - Cookies (HTTPOnly) 페이지로 이동하여 저장된 값을 확인해 보도록 하겠습니다.

 

smgmt_cookies_httponly.php

Session Mgmt. - Cookies (HTTPOnly) 페이지로 이동하여 Cookies 버튼을 다시 누르면 스크립트 코드를 입력하였기 때문에 movie_genre 값은 비어 있고, 팝업창이 뜨는 것을 확인할 수 있습니다.

 

Reset 탭 클릭

Reset 탭을 눌러 저장되어 있던 값을 초기화 하여 줍니다.

 

EditThisCookie 쿠키값 수정

EditThisCookie를 통하여 직접 쿠키값을 수정후 Session Mgmt. - Cookies (HTTPOnly) 페이지에서 값을 확인해 보도록 하겠습니다.

 

Session Mgmt. - Cookies (HTTPOnly) 페이지로 이동하여 Cookies 버튼을 누르면 스크립트 문이 실행되어 팝업창이 동일하게 뜨는 것을 알 수 있습니다.

 

지금 여기서는 EditThisCookie를 통해서만 확인하였지만 테스트를 해보시는 분들은 프록시 툴을 사용해서도 확인해보시기를 추천드립니다.

 

반응형

 

난이도 중/상

xss_stored_2.php 소스코드

난이도 중에서는 xss_check_3 함수를 사용하는 것을 알 수 있으며 xss_check_3 함수는 functions_external.php에 정의되어 있고 htmlspecialchars() 함수를 호출하여 문자열에서 특수문자를 HTML 코드 형식으로 변환합니다. htmlspecialchars 함수를 살펴보면 두 번째 인자에 ENT_QUOTES를 추가하여 XSS에 사용되는 문자들을 HTML 엔티티 코드로 변환하기 때문에 스크립트 코드를 입력하여도 웹 브라우저에서는 문자로 인식하게 됩니다.

 

- htmlspecialchars() 함수 : '&', 작은따옴표('), 큰따옴표("), '<', '>'를 필터링해주는 함수입니다. 

 

난이도 상에서는 genre로부터 전달된 값을 switch문을 통하여 정해져 있는 값이 아니면 unknown을 출력하고 있습니다.


 

반응형