본문 바로가기

모의해킹

(163)
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/ : 해시된 패스워드 이를 이용해 브루트포스 공격을 통해 주어진 해시된 패스워드값이 나오는 평문 ..
[wargame.kr] dun worry about the vase 오라클 패딩 복호화 시스템에 암호문을 넣었을 때에 그에 대한 패딩의 올바름 유무를 보여주는 오라클 처음 웹 페이지에 들어가면 ID와 PW 입력 값에 자동으로 guest가 들어가 있어 로그인을 해주면 admin 세션이 아니라는 문구가 출력이 된다. 쿠키 에디터 툴을 사용해 세션을 보면 L0g1n와 value 값이 저장되어 있다,,! 이 문제는 위에서 말한 오라클 패딩 공격을 해야하는 문제이다. 해당 세션 값을 URL 디코딩을 해주면 암호화 값이 나온다,,! =이 보이는 걸 봐서 base64 암호화로 두 개의 세션을 합친 거 같다..! import base64 a = "9bJ/hFBcpjE=" b = "O1L1mtBDKO8=" a_decoded = base64.b64decode(a) b_decoded = b..
crawling 페이지를 보면 URL 주소를 입력을 했을 때, 그 주소에 대한 메인페이지를 크롤링해서 출력해 준다. @app.route('/admin') def admin_page(): if request.remote_addr != '127.0.0.1': return "This is local page!" return app.flag 소스 코드를 보면 /admin 경로로 이동을 할 때 127.0.0.1이 주소여야 하는 조건이 맞아야지 flag가 출력이 된다. refere에 127.0.0.1로 수정을 하고 보내면 되겠다고 생각을 했다. ip = lookup(urlparse(url).netloc) if ip == False or ip =='0.0.0.0': return "Not a valid URL." res=request..