Web Hacking Study/웹해킹

XSS(Cross Site Scripting)

silver surfer 2022. 4. 21.

** XSS

- 게시판이나 웹 메일 등에 JavaScript와 같은 스크립트 코드를 삽입하는 기법

- 의도치 않은 행동을 수행시키거나 쿠키, 세션 토큰 등 민감한 정보를 탈취한다. 

- 다른 웹 해킹 기법과는 다르게 Client 측을 대상으로 한 공격이다

- OWASP Top10에 포함되어 있을 정도로 자주 발생하는 공격이다.

- 대부분 사용자가 글을 읽고 쓸 수 있는 게시판에서 자주 발생하지만 사용자의 입력값을 웹 페이지에 표시하는 곳에서도 공격이 발생할 수 있다

 

 

** XSS 공격 방식

쿠키 스니핑(Cookie Sniffing), 스크립트 암호화 및 우회, 악성 스크립트 유포, 키 로거(Key Logger), 마우스 스니퍼(Mouse Sniffer), 거짓정보 추가 등이 있다. XSS 공격은 주로 스크립트 언어와 취약한 코드를 대상으로 한다

 

① Reflected XSS

요청 메시지에 입력된 스크립트 코드가 즉시 응답 메시지를 통해 출력되는 취약점이다.

해커는 공격 대상자가 게시판, 닉네임, 댓글과 같은 링크를 남길 수 있는 곳에서 악성 스크립트를 삽입하고 공격 대상자가 스크립트를 직접 실행하도록 유도한다.

공격 대상자가 해커가 걸어놓은 링크를 클릭하면 공격 스크립트 코드가 삽입된 사이트로 이동하고, 입력된 스크립트가 반사되어 그대로 웹사이트에 출력된다

 

Reflected XSS의 경우 브라우저 자체에서 차단하는 경우가 많아 상대적으로 공격시키기 어렵다.

 

② Stored XSS (저장형 XSS 공격)

웹 브라우저에서 스크립트를 실행시키는 것은 Reflected XSS 공격과 동일하지만 웹 서버에 스크립트를 저장했다가 실행된다는 차이점이 있다.

Reflected XSS 공격과 달리 지속적으로 피해를 입히는 공격 유형이다.

공격자는 XSS 공격 스크립트를 웹 사이트의 게시판, 방명록 같은 곳에 삽입한다. 사용자가 해커가 작성한 게시물을 실행하면 스크립트 코드가 사용자에게 전달된다.

이 때 웹 브라우저는 스크립트 코드를 실행해서 세션 쿠키를 해커에게 전달하고 해커는 세션 쿠키를 사용해 사용자의 권한으로 웹 사이트의 접속이 가능해진다.

 

③ DOM Based XSS

DOM(Document Object Model) 은 HTML 및 XML 문서에 접근하는 방법을 표준으로 정의한 문서 객체 모델이다.

DOM Based XSS는 피해자의 웹 브라우저에서 DOM 환경을 수정하여 Client 측 코드가 예상치 못한 방식으로 공격 구문을 실행하는 기법이다

 

 

** 대응방안

① 입력 데이터에 대한 값 제한

② 입력 값 치환

XSS 공격을 차단하기 위해 태그문자(<,>) 등 위험한 문자 입력 시 문자 참조(HTML entity)로 필터링하고, 서버에서 브라우저로 전송 시 문자를 인코딩 한다

- HTML 문자 참조: ASCII 문자를 동일한 의미의 HTML 문자로 변경하는 과정

 

아래 표는 HTML 문서에서 악성 스크립트에 포함되어 브라우저에서 실행될 수 있는 문자와 대체 문자를 정리한 것

③ XSS 방어 라이브러리, 브라우저 확장 기능 사용

④ 백엔드 코드(Server) 측에서 방어

댓글