XSS(Cross-site Scripting)

mgm-dev·2020년 11월 22일
0

web security 101

목록 보기
2/2

📚TL;DR

XSS(Cross Site Scripting) : 웹 애플리케이션에서 많이 나타나는 취약점의 하나로 웹사이트 관리자가 아닌 이가 웹 페이지에 악성 스크립트를 삽입할 수 있는 취약점

&nbsp Cross-site Scripting 공격이란 악의적인 사용자가, 공격하려는 사이트에 스크립트를 넣는 기법을 뜻한다. 대표적인 예시로, 게시판에 <script> 태그를 삽입해서 쿠키나 세션 토큰 등의 정보를 탈취하는데 사용된다.


Example : XSS in tweet deck

&nbsp 2014년, tweet deck에서 XSS 방지 필터링이 모종의 이유로 작동하지 않았다. 때문에 트윗을 보기만 해도 자동으로 리트윗을 하게 되는 트윗이 생겨 났다. 트윗에 삽입된 jquery 스크립트는 다음과 같다.

<script 
class="xss">$('.xss').parents().eq(1).find('a')
.eq(1).click;$('[data-
action=retweet]').click();alert('XSS in 
Tweetdeck')</script>❤️

한번 살펴보자.

<script class="xss"> // 스크립트 태그를 삽입하고, 클래스명을 "xss"라고 명명
  $('.xss')          // 자기자신(script tag)를 찾는다
  .parents().eq(1)   // parent DOM의 2번째 엘리먼트를 찾는다
  .find('a')         // DOM 엘리먼트 안의 모든 a 태그를 찾는다
  .eq(1).click;      // 2번째 a 태그를 클릭한다(Retweet 버튼)
  // 팝업창에서 확인 버튼을 클릭한다
  $('[data-action=retweet]').click();
  // XSS가 통했다는 것을 보여주기 위해 alert 창을 띄운다
  alert('XSS in Tweetdeck')
</script> 
❤️ // 화면에는 ❤️만 표시 될 것이다

방지법? Spoilers 완벽한 방지는 없다

sanitizing function

function XSSFilter(content) {
  return content.replace(/</g, "&lt;").replace(/>/g, "&gt;");
}

Node.js xss module

const xss = require("xss");
let html = xss('<script>alert("xss");</script>');
console.log(html);

xss - npm

위험 요소가 될 수 있는 인풋을 sanitize 하자.

profile
never stop learning

관심 있을 만한 포스트

0개의 댓글

관심 있을 만한 포스트