개념정리○ CSS Injection공격자가 웹 페이지의 스타일시트에 악의적인 CSS 코드를 삽입하여 웹 페이지의 모양이나 동작을 변조하는 공격이다. XSS는 script를 삽입해서 공격하는 방식이다. 이와 비슷한 방식으로 style sheet의 CSS를 삽입해서 공격하는 방식이 CSS Injection이다. 예를 들어서 생각해보자. 웹 페이지 사용자가 웹 사이트의 background 색깔을 지정할 수 있는 서비스가 있다고 하자. 해당 서비스의 style 태그는 위와 같이 구성될 것이다. color라는 사용자의 입력값을 받고 동적으로 CSS 코드를 생성한다. 만약, 이 과정에서 color에 대한 검증이 없다면 어떤 일이 발생할까? black; } input[type=text] { width: ; heigh..
문제풀이@app.after_requestdef add_header(response): global nonce response.headers['Content-Security-Policy'] = f"default-src 'self'; img-src https://dreamhack.io; style-src 'self' 'unsafe-inline'; script-src 'self' 'nonce-{nonce}'; object-src 'none'" nonce = os.urandom(16).hex() return responsebase-src이 설정되지않았다. base-src는 설정되지않으면 default로 base 태그를 사용할 수 있도록 허용한다. 태그는 HTML 문서 내에서 상대적인 UR..
문제풀이def xss_filter(text): _filter = ["script", "on", "javascript"] for f in _filter: if f in text.lower(): return "filtered!!!" advanced_filter = ["window", "self", "this", "document", "location", "(", ")", "&#"] for f in advanced_filter: if f in text.lower(): return "filtered!!!" return text대부분의 핵심 키워드가 필터링되는 상황이다. 이런 상황에서는 브라우저 정규화를 이용해서 우회할 수..