XSS, 프록시, 난독화

Jh Park·2022년 9월 5일

RK - 애보

목록 보기
1/5
post-thumbnail

XSS(Cross Site Scripting)

1. XSS란

  • XSS란 악의적인 사용자가 공격하려는 사이트에 악성코드를 넣는 기법이다.
    일반적으로 악성코드는 스크립트형태이며 JavaScript, VBSScript, flash 등이 있다.
  • Cross Site Scripting이지만 XSS약자인 이유는 CSS(Cascading Style Sheet)와 구별하기위해 XSS로 하게되었다.

순서

  • Web App에 스크립트 형태의 악성코드를 넣는다.
  • User가 해당 Web App에 접속한다.
  • Hacker은 접속한 User의 세션을 탈취한다.

2. 공격유형

1) DBD(Drive By Download)공격 유형
악성코드를 자연스럽게 다운로드하도록 유도한다.

2) Cookie 값을 훔치는 방법
User가 스크립트(악성코드)가 있는 페이지를 방문하게되면 스크립트는 쿠키를 공격자의 컴퓨터로 보내게 되고, 공격자는 자신의 쿠키를 지우고 훔친 쿠키로 교체하여 해당 웹사이트에 접속하면, 로그인 된 것으로 나옴(최근 사용빈도 ↓)

3. XSS의 종류

1) Stored(저장형) XSS

공격자가 취약한 웹서버에 악성 스크립트를 저장하면 희생자가 해당 자료를 요청할 떄 해당 악성 스크립트가 삽입된 응답 페이지가 전달되어 클라이언트 측에서 동작하는 방식이다.

2) Reflected(반사형) XSS

외부에 있는 악성 스크립트가 희생자 액션에 의해 취약한 웹서버로 전달되고, 웹서버의 응답 페이지에 해당 악성 스크립트가 삽입되어 희생자 측에서 동작하는 방식이다.

3) DOM based(DOM기반) XSS

희생자의 웹 브라우저에서 응답 페이지에 포함된 정상적인 스크립트가 동작하면서 DOM 객체를 실행할 때 URL 등에 포함된 악성 스크립트가 동작하는 방식이다. 응답 페이지에 관계없이 웹 브라우저에서 발생한다.
※ DOM이란 The Document Object Model(문서 객체 모델)

4) 실습

  • Security Level: low

  • Security Level: Medium
    low 와 달리진 것은 str_replace()함수로 를 널값으로 지정

    	$name = str_replace( '<script>', '', $_GET[ 'name' ] );

    공격방법

             <sCrIpT >alert('jajjaj')</ScRipt>
              대소문자를 섞는다
             <script img=x>alert('jajjaj')</script>
              불필요한 속성 추가
             <script >alert('jajjaj')</script>
              태그는 속성을 추가할 수 있기에 공백이 구분자의 역할을 한다 
             <scr<script>ipt>alert('jajjaj')</script>
              스크립트 태그를 중첩해서 사용하는 방법
  • Security Level: High
    - Medium 와 달리진 것은 Medium에서 사용하였던 대소문자 변환 방법은 불가능하다.
    그 외 방법은 가능 불필요한 속성이나 공백 추가하거나 스크립트 태그를 중첩을 하는 방법은 가능하다. 그렇기에 문자를 치환하는 방법은 좋지 못한 방법이다.

    	$name = preg_replace( '/<(.*)s(.*)c(.*)r(.*)i(.*)p(.*)t/i', '', $_GET[ 'name' ] ); 
           

    공격방법

             <script img=x>alert('jajjaj')</script>
                불필요한 속성 추가
             <script >alert('jajjaj')</script>
                태그는 속성을 추가할 수 있기에 공백이 구분자의 역할을 한다 
             <scr<script>ipt>alert('jajjaj')</script>
                스크립트 태그를 중첩해서 사용하는 방법
  • Security Level: Impossible
    - Impossible에서는 htmlspecialchars()를 사용하여 여러 특수문자들을 html태그로 변환해주고 있다.

    	$name = htmlspecialchars( $_GET[ 'name' ] );

    프록시

    1. 프록시란

  • Server와 Client의 사이에 존재하여 Server에게는 Client인 척하고, Client에게는 Server인 척을 할수 있다. 그렇기에 SSL 인증서 오류가 발생한다.

    • Server에 가까우면 Server의 부담을 덜어주는 역할
    • Internet에 있으면 Client의 IP주소를 숨겨주는 역할
    • Client에 가까이 있으면 방화벽의 역할 또는 http 요청을 조작할 수도 있음

2. 종류

  • 대표적인 도구 : Burp Suite, Paros Proxy(소스코드 공개, 커스터마이징 가능), charley, Fiddler2, Achilles 등이 있다.



    난독화

1) 난독화란

프로그래밍 언어로 작성된 코드에 대해 읽기 어렵게 만드는 작업이다

2) 목적

  • 원래는 개발자들이 내부 정보를 숨기기 위한 목적으로 사용하며 공격자들이 자신이 만든 스크립트의 내용과 URL, IP주소, 악성코드 이름 등을 숨기기 위한 목적을 숨기기 위한 목적으로도 사용한다.
  • DBD를 위한 스크립트의 경우, 악성코드가 있는 서버의 URL, IP주소, 악성코드의 이름 등이 들어있다. IP주소, URL을 파악하여 방화벽에 방문 금지 목록에 추가하게되면 우리 회사 직원들이 악성코드 유포지를 방문하지 못하게 된다.
  • 난독화는 생소한 인코딩에 복잡한 함수를 포함한다. 사람은 읽을 수 없지만, 웹브라우저는 읽을 수 있다.

3) 인코딩에 사용하는 것

SSC,ASKII,Unicode,base64,16진수(\x) 등이 있다.

0개의 댓글