itsme

(6) XSS-2 본문

Study/보안

(6) XSS-2

itssmeee 2023. 1. 17. 23:59
반응형

2) 검색 페이지공격

앞서 만든 검색 페이지에 실습을 진행하였다.

검색창에 <script>를 이용하여 alert 경고창이 나타나게 하였더니 

이와 같이 나타났다.

클라이언트의 브라우저에서 실행된 alert 함수는 개발자가 의도한 것이 아니다. 

사용자의 입력으로 인해 개발자가 의도치 않은 스크립트가 실행이 된 것이다. 이러한 공격을 XSS라고 한다.

앞서 만든 검색 페이지는 사용자의 입력값을 그대로 HTML에 출력시켰기에, 공격자가 임의의 Javascript코드를 실행하기 위한 공격 구문을 삽입하여 실행시킬 수 있었다.

검색페이지에는 Reflected XSS 취약점을 갖고 있다.

 

3) XSS 방어방법

1. 공격 구문에 활용된 수 있는 특수문자들에 대해 프런트엔드에서의 역할을 하지 못하는 일반 문자로 만든다.

SQL Injection에서는 특수문자 앞에 역슬래시를 붙여줌으로써 일반 문자화시켰지만, XSS 방어할 때는 HTML Entity 인코딩을 수행하는 것이 가장 보편적인 방법이다.

인코딩을 해주면 임의로 범위를 벗어난다거나 임의의 태그를 실행시킨다거나 하는 행위가 불가해져 XSS공격을 방어할 수 있다.

 

search.php파일에서 htmlentities 함수를 적용하자. htmlentities 함수는 어떠한 값에 대한 HTML Entity 인코딩을 수행해 주는 함수이다.

아까와 똑같이 Javascript 언어를 넣고 클릭하자

HTML 태그로 인식 되지않고 일반문자로 사용되어 화면에 그대로 출력하는 것을 볼 수 있다.

 

4) XSS 워게임 참고 사이트

https://xss-game.appspot.com/

 

XSS game

Welcome, recruit! Cross-site scripting (XSS) bugs are one of the most common and dangerous types of vulnerabilities in Web applications. These nasty buggers can allow your enemies to steal or modify user data in your apps and you must learn to dispatch the

xss-game.appspot.com

 

 

'Study > 보안' 카테고리의 다른 글

(5) XSS-1  (0) 2023.01.17
(4) SQL Injection -3  (0) 2023.01.16
(3) SQL Injection -2  (0) 2023.01.16
(2) SQL Injection - 1  (0) 2023.01.16
(1) 로그인과 검색 페이지 구현하기  (0) 2023.01.15