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

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

漏洞发现过程

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

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

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

看我如何黑掉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”来检查所有子域名实际上指向的方式:

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

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

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

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

我首先通过上传一个名为“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”扩展文件,其中有一个简单执行命令的功能。

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

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

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

接下来我们如何做?

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

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

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

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

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

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

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

我当时感觉如下图。

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

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

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

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

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

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

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

负责任披露时间

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

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




原文发布时间为:2017年7月25日
本文作者:愣娃
本文来自云栖社区合作伙伴嘶吼,了解相关信息可以关注嘶吼网站。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值