hackerone-logitech-2020-09-l-978680

GET based Open redirect on [streamlabs.com/content-hub/streamlabs-obs/search?query=]

보고서

검색을 하면 쿼리가 GET 파라미터에 들어갔다. 이 쿼리는 또한 <meta> 태그에 반사되었다. <meta property="og:title" content="입력값"> 과 같은 형태였다. 이는 open graph 프로토콜의 타이틀을 동적으로 생성하는 기능이다.

반사되는 것을 이용하여 XSS 까지는 불가했던 것 같다. 하지만 ” 문자를 이용해 content 속성을 벗어나 Open Redirect 하는 것은 가능했다.

meta 태그의 http-equiv 속성은 content-language, content-type, default-style, 브라우저 호환성 설정(X-UA-Compatible), 페이지 리로드(refresh) 등을 나타낸다. 여기서는 Open redirect를 시키기 위해 refresh를 이용했다. refresh는 <meta http-equiv="refresh" content="20 ; http://google.com"> 또는 <meta http-equiv="refresh" content="20 ; url=http://google.com">와 같이 사용한다. 이는 20초 후 Google로 이동하라는 의미이다. 세미콜론으로 대기할 초와 이동할 URL을 구분한다.

Cloudflare의 보호가 http-equiv 속성을 추가하지 못하도록 방어했지만, %00 문자를 이용하여 우회할 수 있었다. 최종적으로 https://streamlabs.com/content-hub/streamlabs-obs/search?query=0;url=https://google.com"%20http-%00equiv="refresh" URL을 이용해 <meta property="og:title" content="0; https://google.com" http-equiv="refresh"> 와 같은 응답을 만들어낼 수 있었다.


tags: bughunting, open-redirect, wstg-clnt-04, web hacking, severity low