웹 모의해킹/XSS

XSS(Cross-Site Scripting)

째로스 2022. 11. 21. 22:58

※ XSS(Cross-site Scripting)란?

XSS(Cross Site Scripting)는 공격자에 의해 작성된 스크립트가 다른 사용자에게 전달되는 것이다.

다른 사용자의 웹 브라우저 내에서 적절한 검증 없이 실행되기 때문에 사용자의 세션을 탈취하거나,

웹 사이트를 변조하거나 혹은 악의적인 사이트로 사용자를 이동시킬 수 있다

[네이버 지식백과] XSS 취약점 (정보 보안 개론, 2013. 6. 28., 양대일)

 

1. 취약점 발생 원인

공격자의 스크립트가 그대로 서버에서 응답되기 때문이다.

 

2. 발생 가능한 위치

파라미터 데이터가 응답에 포함되는 모든 곳(사용자의 입력이 응답에 포함되는 곳)

 

3. 취약점 찾는 단계

 1) 사용자 입력에 따른 응답이 출력되는지 확인한다.

 2) < ' " > 4가지 특수문자를 사용할 수 있는지 확인한다.

    위 특수문자를 입력에 넣었을 때 그대로 출력된다면, 해당 문자들을 사용하여 공격에 활용할 수 있다.

    하지만 위 특수문자들이 공격에 사용되는 것을 방지하기 위해 html editor를 이용하여 html 특수문자를

    html entity로 치환하는 경우, 공격에 활용할 수 없게 된다. 예로 <가 &lt;, >가 &gt;로 치환된다면 우리는

    <와 > 특수문자를 공격에 사용할 수 없고, ' " 이 2가지 특수문자만을 사용하여 공격을 할 수 있게 된다.

 3) POC(Proof Of Concept) 코드 삽입

     브라우저에서 웹 페이지를 불러올 때 삽입한 POC를 통해 경고문을 띄울 수 있다면 XSS 취약점이

     있다는것을 알 수 있다. 회신된 웹 페이지에 우리가 입력한 javascript가 삽입됐다는 것이다.

     <HTML Entity>

출처: LYNMP (https://lynmp.com/ko/article/na4022da3d633f943a)

 

4. 스크립트 삽입 전략에 따른 종류

 1) Stored XSS : 서버에 스크립트 저장

     - 보통 게시판, 마이페이지, 닉네임 변경 페이지를 사용하여 공격

     - 서버에 스크립트를 저장하기 때문에 해당 페이지를 열람하는 모든 사용자가 공격 대상

 2) Reflected XSS : 서버에서 스크립트 반사

     - 응답되는 페이지에 삽입한 스크립트가 포함됨

     - 보통 검색창에서 공격

     - URL를 변조하여 특정 유저를 피싱(Phishing)하여 저격하는 것이 가능

 3) DOM Based XSS : 클라이언트에서 스크립트 조립

     - document.write() 함수 내에서 조립됨