CSP, CSP-bypass

devguri·2022년 9월 29일
0
post-thumbnail
post-custom-banner

CSP (Content Security Policy)

CSP란 ?

  • XSS 공격을 감지하고 막기 위한 클라이언트 수단이다.
  • 사이트에서 허용할 이미지, 스크립트 소스 제어 가능하다.
    • ex) 신뢰할 수 없는 외부의 리소스가 자시의 사이트에서 실행하지 않도록 제어 가능

CSP 사용하기

  • HTTP 헤더를 반환하도록 웹 서버 구성하기
  • HTTP 헤더, meta 태그를 통해 정책을 구성가능

HTTP 헤더 문법

Content-Security-Policy: <policy-directive>; <policy-directive>
<policy-directive><directive> <value> 로 구성된다.

  • 엄격한 설정 : 스크립트, 이미지등의 리소스가 자신의 사이트일 경우만 실행됨
    Content-Security-Policy: default-src 'self'
  • 특정 태그만 허용
    Content-Security-Policy: default-src 'self' *.mailsite.com; img-src *

CSP 적용 방법

  • 메타 태그
    <meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'self'; style-src 'self'; ">

CSP-bypass

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

<script src="/download_pdf_file.php?id=990088"></script>

  • nonce 예측 가능
    nonce를 사용할 때 nonce 값을 담고 있는 HTTP 헤더 또는 매타 태그가 캐시되지 않는지 주의
  • base-url 미지정
    href 속성을 사용하지 않는 경우, 이를 방어하기 위해 다음 정책을 설정 Content-Security-Policy: base-uri 'none';

CSP bypass 관련 문제
CONFidence 2020 CTF Finals에서 Yet Another Yet Another Cat Challenge 문제명으로 CSP를 우회하는 문제가 출제된 적이 있다.

Content-Security-Policy: default-src 'none'; form-action 'self'; frame-ancestors 'none'; style-src https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css; img-src 'self'; script-src 'nonce-cyotMpPGPBs7xFYiedGn3Q' https://www.google.com/recaptcha/ https://www.gstatic.com/recaptcha/; frame-src https://www.google.com/recaptcha/
  • 문제는 위와 같이 Content-Security-Policy에 제약 걸어두고 허용 설정 제한
  • form-action, img-src만 self로 현재 사이트의 도메인 범위 내에서만 허용하도록 설정
profile
Always live diligently
post-custom-banner

0개의 댓글