SSRF에 대한 글로 계속 업데이트 될 페이지인 듯하다.
이번에 시도한 페이지는 드림핵 웹 Crawling이라는 문제이다.
제목과 마찬가지로 Crawling 하는 페이지가 있으며, 코드를 보면 이 페이지의 /admin에 접근하면 flag를 얻을 수 있는 구조이다.
블랙리스트로 차단하는 사이트에서 localhost:3333/admin(127.0.0.1:3333/admin)에 접근하는 방법 3가지를 알아보자.
1. ShortURL 사용
구글링만해봐도 shortURL을 제공하는 사이트가 다수이다. 이중 하나를 정해서 다른 url로 변환해주는 서비스를 이용한다.
2. id:pw@url 형태 사용
초창기에 웹의 경우 id와 pw를 붙여서 사이트에 접근하던 것을 이용한 것이다. 요즘엔 이 기능을 사용하지 않아서 그냥 @ 앞부분이 무시된다고 생각하면 된다.
즉, 아래 형태를 사용하여 우회한다.
http://google.com:80+&@localhost:3333/admin
http://google.com:80@127.0.0.1:3333/admin
3. PHP Header를 이용해 redirect하고 서버에 요청
일단 PHP로 만들어진 서버를 만들어서, 헤더부분에 ip 값이 들어갈 경우 127.0.0.1:3333/admin을 요청하도록 명시한다.
<?php $ip=$_GET['ip']; header('Location: http://'.$ip); ?>
이후 문제 서버에 다음과 같은 url을 제출한다. http://host3.dreamhack.games:12444/validation?url=http://myphp_server/ip.php?ip=127.0.0.1:3333/admin