본문 바로가기

XSS5

CSP(Content-Security-Policy) Bypass CSP(Contnet-Security-Policy)란 CSP(Contnet-Security-Policy)는 웹에서 사용되는 콘텐츠(이미지 태그, 스크립트 등)에 대한 정책으로 XSS와 같은 특정 유형의 공격을 감지하고 완화하는데 도움이 되는 보안 정책 입니다. XSS 공격은 서버에서 받은 콘텐츠를 무조건적으로 신뢰하는 브라우저의 특성을 악용하여 악성 스크립트가 피해자의 브라우저에서 실행되도록 하는 공격입니다. 그런데 CSP를 사용하게 되면 브라우저가 신뢰할 수 있는 출처를 설정할 수 있어 신뢰되는 출처에서 수신받은 스크립트만을 실행하도록 하여 일부 XSS 공격을 방지할 수 있습니다. 또한, 모든 콘텐츠가 HTTPS를 이용하여 로드하도록 지정할 수도 있습니다. 과거에는 CSP로 사용되는 헤더들이 여러 개 .. 2022. 6. 15.
Server Side XSS (Dynamic generated PDF) 개요 특정 페이지 내 코드가 HTML로 렌더링 되어 PDF로 반환되는 페이지가 있습니다. 만약 사용자 입력 값을 해당 페이지에 삽입할 수 있고 HTML 코드로 인식된다면 해당 취약점은 XSS이면서 SSRF(Sever Side Request Forgery)가 될 수 있습니다. 그리고 이러한 취약점을 Server Side XSS라고 부릅니다. ※ PDF로 반환되는 기능에서만 발생하는 건 아니지만 제일 많이 발생하는 유형이라 PDF를 기준으로 설명하겠습니다. Cheat Sheet Confirm Server Side XSS Code Confirm Server Side Blind XSS Code Leaked Server URL LFI(Local File Inclusion) - When the server url .. 2022. 5. 18.
Cross Site Request Forgery(CSRF) payload XSS가 발생하는 환경에서 CSRF 보호 기법(csrf token)이 적용되어 있지 않으면 당연히 CSRF를 확인해야 합니다. CSRF Payload by multipart/form-data CSRF Paylod by json 요새는 많은 서버에서 Content-type을 applicaiton/json으로 보내는데, 이런 경우 가장 기본중의 기본인 form tag를 이용하여 CSRF를 확인하기는 어렵습니다. 이런 경우 XMLHttpRequest()를 이용하여 CSRF를 확인하면 쉽게 확인할 수 있습니다. var xhr = new XMLHttpRequest(); var url = "/admin/pwd_chg.do"; xhr.open("POST", url, true); xhr.setRequestHeader(.. 2022. 5. 6.
DOM Clobbering XSS 개요 DOM(Document Object Model)은 웹 페이지에 대한 인터페이스로 콘텐츠, 구조, 스타일을 읽고 조작할 수 있는 API를 제공합니다. 이러한 DOM은 W3C의 표준 객체 모델이며, 계층 구조로 구성됩니다. DOM은 원본 HTML과 구조가 비슷하지만 몇 가지 차이점이 있습니다. 1. 항상 유효한 HTML 형식입니다. DOM은 유효한 HTML 문서의 인터페이스로써, DOM을 생성하는 동안 브라우저는 유효하지 않은 HTML 코드를 올바르게 교정합니다. 아래의 코드는 필수 태그인 Hello World hacksms.tistory.com 참고 링크 DOM은 정확히 무엇일까? | WIT블로그 최근 잘못 이해하고 있었던 DOM에 대해 정확한 개념을 정리해 보고자 What, exactly, is t.. 2021. 9. 4.
strtoupper를 이용한 XSS 공격 개요 rubiya님의 해당 게시글에 자세한 개념이 잘 정리되어 있습니다. 여기서는 실제 진단에 어떻게 활용할 수 있을지에 대한 부분만 중점적으로 다루겠습니다. strtoupper() – blog.rubiya.kr 해당 문서는 위의 트윗을 보고 추가적인 연구를 진행해 Theori 내부 세미나에서 발표한 결과물이다.(사장님 허락받고 올린다) (%C4%B1) 는 LATIN SMALL LETTER DOTLESS I를, (%E2%84%AA) KELVIN SIGN을, (%C5%BF) 는 LATI blog.rubiya.kr 실제 취약점 진단에 활용하는 방법 strtolower()와 같이 소문자로 치환해주는 함수의 경우 로 입력해주는 것만으로도 XSS 취약점이 발생하였습니다. 그런데 strtoupper()와 같은 함수.. 2021. 1. 6.