Network/DVWA
Exercise 11. CSP Bypass
dcho
2019. 8. 9. 01:14
SMALL
Content-Security-Policy
- 브라우저에 XSS와 관련된 공격을 막아주는 헤더이다.
- 기본적으로 브라우저는 요청하는 모든 코드를 실행하는데 CSP를 설정함으로써 제한적으로 실행시킬수 있다.
- 다음 4개의 키워드를 선택 적용할 수 있다.
- 'none' 어떤 것도 허용 X
- 'self' 현재 출처에서는 허용 O , 하위 도메인에서는 허용 X
- 'unsafe-inline' 인라인 자바스크립트 <script> ... </script>, 인라인 스타일 <style> ... </style> 허용
- 'unsafe-eval' eval과 같은 텍스트 - 자바 스크립트 메커니즘을 허용
장단점이 있다. 보안에 강력하게 대응할 수 있지만 설정을 잘못하면 css, script 가 처리안되어 골치 아파진다..!
- 모질라 개발자 사이트에 예시를 보면 다음과 같다.
Content-Security-Policy: default-src 'self'
하위 도메인의 리소스만 사용할 수 있게 한다.
Content-Security-Policy: default-src 'self' *.mydomain.com
특정 도메인만 신뢰한다.
Content-Security-Policy: default-src 'self' *.mailsite.com; img-src *
특정 태그 계열만 허용한다.
Content-Security-Policy: default-src https://onlinebanking.jumbobank.com
특정 도메인만 무조건 SSL 통신하도록 한다.
- CSP 헤더 내용으로 해당 웹사이트에서 사용 가능한 CSP 정책에 대해 브라우저에게 전달해주고, 브라우저는 이를 기반으로 웹 페이지 랜더링/처리를 수행하게 된다.
- 헤더에서 사용되는 속성과 값에 대해 좀 더 정리하면 다음과 같다.
- default-src : 모든 리소스에 대한 정책(아래 것들 다 포함)
- script-src : Javascript 등 웹에서 실행 가능한 스크립트에 대한 정책
- object-src : 플러그인, 오브젝트에 대한 정책
- style-src : style, 즉 css에 대한 정책
- img-src : 이미지
- media-src : video, audio
- frame-src : iframe, X-Frame 헤더랑은 비슷한 역할을 하지만, 약간 다르죠.
- font-src : font
- connect-src : script src로 불러올 수 있는 url에 대한 정책
- form-action : form 태그 내 action 부분에 대한 정책
- sandbox : HTML 샌드박스
- script-nonce : 위에 script-src + 아래쪽에 none 이 포함되는 정책, 약간 강한..
- plugin-types : 로드할 수 있는 플러그인 타입, 위에 object-src와 접점
- reflected-xss : X-XSS-Protection header와 동일한 효과
- * report-uri : 정책 위반 케이스가 나타났을 때 내용을 전달할 URL
(출처 : HAHWUL님 블로그)
DVWA 실습
(Low)
자 그럼 새로운 지식을 가지고 실습을 해보기로 했다.
URL을 인클루드를 하라는 문제이다. 소스코드를 봐보자.
이렇게 나와있다. CSP부분을 해석해 보자면 대충 이렇다.
https://pastebin.com example.com code.jquery.com https://ssl.google-analytics.com 이러한 URL에 대해 script 를 허용한다.
첫번째 https://pastebin.com 에 접속해보았다. 먼가 느낌이 오지 않는가?
음 그래도 처음 다뤄보니 좀 삽질좀 하다가 보니 이러한 결론을 내리게 되었다. 그리고 해당 소스코드를 순수하게 불러오기 위해 raw
그리고 해당 URL을 include를 시켜줘 보았다.
결과는 성공!