回归最本质的信息安全

看我如何黑掉PayPal:从任意文件上传到远程代码执行

2017年7月25日发布

14,996
0
2

导语:正常人的周末充满了饮料,派对,乐趣等等。或者看权力的游戏 ?

漏洞发现过程

在上一篇文章中,我描述了我是如何破解OSCP证书的,破解起来非常困难,大概花了我四个多月的时间,但是我如果我不去挖漏洞的话,意味着我就没有零用钱了。

正常人的周末充满了饮料,派对,乐趣等等。或者看权力的游戏 ?

像我这样的人,在周末的时候,会看一些博客或者YouTube视频。我打了Burp(关闭了拦截器)并访问了PayPal的漏洞奖励计划页面,于是我发现了如下图所示的内容:

上图显示的是我访问http://paypal.com/bugbounty/返回的响应信息,仔细分查看"Content-Security Policy"中包含有一串PayPal的域名。其中一个域名是https://*.paypalcorp.com,而这个域名吸引了我的注意。因为我在挖漏洞时喜欢找出目标站尽可能多的子域名,因为这些子域名站点中很可能会存在一些被管理人员所忽略的安全问题。

你可以使用Subbrute、Knockpy、enumall等来寻找子域名,这些是我通常使用的工具,但是这个周末我比较懒,我使用VirusTotal来获取子域名的列表。

https://www.virustotal.com/en/domain/paypalcorp.com/information/

将子域名复制到本地,并运行“dig -f paypal + noall + answer”来检查所有子域名实际上指向的方式:

其中有一个子域名为"brandpermission.paypalcorp.com" ,它指向的是站点 https://www.paypal-brandcentral.com/。该网站实际上是PayPal供应商,提供给厂商、供应商以及合作伙伴的一个ticket在线支持系统,他们可以在这个网站上申请与PalPal合作,然后上传自己品牌的Logo、图片或其他一些相关资料

任何一个漏洞猎人看到网站的文件上传功能之后反应都是下图的样子。

我首先通过上传一个名为“finished.jpg”的简单图像文件,上传之后命名为“finished__thumb.jpg”,存储在content/helpdesk/368/867/finishedthumb.jpg目录。

“finishedthumb.jpg”在在"/867/"目录中新创建的文件。我快速查看实际文件(原始文件)上传文件是否存在此目录。幸运的是,“finished.jpg”也在这个目录中。

我进一步研究了Web应用程序的对文件上传处理的工作流程,以及上传文件的文件及文件夹的命名规则进行了深入分析,并了解上述链接中的“368”目录实际上是我们创建的机票号码“ 867“是文件夹的id。

了解了工作远离后,我又用同样的方法创建了另一份ticket,我发现系统用按顺序递增的方式创建了ticket ID和文件ID。但此次上传是一个“.php”扩展文件,其中有一个简单执行命令的功能。

这次返回的响应码为302(200=成功),根据Web应用的响应来看,这意味着服务器端没有对上传的文件类型和文件内容进行验证。

接下来我们如何做?

由于我的ticket ID为"/366/",现在我们知道我们的文件已上传的目录是什么,但实际上我们不知道存储文件的文件夹id是什么?(因为我们无法看到php文件的位置,就像我们能够通过源代码视图看到一个图像文件)。

但是,我们知道文件名是“success.php”(因为我们之前验证过,“example.jpg”被存储在存储“example_thumb.jpg”的同一个目录中),我们也知道最近的文件夹ID文件是通过上传一个简单的图像存储。因此,由于我知道的最近的文件ID是“867”,我们的POC php命令执行代码的ticket号是“/366/”

那么为什么我们不爆破文件夹ID呢?

所以我很快对https://www.paypal-brandcentral.com/content/_helpdesk/366/$(爆破500-1000)$/success.php进行暴力破解攻击(文件ID从500-1000):

最终文件夹ID为"865"的请求返回了200响应码。

5.png

我当时感觉如下图。

酷!让我们尝试执行代码,用ticket ID和刚才获取到的文件ID。

https://www.paypal-brandcentral.com/content/_helpdesk/366/865/success.php?cmd=uname-a;whoami

我自己觉得我实际上找到了一个RCE;)

服务器实际上也有一个PayPal员工的登录页面。

负责任披露时间

2017年7月8日18:03:提交漏洞

2017年7月11日18:03:修复成功

本文翻译自:http://blog.pentestbegins.com/2017/07/21/hacking-into-paypal-server-remote-code-execution-2017/,如若转载,请注明来源于嘶吼: http://www.4hou.com/technology/6803.html

点赞 2
取消

感谢您的支持,我会继续努力的!

扫码支持

打开微信扫一扫后点击右上角即可分享哟

愣娃

愣娃

这个人很懒,什么也没留下

发私信

发表评论