본문 바로가기

모의해킹/Dreamhack

(65)
node-serialize • 취약점 설명 serialize(직렬화)는 Object 또는 Data의 상태 또는 타입을 특정한 형태의 포맷을 가진 데이터로 변환하는 것을 의미한다. 공격자는 역직렬화 과정에서 상태 또는 타입을 이용하여 악의적인 행위를 발생시키거나 특정한 상황에서 호출되는 메소들을 이용하여 공격에 사용한다. • 조건 [CVE-2017-5941] Node.js에 node-serialize:0.0.4버전 라이브러리를 사용할 경우 RCE(Remote Code Excution) 공격이 가능하다. • 코드 분석 node-serialize 버전을 확인해보면 0.0.4 라이브러리를 사용하고있다. 즉, RCE 공격이 가능하다는것이다. const serialize = require('node-serialize'); const app ..
Dream Gallery @app.route('/request') def url_request(): url = request.args.get('url', '').lower() title = request.args.get('title', '') if url == '' or url.startswith("file://") or "flag" in url or title == '': return render_template('request.html') try: data = urlopen(url).read() mini_database.append({title: base64.b64encode(data).decode('utf-8')}) return redirect(url_for('view')) except: return render_templ..
Relative Path Overwrite Advanced https://chulmin.tistory.com/339에서 풀었던 문제의 Advanced 이기에 바로 코드 분석으로 넘어가자! • 코드 분석 filter.js 파일이 static폴더 안에 있어 경로조작이 어려울 거 같다.! 404.php의 역할은 filter.js를 잘못된 경로로 요청을 했을 때 아래처럼 not found를 반환한다 여기서 static부분에 스크립트문을 삽입하면서 로드하는 filter.js의 코드가 실행이 된다는 것이다.!! • 문제 풀이 http://host3.dreamhack.games:8593/index.php/;alert(1);//?page=vuln&param=dreamhack 입력을 하면 alert(1) 코드를 삽입하고 나머지 부분을 주석처리를 한다 그렇게 되면 script코드..
Relative Path Overwrite Relative Path Overwrite (RPO): 서버와 브라우저가 상대 경로를 해석하는 과정에서 발생하는 차이점을 이용한 공격 Relative Path Overwrite를 실습하기 위한 문제이다. • 취약점 설명 Relative Path Overwrite(RPO)는 상대 경로 기반의 URL을 덮어써서 의도하지 않은 동작을 수행하는 공격 방법이다. script, link등 resource를 읽어오는 과정에서 Host가 포함되지 않은 URL을 의미하며, 이를 overwrite할 수 있는 경우에 resource의 주소 등을 조작하여 공격자가 원하는 동작으로 유도할 수 있다. ex) XSS... • 조건 스크립트명 이하의 경로를 별도로 지정해도 같은 페이지가 조회되는 경우 서버는 하위 요소를 경로가 아닌..
phpMyRedis redis 취약점을 활용하기 위해서는 redis 취약점이 뭔지 알아야한다. Remote Dictionart Server(redis) "키-값" 구조의 비정형 데이터를 저장하고 관리하기 위한 오픈소스 기반의 비관계형 데이터베이스(NoSQL) 관리 시스템이다. 휘발성이 높은 메모리이기에 SAVE라는 config로 몇초에 몇번 파일이 변경되었을 때 저장을 하는 config가 있다. 1. redis에는 eval 명령어를 이용해 Lua script가 실행이 가능하다. eval "return {KEYS[1],KEYS[2],ARGV[1],ARGV[2]}" 2. redis는 일정 시간마다 메모리 데이터를 파일 시스템에 저장한다.(주기적으로 저장함) https://docs.w3cub.com/redis/eval Eval ..
Client Side Template Injection CSTI(Client Side Template Injection) 클라이언트에서 사용되는 템플릿에 임의 구문을 주입하는 의미를 가진다. -> 템플릿 표현식 + 자바스크립트 구문을 조합해서 XSS 공격을 시도할 수 있는 취약점이다. SSTI 와의 차이점은 악용을 통해 이루어지는 효과가 다르다(서버 측 주입이면 원격코드를 실행시키는 것이 목적이다) 바로 소스코드를 보자! @app.after_request def add_header(response): global nonce response.headers['Content-Security-Policy'] = f"default-src 'self'; img-src https://dreamhack.io; style-src 'self' 'unsafe-inline'; s..
CSP Bypass CSP 취약점을 이용하여 푸는 문제이다...! 이 문제를 풀기 위해 CSP 취약점에 대해 알아야 한다.! ∙ CSP (Content-Security Policy) 신뢰할 수 있는 웹 페이지 CSP에서 악의적으로 XSS, 클릭 재킹 및 기타 코드 삽입 공격을 방지하기 위한 정책이다. 지시문 default-src : 모든 리소스에 대한 정책 script-src : Javascript 등 웹에서 실행 가능한 스크립트에 대한 정책 style-src : css에 대한 정책 connect-src : script src로 불러올 수 있는 url에 대한 정책 img-src : 이미지 ( data: URL에서 이미지가 로드되는 것을 허용하려면 data:를 지정 ) script-nonce : script-src에 nonc..
[wargame.kr] crack crack crack it .htaccess 을 크랙하라는데,,, bruteforce을 이용한다?! (해당 문제는 참고를 하여 문제를 풀었습니다..!) G4HeulB 문자열로 시작하는 글자를 찾는거 같다,,,! .htpasswd 을 다운 받으면 아래 문구가 적혀있다.. blueh4g:$1$VH6/fWZp$mWttF/M8/X8s8RgZ.pWrS/ .htpasswd 파일 포맷을 정리해보자 blueh4g : 계정 이름 $1 : 해시 알고리즘 종류 ($1 //MD5 알고리즘 (128bit), $5 //SHA-256(256bit), $6 //SHA-512(512bit) ) $VH6/fWZp : 솔트 값 $mWttF/M8/X8s8RgZ.pWrS/ : 해시된 패스워드 이를 이용해 브루트포스 공격을 통해 주어진 해시된 패스워드값이 나오는 평문 ..