Code::Security/비박스(BWAPP)

비박스(bWAPP) A3 XSS - Reflected (Back Button)

태군 코드 2022. 7. 27. 16:30
반응형

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

 

A3 - XSS - Reflected (Back Button)

 

난이도 하

xss_back_button.php

xss_back_button.php 페이지를 확인해 보시면 'Go back' 버튼과 함께 단추를 눌러 이전 페이지로 돌아갑니다 라는 문구를 확인할 수 있습니다. 'Go back' 버튼을 눌렀을 경우 어느 페이지로 연결이 되는지 확인하기 위해 소스코드를 확인해 보도록 하겠습니다.

 

개발자 도구를 통한 소스 코드 확인

크롬의 개발자 도구를 통하여 확인해 보면 onclick 이벤트에 현재페이지가 location.href로 연결이 되어 있는 것을 알 수 있습니다.

 

location.href

- href 는 location 객체에 속해있는 프로퍼티로 현재 접속 중인 페이지 정보를 갖고 있습니다.
- 값을 변경할 수 있는 프로퍼티이기 때문에 다른 페이지로 이동하는데도 사용되고 있습니다.

 

상세 확인을 위하여 버프스위트를 통해서 알아보도록 하겠습니다.

 

버프스위트를 통한 패킷 확인

먼저 비박스 메인페이지에서 Cross-Site Scripting - Reflected (Back Button) 선택하여 패킷을 확인합니다. 여기서 확인해야 할 부분은 Referer Header 부분입니다.

 

Referer Header
- 요청된 페이지가 이전 웹 페이지의 주소를 포함하는 HTTP 헤더 필드입니다.

 

상세 설명 
- [hxxp://localhost/bWAPP/portal.php] 웹페이지에서 Cross-Site Scripting - Reflected (Back Button) 클릭하여 [hxxp://localhost/bWAPP/xss_back_button.php] 페이지로 이동했을 때 Referer는 [hxxp://localhost/bWAPP/portal.php] 가됩니다.


해당 페이지는 Go Back버튼을 누르면 portal.php 페이지로 돌아갑니다. xss_back_button.php페이지는 portal.php페이지에 의해 요청되었기 때문에 Go Back 버튼을 눌렀을 때, HTTP Referer 헤더에 의해 portal.php 페이지로 이동하게 됩니다. 따라서 페이로드가 주입되기 위해서는 이 두 페이지의 HTTP 요청을 가로채야 합니다. 그러면 페이로드가 HTTP Referer 헤더에 주입될 수 있습니다.

 

Referer 조작값 확인

먼저 간단히 테스트를 하기 위하여 Referer 값에 문자열을 사용해 보았습니다. 'XSS TEST'라고 입력한 뒤 버프 스위트에서 Forward 버튼을 눌러 결과값을 확인해 보시기 바랍니다.

 

반응형

 

이제 XSS 취약점 확인을 하기 위하여 값을 입력해야 하지만, onClick 메소드 안에서는 <script> 태그를 쓸 수 없기 때문에 다른 방법으로 확인해 보도록 하겠습니다.

 

Referer 헤더에 값 입력

버프 스위트로 패킷을 잡아 Referer 헤더에 ';alert('XSS TEST')'; 값을 입력해 주었습니다.

 

응답값을 통하여 변경된 값 확인

 

취약점 확인

 

개발자 도구를 통한 취약점 확인

 

난이도 중 - ', ", \, NULL 문자를 포함하지 않는 스크립트 코드 실행   

 

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

반응형