Code::Security/비박스(BWAPP)

비박스(bWAPP) A3 XSS - Reflected (GET)

태군 코드 2022. 7. 11. 16:35
반응형

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

 

A3 - XSS - Reflected (GET)

 

반사 교차 사이트 스크립팅 (Reflected Cross-Site Scritping)은 애플리케이션이 HTTP 요청에서 데이터를 수신하고 안전하지 않은 방식으로 즉각적인 응답에 해당 데이터를 포함할 때 발생합니다.

즉, 웹 사이트 URL에 존재하는 파라미터에 악의적인 스크립트 코드를 입력하여 다른 사용자가 URL을 요청하면 악성 스크립트 코드가 실행되게 하는 공격입니다. 공격자는 악성 스크립트 코드가 포함된 URL을 메일로 전송하거나 링크를 걸어 게시물로 등록하여 사용자가 클릭하도록 유도합니다.

 

1. 웹 사이트에 URL 매개변수에서 사용자 제공 검색어를 수신하는 검색 기능이 있다고 가정합니다.

hxxps://website.com/search?term=TEST

 

2. 애플리케이션은 다음 URL에 대한 응답에서 제공된 검색어를 반영합니다.

<p>You searched for: TEST</p>

 

3. 애플리케이션이 데이터의 다른 처리를 수행하지 않는다고 가정하면 공격자는 다음과 같은 공격을 구성할 수 있습니다.

hxxps://website.com/search?term=<script>alert(document.cookie)</script>

 

4. URL의 결과는 다음과 같습니다.

<p>You searched for: <script>alert(document.cookie)</script></p>

 

반사된 XSS 공격 방식

1. 공격자는 ​​웹 사이트 또는 콘텐츠 생성을 허용하는 다른 웹 사이트에 링크를 배치하거나 이메일, 트윗 또는 기타 메시지로 링크를 전달

2. 사용자가 악성 스크립트가 포함된 URL을 클릭하면 악성 스크립트 코드 실행

 

반응형

xss_get.php

난이도 하

Reflected Cross-Site Scripting 취약점이 있는 'xss_get.php' 페이지의 메인 화면입니다.

 

스크립트 코드 입력

'xss_get.php' 페이지에 XSS 취약점이 있는지 알아보기 위하여 First name 입력란에 스크립트 코드를 입력하였습니다. 스크립트 코드가 실행되면 자신의 쿠키 값이 표시된 경고창을 확인할 수 있습니다.

 

<script>alert(document.cookie)</script>

 

쿠키값이 포함된 경고창 확인

 

iframe XSS

<iframe src=http://testphp.vulnweb.com < iframe을 이용하여 해당 웹 페이지 안에 어떠한 제한 없이 또 다른 하나의 웹 페이지를 삽입할 수 있습니다.

 

난이도 상

난이도 상에서는 First name이나 Last name에 스크립트 코드를 입력하여도 문자로 인식합니다.

 

xss_get.php 소스코드

xss_get.php 페이지의 소스 코드를 확인하면 xss_check_3 함수를 사용하여 입력 데이터 값을 우회합니다.

 

functions_external.php

 

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

 

XSS는 웹 페이지의 어느 곳에서든 취약점이 발생하므로 허용한 소스 코드 외에는 HTML 엔티티 코드로 변환하여 웹 브라우저가 악의적인 소스 코트를 해석하지 못하게 막아야 합니다.

 

 

반응형