'hostname bypass'에 해당되는 글 1건

반응형

바로 전 포스팅에서 parse_url의 버그를 이용하여 파라미터 내 값 체크를 우회하는 것을 정리하였다.

https://rootable.tistory.com/entry/websecfr-level-25-writeup-with-parseurl-bug


그런데 오늘 CTF 문제를 풀다 parse_url 관련 문제가 나왔는데 이번엔 파라미터 내 값이 아닌 host를 우회하는 문제가 제출되어 이에 대해 정리도 할겸 포스팅한다.



해당 문제이다. 간단하게 봤을 때 parse_url 을 잘 이용해서 https://localhost/key 를 확인하면 flag를 얻을 수 있을 것 같다.




문제에 접근하여 텍스트 부분에 scheme을 포함하여 작성한 뒤 제출을 누르면 해당 사이트에 접근되는 Link를 만들어준다.


하지만 문제에서 원하는 https://localhost/key에 대한 링크를 만드려고 하면 내부 URL들은 allow되지 않는다고 한다.


이 때 이전 포스팅에서 발견한 parse_url과 관련된 bug들은 query와 관련된 버그이기 때문에 이번 문제를 해결할 때는 도움되지 않는다.

그래서 이와 관련하여 구글링을 한 결과 아래와 같은 버그를 발견하였다.


https://bugs.php.net/bug.php?id=73192


해당 버그는 url이 아래와 같을 때 parse_url이 잘못된 host를 리턴한다고 한다.


- http://example.com:80#@google.com/

- http://example.com:80?@google.com/


위와 같이 작성할 경우 host가 example.com이 아닌 google.com으로 착각하는 버그이다.


이를 이용하여 문제를 해결해보았다.


위의 사진과 같이 버그에서 말한 두가지를 해보았을 때 ?@는 되지 않았지만 #@을 했을 때 parse_url이 host를 잘못 인식하여 내부의 key값을 가져온 것을 볼 수 있다.


해당 버그는 Real World에서 사용될 수도 있다고 판단된다.


아래와 같을 때 잘 활용해보자

- bypass authentication protocol (verify hostname of callback url by parse_url)

- open redirector (verify hostname by parse_url)

- server-side request forgery (verify hostname by parse_url and get_content)



반응형

'Hacking Contest' 카테고리의 다른 글

[ByteBandits CTF 2019] Online Previewer 1  (0) 2019.04.13
[ByteBandits CTF 2019] EasyPHP  (0) 2019.04.13
[2019 Encrypt CTF] vault  (0) 2019.04.03
[2019 Encrypt CTF] Sweeeeeet  (0) 2019.04.03
[2019 Encrypt CTF] repeaaaaaat  (0) 2019.04.03
블로그 이미지

rootable

,