Web hacking/bee-box

[Bee-box] XSS - Reflected(GET)

Dokker 2023. 12. 19. 17:53

난이도 하

 

 

화면을 들어오면 first name, last name 입력란이 있다.

입력한 내용은 아래 welcome 뒤에 출력 된다.

 

 

xss 취약점이 있는지 알아본다.

 

 

 

GET 방식이니 파라미터에 값을 바꿔본다.

 

<script>alert("hi");</script>

 

 

 

 

first name, last name 둘다 스크립트를 삽입 하였을 떄 동작한다.

 

즉 xss에 취약하는 것

 

Welcome 에는 스크립트문은 출력하지 않는다.

 

이 페이지에 있는 파라미터 firstname, lastname 모두 xss에 취약하다.

 

 

 

 

대응방안

난이도 상에서는 first name이나 last name에 스크립트 코드를 입력하여도 문자로 인식한다.

페이지 소스를 확인해보면 xss_check_3 함수를 사용하여 입력 데이터를 우회한다.

함수 내부에는 htmlspecialchars() 함수를 호출하여 입력 데이터를 UTF-8로 인코딩 한다.

 

 

 

 

 

 

 

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

 

 

이 방어방법은 SQL 인젝션의 대응방안으로도 활용된다.