- 동적 생성 웹 페이지에 악의적인 스크립트를 넣어, 사용자가 해당 페이지를 열람했을 경우 삽인한 스크립트를 실행하도록 함으로써 사용자의 데이터를 탈취하는 웹 해킹 기법.
* OWASP(Open Web Application Security Project)에서 발표한 Web Application의 10대 취약점 중의 하나.
1. 공격시 사용되는 HTML 태그 : <script> 등.
2. 공격 대상 script 및 언어 : Javascript, VBScript, ActiveX, HTML, Flash
3. 공격 대상 코드 : CGI 스크립트, 검색 엔진, 게시판, 오류 페이지 등
4. 공격 대상 코드의 주요 공격 위치 : 입력 부분. 예를 들어 URL parameter, Form elements, 쿠키, DB 쿼리 등.
XSS의 두 가지 유형XSS에는 client-to-client와 client-to-itself 방식의 두 가지 유형이 존재한다.
1. client-to-client 방식 - 한 클라이언트에서 다른 클라이언트로 악의적인 코드가 전달되는 방식. 게시판에 <script> 태그를 이용하여 글을
쓰는 방식으로 악의적인 코드를 전달할 수 있음. 이와 같은 스크립트를 필터링하지 않을 경우에 발생.
2. client-to-itself 방식 - 악의적인 코드를 공격 대상이 되는 클라이언트에게 보내서 되돌려
받는 유형. 이러한 형태의 공격은 주로 이메일이나 웹 페이지를 통해 링크를 제시하고 사용자가 그러한 링크를 클릭하도록
유도하는 방식으로 이루어짐.
공격 방법다음과 같은 방법을 통해 공격자가 사용자와 웹 사이트 사이의 상호작용을 통제.
1. 페이지의 모양 바꾸기 : 이미지나 사운드를 삽입.
2. SSL 암호화 커넥션 노출 : SSL 페이지에 대해서도 XSS를 이용해 공격 가능.
3. 쿠기 변경시키기 : 쿠키 자체를 변형하여 쿠키에 악성 코드를 넣는다. 변형된 쿠키는 지속적인 공격을 가능하게 함.
4. 제한된 웹 사이트 접근 : 악의적인 URL을 생성함으로 사용자의 인트라넷에 있는 데이터를 유출시킴.
5. DOM 기반 보안 정책 위반 기능 : 악의적인
스크립트 태그를 서버로 보내고 대상 클라이언트가 이에 대해서 접근한다면 DOM 보안 정책은 무용지물이 됨. 계정
하이재킹(hijacking), 사용자 세팅 변경, 쿠키 훔치기, 쿠키 변형시키기, 잘못된 정보 보여주기 등이 가능
6. 잘 사용하지 않는 문자셋을 사용 : 문자열의 불일치로 인해서 특수 문자가 서로 다르게 해석되어 문제가 발생할 여지가 있음.
7. 폼의 행동 방식 변경 : 폼의 행동 방식과 결과가 어떻게 서브밋(submit)될 지에 대한 방식을 변형.
쿠키 훔치기 - 쿠키를 훔쳐 상대편 웹 브라우저의 권한을 행사.
- document.cookie 오브젝트를 자바스크립트로 읽어서 공격자가 지정한 위치의 cgi에
전달한다. DOM security 세팅을 건너뛰어 사용자의 쿠키에 접근이 가능한 점을 이용해서 사용자의 쿠키를 공격자가 지정한
서버로 전송.
- 쿠키 로거 : 쿠키를 리모트에서 빼내기 위한 로거(logger).
XSS를 통한 공격 방지 대책 1. 사용자 입력으로 사용 가능한 문자들을 정해놓고, 그 문자들을 제외한 나머지 모든 문자들을 필터링
2. 게시판에서 HTML 포맷을 사용할 수 없도록 설정.
3. 필요한 경우 모든 HTML을 사용하지 못하게 설정 후 필요한 HTML 태그만 쓸 수 있도록 설정.
4. '<'와 같은 특수 문자 입력시 entity 형태로 변경( '<' => '<'
XSS의 위험성 - XSS를 이용한 공격은 아주 치명적. 공격 대상의 시스템의 관리자 권한까지 행사 가능.
- 공격 대상이 모호해서 방화벽 등의 보안 솔루션으로는 방지하는 것 자체가 불가능.
- 따라서 보안에 주의 깊은 개발 및 유지보수 관리 체계를 통해 XSS의 위험을 극복해야.
댓글을 달아 주세요
OWASP 정도는 언급해야 하지 않을까요?
해당 토픽에 대한 이해를 중심으로 작성하다보니 키워드 확장에 대해 소홀히 하게 되는군요. OWASP에 대한 내용이 추가되었습니다.