Software Engineering/Security

[Web] XSS 란? (feat. SQL Injection)

Pazery는ENFJ 2022. 1. 27. 21:21
반응형

XSS (Cross-Site-Scripting)

XSS 란 ?

→ Cross-Site-Scripting 의 약어로 사이트 간 스크립팅을 의미함 웹 APP 에서 많이 나타나는 취약점으로 웹사이트 관리자가 아니어도 악성 스크립트를 삽입 할 수 있습니다.

예를들어, form 안에 <script> alert(document.cookie); </script> 를 작성하면 alert 가 노출된다면 XSS가 뚫려있는 상태

XSS의 주요 목적

  • 사이트 변조 보다는 사용자의 세션 탈취
    • 취약한 사이트의 경우 관리자 계정을 훔쳐서 로그인을 할 수도 있음.

XSS 해킹 시나리오

  1. 악성 스크립트를 담은 게시물 등록
  2. 사용자들이 게시물에 접근
  3. 열람자 들의 쿠키 값을 가로챔
  4. 가로챈 쿠키 값을 프록시 툴을 이용하여 재전송
  5. 열람자의 정보로 로그인
  6. *만약에 열람자가 관리자라면 관리자로 로그인

XSS와 SQL Injection 의 차이점은?

→ SQL Injection 과 XSS 가 유사한데 SQL Injection 의 경우에는 parameter에 임의로 값을 조작하여 전달하여 악성 Query 를 실행하는 것에 목적이 있는 반면에, XSS는 Javascript 를 실행하는데에 있습니다. 둘다 취약하지만, DB 까지 접근하는 SQL Injection 이 더 취약한 것으로 보임.

XSS를 예방하는 방법

  1. 치환 : 정규식을 이용하여 파라미터 값 필터링을 한다. (간단한 방법이지만 임시 조치에 불과)
  2. function XSSCheck(str, level){ if(level == undefinded || level == 0){ str = str.replace(/\\<|\\>|\\"|\\'|\\%|\\;|\\(|\\)|\\&|\\+|\\-/g,""); } else if(level != undefined && level == 1){ str = str.replace(\\/</g. "&lt;"); str = str.replace(\\/>/g. "&gt;"); } return str; }
  3. XSS 취약점 보완 라이브러리 사용 : 라이브러리를 사용하는 것이 가장 안정적이고 많이 사용 하는 방식 (=국룰) 추천 라이브러리 종류는 OWASP Antisamy, NAVER XSS Filter, ESAPI가 있습니다.

 

참고

https://doctorson0309.tistory.com/601

반응형