보안 공부/Web 보안

XSS (크로스사이트 스크립트, 크로스 사이트 스크립팅) 취약점

H.J.World 2018. 12. 15. 10:00
728x90
반응형

XSS (크로스사이트 스크립트, 크로스사이트 스크립팅, Cross Site Scripting) 취약점

1. 정의

- 검증되지 않은 입력 값으로 인해 사용자의 웹 브라우저에서 의도하지 않은 악성 스크립트가 실행되는 취약점이다.
 - 외부 입력이 동적 웹페이지 생성에 사용될 경우, 전송된 동적 웹 페이지를 열람하는 접속자의 권한으로 부적절한 스크립트가 수행되는 취약점이다.
 - 공격을 통해 사용자의 개인정보 및 쿠키정보 탈취, 악성코드 감염, 웹 페이지 변조 등이 발생한다.
 - 서버를 공격하는게 아니라, 서버를 경유해 클라이언트를 공격하는 것이다.

    2. XSS 유형

    1). stored XSS
     - 공격용 악성 스크립트가 공격 대상의 DB등에 보존되어 있는 경우를 지속형 XSS 라고 한다.
     - 주로 게시판이나 방명록, 회원 정보 같은 사용자의 입력 값을 저장, 열람 할 수 있는 곳에서 발생한다.
    2.) Reflected XSS
     - 공격용 악성 스크립트가 공격 대상의 사이트가 아닌 다른 사이트에 있는 경우 이를 반사형 XSS라고 한다.
     - 주로 사용자 입력 값이 필터링 없이 그대로 웹 브라우저에서 파싱되는 경우 발생한다.

    #개인적 경험 : 사실 실무에서 진단 시 Stored냐 Reflected냐는 크게 중요치 않음,  발생가능 인자에 대해 진단하여 적절한 예외처리 및 대응이 적용되었는 지가 가장 중요함

    3. 보안 대책
     - 사용자 입력 값은 반드시 서버단에서 검증한다. (클라이언트에서만 검증을 수행 시 프록시 도구를 통해 클라이언트단 이후 수정후 공격 가능)
     - 문자열 특수 기호등을 변환함수를 사영하여 치환하여 저장토록한다.
     - 게시판 등에서 HTML 태그 허용 시 HTML 태그의 리스트(화이트 리스트)를 선정한 후, 해당 태그만 허용하는 방식 적용한다.

    #개인적 경험 : XSS에 대한 대응 방안으로는 가장 좋은 것은 특수 기호에 대한 치환이다.  (ex : <, >, ", ', &, #, = 등), 근데 역시 실무에서 진단하고 대응 하다보면 꼭 "우리는 특수 기호에 대해서 사용해야 합니다..." 이러는 기관들이 좀 있다... 난감하지만 해당 기관같은 경우에서는 최소한에 구문에 대한 검증을 요청해야한다. (ex : script, alert, onmouse, iframe, 등등) 그리고 이런 기관에는 반드시 경고?를 해줘야한다. 이런것만으로는 100프로에 대한 대응 방안이 아니여서 취약점이 발생할수 있으니 감안하셔야한다고..

     4. 진단 화면

    - 다음과 같은 입력폼에 스크립트 구문을 입력, 공격자가 원하는 행동을 할수 있음

    - 해당화면은 실 진단 시 발견했던 취약점으로 현재는 조치완료 상태입니다.

     

    5. 진단 스크립트

    진단 스크립트는 진단자 마다 매우 상이며, 진단에 대한 경험이 많아 질수록 다양하게 접근, 우회하게 됩니다.

    아래와 같은 스크립트 구문 이외에 것들도 직접 작성 및 사용해보시기 바랍니다.

    ------------------------------------------------------------------------------------------------------------------------------------------------------------

    test"/><iframe src=http://test.go.kr></iframe>

    test"/><script>alert(document.cookie)</script>

    <a onmouseover="alert(document.cookie)">

    ="" onmouseover="alert('moitest')

    ="" onMouseOver="alert('moitest')

    <P onmouseover=alert(document.cookie);moitest</P>

    <a href="http://http://test.go.kr" target="_blank"><br />기사상세보기(클릭)</a><div></div>

    "></a> <img width="166" height"231" alt="" src="http://test.go.kr"></img>

    ------------------------------------------------------------------------------------------------------------------------------------------------------------

     

    #크로스 사이트 스크립팅

    #크로스 사이트 스크립트

    #XSS 구문

    728x90
    반응형