전체 글 314

[Dreamhack Wargame] Blind SQL Injection Advanced

SQL Injection Techniques - UNION: 앞과 뒤의 컬럼의 개수가 동일해야 함 (일부 DBMS에서는 컬럼 타입까지 check) SELECT * FROM users UNION SELECT upw, 1 from users where uid='admin';-- - 서브쿼리: 한 쿼리 내에 또 다른 쿼리를 사용 (다른 테이블에 접근하거나 SELECT 구문 추가로 사용 가능) SELECT * FROM users WHERE username IN (SELECT "admin" UNION SELECT "guest"); - if문: 비교 구문을 이용해 data leak 가 SELECT uid FROM users WHERE uid='DUMMY' UNION SELECT if(substr(upw,1,1)='..

security/웹해킹 2023.07.14

[Dreamhack Wargame] DOM XSS

Document Object Model (DOM) - 웹 페이지에 대한 프로그래밍 인터페이스 - 웹 개발자가 작성한 웹 문서는 브라우저에서 파싱되어 DOM으로 표현됨 - 자바스크립트가 웹 문서에 접근할 때에는 DOM을 통해 접근하게 되며, DOM에서 제공하는 API 사용 - DOM 내에서 웹 개발자가 작성한 HTML 문서는 트리 형태가 되어 노드로 표현됨 var elem = document.getElementById("name"); elem.innerText = "My name is minseo"; DOM Clobbering XSS - id, name 등 HTML에서 이용되는 속성을 이용해 자바스크립트에서 접근 가능한 DOM 객체들의 속성 및 메소드 등을 변조하는 공격 기법 - HTML injection..

security/웹해킹 2023.07.09

[Dreamhack Wargame] CS-Search

Cross-Site Search (CS-Search) - 다른 오리진에 요청을 보내고 응답값을 읽어오는 것은 Same Origin Policy 정책에 위반되기 때문에 일반적으로 불가능 - 브라우저에서 예외적으로 외부 출처에 대한 접근을 허용해주는 경우 (SOP 영향 x) = ' if not read_url(url): return '' return '' - 전달해준 url scheme은 http 혹은 https:// 여야 한다 - 개인 서버에 exploit 파일 업로드해놓고 거기 접속하도록 하여 스크립트 내용 실행 취약점 분석 사용할 태그 결정 - iframe 태그를 이용해 SOP를 위반하지 않고 다른 오리진에 요청을 보내보자 - iframe/frame 태그의 경우 contentWindow property..

security/웹해킹 2023.07.09

[Dreamhack Wargame] Relative Path Overwrite Advanced

문제 분석 - /index.php, /report.php * 지난 문제와 동일 - /static/filter.js : var filter = ["script", "on", "frame", "object"]; - /vuln.php 취약점: 상대경로로 스크립트 파일 불러옴(RPO 위험) , innerHTML을 이용해 user-input 받아옴 (XSS 위험) if (typeof filter === 'undefined') 통과하고 filter 안의 단어들 필터링도 통과해야 user input을 넣을 수 있음 => 이런 이벤트핸들러 기반 XSS 발생시키자 - 000-default.conf RewriteEngine on RewriteRule ^/(.*)\.(js|css)$ /static/$1 [L] ErrorDo..

security/웹해킹 2023.07.07

[Dreamhack Wargame] Relative Path Overwrite + RPO 기법 정리

RPO (Relative Path Overwrite) 기법 - 서버와 브라우저가 상대 경로를 해석하는 과정에서 발생하는 차이점을 이용한 공격 - 브라우저는 서버의 파일시스템에 접근할 수 없기 때문에 주어진 경로가 정상적인 경로인지를 구분할 수 없음 RPO 발생 가능 조건 - URL Rewrite 적용되어있는 사이트 = 웹 어플리케이션 스크립트명 이하의 경로를 별도로 지정해도 같은 페이지가 조회되는 경우 ex) /index.php 하위에 새로운 경로 추가해 요청 보냈을 때 => 서버는 /index.php 페이지를 리턴 (하위 요소를 경로가 아니라 파라미터로 인식) => 브라우저 입장에서는 URL 경로 중 어디부터가 파라미터인지 구분 불가, 전체를 경로로 인식 /index.php /index.php/ /in..

