분류 전체보기

Web Hacking Advanced

[dreamhack] CSS Injection

개념정리○ CSS Injection공격자가 웹 페이지의 스타일시트에 악의적인 CSS 코드를 삽입하여 웹 페이지의 모양이나 동작을 변조하는 공격이다. XSS는 script를 삽입해서 공격하는 방식이다. 이와 비슷한 방식으로 style sheet의 CSS를 삽입해서 공격하는 방식이 CSS Injection이다. 예를 들어서 생각해보자. 웹 페이지 사용자가 웹 사이트의 background 색깔을 지정할 수 있는 서비스가 있다고 하자. 해당 서비스의 style 태그는 위와 같이 구성될 것이다. color라는 사용자의 입력값을 받고 동적으로 CSS 코드를 생성한다. 만약, 이 과정에서 color에 대한 검증이 없다면 어떤 일이 발생할까? black; } input[type=text] { width: ; heigh..

Web Hacking Advanced

[dreamhack] CSRF Advanced

문제풀이@app.route("/")def index(): session_id = request.cookies.get('sessionid', None) try: username = session_storage[session_id] except KeyError: return render_template('index.html', text='please login') return render_template('index.html', text=f'Hello {username}, {"flag is " + FLAG if username == "admin" else "you are not an admin"}')admin으로 로그인하면 flag가 출력된다. @app.rout..

Web Hacking Advanced

[dreamhack] CSP Bypass Advanced

문제풀이@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..

Web Hacking Advanced

[dreamhack] CSP Bypass

문제풀이@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}'" nonce = os.urandom(16).hex() return responseCSP를 확인해보면, script-src ‘self’ 'nonce-{nonce}'다. 즉, 동일한 도메인이거나 nonce가 일치하는 경우만 script를 로드할 수 있다. nonce는..

Web Hacking Advanced

[dreamhack] XSS Filtering Bypass Advanced

문제풀이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대부분의 핵심 키워드가 필터링되는 상황이다. 이런 상황에서는 브라우저 정규화를 이용해서 우회할 수..

Web Hacking Advanced

[dreamhack] Client Side Template Injection

문제풀이기존 XSS 문제 구성과 동일하다. bot을 대상으로 XSS payload를 전송해서 쿠키를 탈취하는 시나리오다. 차이점이라면 CSP가 걸려있고 bypass가 필요하다. @app.after_requestddef 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 'nonce-{nonce}' 'unsafe-eval' https://ajax.googleapis.com; object-src 'none'" nonce = os...

keyme
'분류 전체보기' 카테고리의 글 목록 (8 Page)