TeamH4C

[빡공팟 5기] W5 : DVWA 실습 - Content Security Policy (CSP) Bypass

이유갬 2022. 10. 23. 16:01

[Content Security Policy(CSP)]

브라우저에서 XSS 로부터 보호하기 위해서 도입되었으며, 실행될 수 있는 콘텐츠를 지정하고 자바 스크립트를

인라인으로 실행하거나 신뢰하고 있는 도메인의 스크립트 파일을 로드할 수 있다.

 

[용어 설명]

1. none : 어떠한 것도 허용하지 않는다.

2. self : 현재 출처에서만 허용한다 -> 하위 도메인을 허용하지 않는다.

3. unsafe-inline nonce 값 : nonce 속성값이 헤더값과 일치하면 스크립트 또는 스타일 태그를 실행한다.

4. unsafe-eval : eval 같은 text-javascript 메커니즘을 허용한다.

 

[실습 내용]

CSP 를 우회하여 스크립트문을 실행시켜보자!


[초기 화면]

- 초기 화면은 위와 같다.

- 소스를 살펴보았다.

- 해당 사이트의 URL 만 허용하는 것이다.

- 특히, 주석에 있는 해당 URL 은 하위 도메인까지 허용한다.

https://pastebin.com/raw/R570EE00

- 해당 URL 을 넣어보았다.

- 넣어도 아무런 일이 일어나지 않는다..ㅠㅠㅠ 분명 저 링크는 허용한다는 링크인데 왜 안되는건지..

- 그래서 다른 허용하는 링크를 넣어보고 패킷을 잡아봤다.

- 분명 패킷을 잡아보니 인라인으로 해당 사이트가 삽입되었다.

- 하지만 아무일도 일어나지 않았다.

- pastebin.com 에서 작성한 스크립트문의 URL 도 삽입해서 응답 패킷을 확인했더니 분명 인라인으로 들어간 게 보였지만 스크립트문이 실행되지 않았다.

- Self 는 된다고 했으니 한번 Self 를 해봤다.

- 스크립트 파일을 작성했다.

- 그리고 해당 파일의 경로를 입력했다.

- 드디어 스크립트 문이 실행되었다.. 이걸 보려고 얼마나 많이 시도했던가..

- 이렇듯 외부 파일을 삽입하여 스크립트문을 실행되게 할 수 있다.