多个漏洞+ WAF绕过一个账户接管几乎所有阿里巴巴网站

https://medium.com/@y.shahinzadeh/chaining-multiple-vulnerabilities-waf-bypass-to-account-takeover-in-almost-all-alibabas-websites-f8643eaa2855

场景

文章是关于某些客户端漏洞导致几个阿里巴巴网站的帐户接管。

条件

必要条件,例如JSONP,某些浏览器处理cookie等的行为。

攻击原理

大多数阿里巴巴的网站加载并执行外部JavaScript对象,JavaScript代码从名为的cookie中获取值uid。攻击者可以uid代表受害者将价值改变为恶意有效载荷,从而导致帐户接管。

漏洞发现的简要步骤

1、找到一个URL(ynuf.alipay.com),返回在许多阿里巴巴网站上执行的JavaScript代码。

2、实现了提到的URL反映了JavaScript代码中的cookie值。

3、搜索* .alipay.com以查找XSS以控制cookie值。

4、在子域中找到了潜在的基于DOM的XSS。

5、操纵入口点以避开两次WAF。

6、使用一种不常见的技术来重写cookie的值。

7、在许多网站上执行JavaScript代码,例如login.alibaba.com

8、写了一个漏洞利用代码来接管alibaba.com上的任何帐户

9、几乎最新版本的谷歌浏览器和Firefox浏览器已对最终版本进行了测试。文章末尾已经附上示范POC。

细节

什么是JSONP?

JSONP是一种发送JSON数据的方法。

  • 可以加载外部JavaScript对象
  • 不使用XMLHttpRequest对象
  • 不太安全
  • 浏览器中的旁路SOP

JSONP请求/响应的示例

易受攻击的外部JavaScript对象

如图所示,阿里巴巴的许多网站从以下网址加载外部JavaScript对象:

https://ynuf.alipay.com/uid

JavaScrip代码:

um.__idcb("5cb143654b94f4a5")

这是一个简单的代码。仔细观察发现,5cb143654b94f4a5取自uid先前在ynuf.alipay.com域中设置的cookie 。如果用户没有cookie,则服务器会在响应中设置相应的值,否则取其值。工作流程如图:

JSONP Call阿里巴巴的两个域名

找到缺陷的顺序,第一个请求/响应:

GET /uid HTTP/1.1
Host: ynuf.alipay.com
User-Agent: curl/7.47.0
Accept: */*
HTTP/1.1 200 OK
Date: Wed, 17 Oct 2018 17:38:10 GMT
Content-Type: application/javascript
Transfer-Encoding: chunked
Connection: keep-alive
Vary: Accept-Encoding
Vary: Accept-Encoding
ETag: d181bf00669d40c0
Set-Cookie: uid=d181bf00669d40c0; expires=Thu, 30 Jan 2031 08:00:00 GMT
Cache-Control: max-age=315360000, private
Server: Tengine/Aserver
Strict-Transport-Security: max-age=0
Timing-Allow-Origin: *
um.__idcb("26fadf90bac907a7")

第二次请求/回复:

GET /uid HTTP/1.1
Host: ynuf.alipay.com
User-Agent: curl/7.47.0
Cookie: uid=d181bf00669d40c0
Accept: */*
HTTP/1.1 200 OK
Date: Sun, 11 Nov 2018 08:47:40 GMT
Content-Type: application/javascript
Transfer-Encoding: chunked
Connection: keep-alive
Vary: Accept-Encoding
Vary: Accept-Encoding
ETag: test
Cache-Control: max-age=315360000, private
Server: Tengine/Aserver
Strict-Transport-Security: max-age=0
Timing-Allow-Origin: *
um.__idcb("d181bf00669d40c0")

猜你喜欢

转载自www.cnblogs.com/17bdw/p/10709393.html