커피닉스, 시스템 엔지니어의 쉼터 커피향이 나는 *NIX
커피닉스
시스템/네트웍/보안을 다루는 곳
* HanIRC의 #coffeenix 방
[ 장비 및 회선 후원 ]
HOME > 보안(security) 도움말
검색 : 사이트 WHOIS 웹서버 종류

보안권고 (1, 자료 1)
보안툴 및 장비 (13, 글 1, 자료 11)
보안뉴스 / 정보 (3)
방화벽, 패킷 필터링 / IDS (15, 글 6, 자료 11)
보안문서 - 네트워크 보안 (1, 자료 12)
보안문서 - 시스템 보안 (7, 글 1, 자료 17)
보안문서 - 무선랜(WLAN) 보안 (자료 6)
보안문서 - 해킹 / 공격 (6, 자료 13)
바이러스(virus) / 웜 / 백신 (11, 글 4, 자료 3)
보안 통계 (자료 5)
암호화 및 인증 (3, 자료 3)
원격 OS 탐지 / OS 핑거프린팅 (4, 글 1, 자료 6)

  XAS(Cross Agent Scripting), XRS 취약점에 대해 작성일 : 2009/03/10 12:37
 
  • 글쓴이 : 좋은진호 ( http://coffeenix.net/ )
  • 조회수 : 5238
          [ 이전화면 / 수정 ]   비밀번호 :     인쇄용 화면
      제  목 : XAS(Cross Agent Scripting), XRS 취약점에 대해
    작성자 : 좋은진호(truefeel, http://coffeenix.net/ )
    작성일 : 2009.3.9(월)

    웹프로그래밍을 할 때, 웹브라우저명(Agent)이나 레퍼러(Referer) 정보를 화면에 출력할 경우가 있다. Request header의 웹브라우저명, 레퍼러를 누구나 쉽게 변경(위조)가 가능하다는 것을 알면서도 특별한 조치없이 바로 echo하는 경우가 많다. 일반적인 브라우저명이라면 다음과 같은 형식이다. 그대로 echo한다고 해도 문제가 되지 않을 것이다.

     
    Mozilla/5.0 (X11; U; Linux i686; ko; rv:1.9.0.4) Gecko/2008102920 Firefox/3.0.4
     


    그러나 다음과 같이, 브라우저명에 자바스크립트 등의 코드를 넣은다면 상황은 달라질 것이다. 피해는 XSS나 XSRF에 비해 미비할 수도 있겠지만 악의적인 임의의 자바스크립트를 실행할 수 있다.

     
    <script>alert('hello')</script>
     


    브라우저명에 실행가능한 형태의 코드나 자바스크립트를 넣는 것을 XAS(Cross Agent Scripting)라고 하며,
    레퍼러에 넣는 것을 XRS(Cross Referer Scripting)이라고 부른다.

    레퍼러를 변경해서 테스트해보자. FireFox에는 레퍼러를 변경할 수 있는 'RefControl' Addon( http://addons.mozilla.org/ko/firefox/addon/953 )이 있다. 설치 후 도구 -> RefControl Options -> Add Site 를 클릭한다.


    ( Firefox RefControl Addon에서 Referer를 사용자가 설정하는 화면 )

    단순히 <? echo $_SERVER['HTTP_REFERER']; ?>만 되어 있는 페이지의 경우 다음과 같이 자바스크립트가 실행되는 것을 확인할 수 있다.


    ( XRS 테스트 결과. 이 페이지는 테스트를 위해 임시로 만듬. 실제 존재하지 않음 )

    XAS, XRS를 막기위해서 php의 경우 htmlspecialchars() 함수 등으로 특수문자(<, > 등)를 변환해야 한다.

    [ 좋지 않은 php 코드 ]
     
    <?
    echo $_SERVER['HTTP_USER_AGENT'];
    echo $_SERVER['HTTP_REFERER'];
    ?>
     


    [ 안전한 형태의 php 코드 ]
     
    <?
    echo htmlspecialchars($_SERVER['HTTP_USER_AGENT']);
    echo htmlspecialchars($_SERVER['HTTP_REFERER']);
    ?>
     


    ※ XSS(Cross Site Scripting), CSRF/XSRF(Cross Site Request Forgery)에 대한 한글 문서는 많으나 XAS, XRS에 대한 글은 거의 없어 정리했다.
      커피닉스 카페 최근 글
    [01/26] Re: wget으로 다른서버에있는 디렉토리를 가져오려고합니다.
    [01/25] wget으로 다른서버에있는 디렉토리를 가져오려고합니다.
    [01/11] 특정 안드로이드 WebView 버전에서 SSL 문제 (WebView 버그)
    [08/01] DNS forwarder (전달자) 서버를 통해서 쿼리하면 역방향을 받아오질 못합니다.
    [05/16] (주)후이즈 시스템엔지니어 (경력자) 모집
    [02/15] [AWS] Cloudfront edge 확인하기
    [01/20] Mobile Service/eCommerce 기업에서 Server / Java / PHP 개발자 구인
    [01/11] 탄탄한 퍼블리싱 모바일기업에서 Mobile 개발자를 모십니다.
    [01/11] 탄탄한 퍼블리싱 모바일기업에서 Web Front 개발자를 모십니다.
    [01/11] 탄탄한 퍼블리싱 모바일기업에서 Server 개발 팀장을 모십니다.
    [12/21] 브라우저별 SHA1 퇴출 시점
    [09/15] [구인] 시스템엔지니어 (경력)
    [08/05] Re: 칼리리눅스 텔넷관련
    [08/04] 칼리리눅스 텔넷관련
    [06/29] 또 다른 무료 SSL 인증서, Let's Encrypt
      New!   최근에 등록한 페이지
      KiCad EDA Suite project (Free/Libre/Open-Source EDA Suite) (CAD)
      오픈캐스케이드 캐드 (OpenCASCADE CAD)
      QCad for Windows --- GNU GPL (Free Software)
      The Hello World Collection
      IPMI를 활용한 리눅스 서버관리
      DNS 설정 검사
      nagiosgraph 설치 방법
      Slony-I 설치 방법 (postgresql replication tool)
      Qmail기반의 Anti spam 시스템 구축하기
      clusterssh

    [ 함께하는 사이트 ]




    운영진 : 좋은진호(truefeel), 야수(yasu), 범냉이, sCag
    2003년 8월 4일~