본문 바로가기

XSS(Cross Site Scripting) 공격 취약점 점검방법과 방어

쇼하우 2024. 4. 3.
반응형

웹공격 중 상당히 많은 비중을 차지하고 있는 XSS 취약점에 대한 점검방법과 보안대책을 살펴보겠습니다. 우회방법을 알아두시면 보다 안전한 웹페이지 구성이 가능합니다.

 

XSS공격 취약점 점검방법과 보안대책
XSS공격 취약점 점검방법과 보안대책

 

XSS 취약점이란?

XSS는 특정 공격자가 작성한 스크립트가 다른 사용자에게 전달되어 악의적인 결과를 만들어내는 공격으로, 주로 클라이언트단에서 실행되는 언어를 이용하여 작성된 악의적인 스크립트를 이메일이나 게시판 등을 통해 유포합니다.

유포된 스크립트를 사용자가 실행하게 되면, 악성코드가 실행되는 것이죠.

 

XSS 취약점 점검방법

XSS에 취약한 유형

XSS에 취약한 페이지는 다음과 같은 예가 있습니다.

  • Referrer를 이용하는 페이지
  • HTML을 지원하는 페이지
  • 검색 페이지
  • 조인 폼 페이지
  • 입력과 출력이 있는 페이지

아마 이 중에서 가장 많은 비중을 차지하는 것은 HTML 지원 페이지입니다. 실제로 과거에 근무했던 IT회사에서도 HTML 페이지가 취약해서 모든 PC에 보안설정을 했던 경험이 있습니다.

스크립트 실행 여부 확인

XSS에 취약한지 확인하는 방법은 간단합니다. 의심되는 게시판에 스크립트를 입력하여 실행이 되는지 확인하면 되는데요.

테스트할 위치(페이지)의 url 변수값에 다음과 같은 스크립트를 입력하여 실행 여부를 확인하면 됩니다.

  • <script>alter("sriptTest");</script>
  • <img src="javascript:alter('thisistest');">
  • <img src="JAVaSCRipt:alter('XSS';)>

여기서 두번째 스크립트는 img src를 이용한 방법이며, 세번째 스크립트는 대문자와 소문자를 혼용하여 쓴 스크립트 구문입니다.

혹시 이 내용이 잘 이해되지 않으신다면 댓글이나 제 개인메일로 연락주시면 더 자세히 알려드리겠습니다.

 

XSS 보호대책

XSS(Cross Site Scripting) 취약점은 해당 페이지에서 사용자가 입력한 문자열에 대한 검증을 하지 않기 때문에, 입력값 그대로 서버에 전달된다는 문제가 있습니다.

즉, 악의적인 목적의 문자열이 그대로 전달되면 공격자가 원하는 명령이 실행되는 것인데요.

이같은 부분은 setting으로는 막을 수 없기 때문에 입력값에 대한 필터링이 이루어져야 합니다.

문자열 변환(필터링)

가장 좋은 방법은 html tag가 게시판에서 입력되지 않도록 하는 것인데, 페이지 목적상 html 태그가 입력되어야 할 수도 있기 때문에 완벽한 방법은 아닌데요.

이런 상황에서는 질의 문자열, 특정 스크립트, 헤더 등을 입력하거나 전송하지 못하도록 조치할 수 있습니다.

스크립트 변환을 통해서 말이죠.

 

예를 들어 <, >, (, ), #, &와 같은 문자열을 변환할 수 있습니다. 아마 인터넷 서핑중 접속한 페이지의 URL 주소를 보시면 &#35; &gt; 등과 같은 문자열을 찾아볼 수 있는데요. 이런 문자열이 바로 변환된 것입니다.

익스플로러 설정 변경

인터넷 익스플로러 설정에서도 XSS 보호대책 세팅이 가능합니다. 만약 다른 주소로 이동하거나 유도할 때 알려주는 기능입니다.

(1) 인터넷 옵션

익스플로러-도구-인터넷옵션
익스플로러-도구-인터넷옵션

 

익스플로러 브라우저 - 도구 - 인터넷 옵션 메뉴로 들어가세요.

(2) 사용자 지정 수준

인터넷옵션 보안설정
인터넷옵션 보안설정

 

보안 탭을 눌러서 사용자 지정 수준 메뉴로 들어가세요.

(3) XSS 필터 사용

인터넷옵션 XSS필터 사용여부
인터넷옵션 XSS필터 사용여부

 

설정 항목 중 XSS 필터 사용을 확인하세요. XSS 필터 사용에 체크되어 있으면 익스플로러상 보안대책이 마련되어 있다는 의미입니다.

집에서 사용하는 PC에는 작년부터 개인 목적상 XSS 필터를 사용안함으로 체크해두고 써왔는데, 포스팅 하면서 발견했네요. 저도 이참에 사용 설정으로 바꾸었습니다.

댓글