security/웹해킹 32

[Dreamhack Wargame] NoSQL-CouchDB

CouchDB - HTTP 기반의 서버로 동작, HTTP 메소드를 사용해 요청을 받고 처리함 - users 데이터베이스에 (guest) 값 추가: body에 추가하고자 하는 data 넣어서 POST/PUT 요청 보냄 $ curl -X PUT http://{username}:{password}@localhost:5984/users/guest -d '{"upw":"guest"}' {"ok":true,"id":"guest","rev":"1-22a458e50cf189b17d50eeb295231896"} - users 데이터베이스의 값 조회: GET 요청 보냄 $ curl http://{username}:{password}@localhost:5984/users/guest {"_id":"guest","_rev":"..

security/웹해킹 2023.07.15

[Dreamhack Wargame] SQL Injection Bypass WAF 1, 2

시스템/DB 정보 획득 방법 (MySQL) - 데이터베이스 모습 확인 // 초기 DB = information_schema, mysql, performance_schema, sys // DB와 schema가 동일함 mysql> show databases; /* +--------------------+ | Database | +--------------------+ | information_schema | | DREAMHACK | # 이용자 정의 데이터베이스 | mysql | | performance_schema | | sys | +--------------------+ */ - 스키마, 테이블, 컬럼 정보 확인하기 mysql> select TABLE_SCHEMA from information_schema..

security/웹해킹 2023.07.15

[Dreamhack Wargame] Error Based SQL Injection

Error Based SQL Injection Technique - extractvalue() 함수 이용 // 디버그 모드가 활성화된 서버에 한해 오류 발생 시 원인 출력됨 // extractvalue 함수는 XML 데이터(1st param)에서 XPATH 식(2st param)을 통해 데이터 추출함 // 올바르지 않는 XPATH 식일 경우 에러 메시지와 함께 잘못된 XPATH 식을 출력해줌 SELECT extractvalue(1,concat(':',version())); -- ERROR 1105 (HY000): XPATH syntax error: ':5.7.29-0ubuntu0.16.04.1-log' SELECT extractvalue(1,concat(':',(SELECT upw FROM users W..

security/웹해킹 2023.07.14

[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