swuforce

[워게임 공부]CSP Bypass

범호야 2025. 10. 28. 21:09

CSP란

Content Security Policy (CSP, 컨테츠 보안 정책)은 웹 페이지에서 검색하고 실행할 수 있는 리소스를 정의하는 보안 계층이다. XSS나 데이터를 삽입하는 공격이 발생하였을 때 피해를 줄이고 웹 관리자가 공격 시도를 보고 받을 수 있다.

 

형식

Content-Security-Policy: <policy-directive>; <policy-directive>

<policy-directive>는 <directive> <value> 형태로 구성된다. <directive>는 지시문으로 칸테츠 내에서 로드하는 리소스를 세분화해 어떤 리소스에 대한 출처를 제어할지 결정한다. <value> 부분에는 <directive>에서 정의한 리소스의 출처를 정의한다.

<directive>의 종류
default-src : -src로 끝나는 모든 리소스의 기본 동작을 제어함. 만약 CSP 구문 내에서 지정하지 않은 지시문이 존재하면 default-src 정의를 따름
img-src : 이미지를 로드할 수 있는 출처 제어
script-src : 스크립트 태그 관련 권한과 출처를 제어

<value>의 종류
self : 페이지의 현재 출처내에서 로드하는 리소스만 허용
none : 모든 출처를 허용하지 않음
unsafe-inline : 예외적으로 인라인 코드의 사용을 허용

 

CSP Bypass

웹 사이트가 파일 업로드, 다운로드 기능을 제공하는 경우, 공격자가 다운로드 받을 때 특정한 스크립트를 띄우도록 할 수 있다. 

우회 방법

  1. 신뢰하는 도메인 업로드
    1. 특정 도메인에 대한 출처가 혀용된 CSP를 우회하는 가장 쉬운 방법
    2. 신뢰되는 출처에 파일 업로드 
  2. JSONP API 
  3. nonce 예측 가능 
  4. base uri 미지정 

2,3,4는 1과 비슷?하다.

Content-type은 중요하지 않기 때문에 어떤 형태로도 파일이 올라가면 되고 이는 스크립트를 담은 response가 필요하다는 의미

2,3,4는 요청  url과 return 값에 callback function을 남긴다. 이는 callback 데이터가 들어갈 function을 지정한다는 것이다.