security/웹해킹 2023.07.07

[Dreamhack Wargame] CSS Injection

CSS Injection 배경지식 개념 웹 페이지 로딩 시 악의적인 문자열을 삽입하여 악의적인 동작을 이끄는 공격 임의 CSS 속성을 삽입해 웹페이지의 UI 를 변조하거나 웹 페이지내의 데이터를 외부로 훔칠 수 있다 CSRF Token, 피해자의 API Key등 웹 페이지에 직접적으로 보여지는 값처럼 CSS 선택자를 통해 표현이 가능한 값이어야 한다 HTML (style) 영역에 공격자가 임의 입력 값을 넣을 수 있거나 임의 HTML을 삽입할 수 있는 상황에서 사용한다 예제 => $theme에 yellow; h1 { color: red 삽입 시 UI 변조 가능 IP ping back 방법 - 외부 요청을 전송함으로써 웹페이지의 데이터를 탈취할 수 있다 CSS 가젯 설명 @import 'https://le..

security/웹해킹 2023.07.05

[Dreamhack Wargame] Client Side Template Injection

Template Injection 공격 배경지식 1. Vue Template Injection 확인: {{ 2*2 }} 생성자를 이용한 스크립트 실행: {{ _Vue.h.constructor("alert(1)")() }} 2. AngularJS Template Injection 확인: {{ 7*7 }} 생성자를 이용한 스크립트 실행: {{ constructor.constructor("alert(1)")() }} // xss 코드 전달 시 문자열 형태로 constructor에게 건네주어야 함 문제 분석 @app.after_request def add_header(response): global nonce # CSP 적용 response.headers['Content-Security-Policy'] = f"..

security/웹해킹 2023.07.05

[Dreamhack Wargame] CSP Bypass Advanced

소스코드 분석 # 이 부분 패치됐네, html을 렌더링한다 # 따라서 에 src로 넣질 못한다! SyntaxError 발생 (html 파일의 첫 줄 부터 해석하지 못함) @app.route("/vuln") def vuln(): param = request.args.get("param", "") return render_template("vuln.html", param=param, nonce=nonce) - vuln.html을 렌더링해서 리턴한다 - 직전 'CSP Bypass'에서처럼 script 태그의 source로 /vuln 페이지를 건네주면 에러 발생 // /vuln은 렌더링 완료된 vuln.html을 리턴하는데, 첫 줄부터 JS로 해석하지 못해 에러 발생 @app.after_request def a..

security/웹해킹 2023.07.03

[Dreamhack Wargame] CSP Bypass + CSP에 대해

Content Security Policy (CSP, 컨텐츠 보안 정책) -XSS / 데이터 삽입 공격이 발생하였을 때 피해를 줄이고 웹 관리자가 공격 시도를 보고 받을 수 있도록 새롭게 추가된 보안 계층 - 웹 페이지에 사용될 수 있는 자원의 위치, 출처 등에 제약을 검 - CSP 구문은 일반적으로 Content-Security-Policy HTTP 헤더에 추가하여 적용할 수 있음 Content-Security-Policy: default-src 'self' https://example.dreamhack.io 특징 - 인라인 코드 (Inline Code)를 유해하다고 간주 * * 실제 스크립트 부분 (lcoation.href='/memo?memo='+document.cookie) 는 파라미터로 전달되면..

security/웹해킹 2023.07.03

[Dreamhack Wargame] XSS Filtering Bypass Advanced + HTML 엔티티

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 - 주요 단어들을 필터링 중이다. 치환 및 삭제가 아니여서 더 까다롭다 'on', 'script', 'document', 'location', 'window' 등이 막혀있으므로 - 이벤트핸들러 ..

security/웹해킹 2023.07.02