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

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


漏洞发现过程

在上一篇文章中,我描述了我是如何破解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响应码。

我当时感觉如下图。

酷!让我们尝试执行代码,用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:修复成功

原文发布时间为:2017年7月25日

本文作者:愣娃

本文来自合作伙伴嘶吼,了解相关信息可以关注嘶吼网站。

原文链接

时间: 2025-01-26 08:21:25

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

DjangoUEditor 1.9.143任意文件上传漏洞依然存在 黑客可以上传木马 但作者已经停止更新了

DjangoUeditor是将百度开发的富文本编辑器Ueditor移植到Django中的组件,它的使用率还是相当高的.经笔者测试,即便是现在可以下载使用的1.9.143版本中,依然存在着这个漏洞. 虽然这个漏洞距今已经快两年了,但DjangoUeditor于2015年1月17号后,再也没有更新过,见github上作者的说明: DjangoUeditor是什么 Django是Python世界最有影响力的web框架.DjangoUeditor是一款可以在Django应用中集成百度Ueditor HT

从PayPal漏洞奖励计划页面 发现服务器远程代码执行漏洞 然而故事并没有结束

维卡斯的安全研究员夏尔马利用一个无限制的文件上传漏洞,在PayPal服务器上远程执行代码,也意味着他发现了一个远程代码执行漏洞. 专家从PayPal漏洞奖励计划页面 发现了服务器的漏洞 该专家正在利用Burp软件访问PayPal bug 赏金页的时候, 打开页面 http://paypal.com/bugbounty/跳出如下的响应页面. 专家将他的分析集中在 "内容安全策略:" 响应报头中提到的 paypal 域列表中, 特别是 "https://*. paypalcorp

ASP无须第三方组件真正实现任意类型文件的文件上传

上传 一直以来,由于FileSystemObject的局限,所以ASP最大的难题就是文件上传,大多解决法就是安装第三方上传组件.可第三方组件有很多问题,有的组件要注册,有的组件要在表单中加上他的版权信息.还有的就是组件的兼容问题. 在网上也流传了很多无组件上传的代码,但都是只能上传文本文件,或是只能将文件上传到数据库中. 作者这段时间在研究ASP,发现可以不用第三方组件上传任意类型的文件.就写了这个类,给大家一个方便,整个类放在一个文件中: upload_5xsoft.inc 在 Example

文本-最近在做页面页面文件上传比较,但是有的地方看不懂

问题描述 最近在做页面页面文件上传比较,但是有的地方看不懂 CODEMIRROR的简单使用,JS比较文本差异(标注出增删改) 在博客园上找到这东西,跟我的想做的差不多,但是这个js需要上网,所以页面运行一次要1min30s,请大神帮忙改一下

servlet-大神帮看下这段代码我想把文件上传到webroot下的upload文件夹该怎么改啊

问题描述 大神帮看下这段代码我想把文件上传到webroot下的upload文件夹该怎么改啊 package com.chamber.controller.upload; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.util.Iterator;

PayPal曝远程代码执行漏洞(含视频)

日前知名在线支付公司PayPal被曝存在严重的远程代码执行漏洞,攻击者可以利用该漏洞在PayPal的web应用服务器上执行恶意命令,最终获得服务器控制权限. 漏洞描述 这个远程代码执行漏洞由独立安全研究员Milan A Solanki发现,被Vulnerability Lab评为严重,通用漏洞评分系统(CVSS)分数达到了9.3,漏洞影响了PayPal的在线营销web应用服务器. 该漏洞存在于服务器中的Java调试线协议(Java Debug Wire Protocol, JDWP),攻击者可以

winform在任意文件上右键启动程序,获去文件的属性(路径等)

问题描述 我做了个winform的程序,已经关联到桌面文件的右键中,可以通过右键启动程序了,我想获取在哪个文件上点击了右键,想获取文件的属性. 解决方案 解决方案二:那个需要用到Shell属性页扩展http://blog.163.com/yesaidu@126/blog/static/518193072008624507764/解决方案三:小弟是用C#写的,有木有C#版的.C++看起来有些吃力.谢谢.解决方案四: 解决方案五:我的意思是:比如桌面上有个"txt"的文件,我在这个txt文

哈哈写了个新的二文件上传!才30行代码啊。很容易看懂……支持多文件。

上传 <%' upload.aspFunction IntMin(n,y)    If n<y and n>0 Then         IntMin=Int(n)    ElseIf y>0 Then         IntMin=Int(y)    Else         IntMin=n    End IfEnd Function Function getFormValue(Name)    Dim formSize,formData,DataHeader,DataStar

文件上传八大法-远程控制必看_漏洞研究

本文是居于已经得到了一个有一定权限的SHELL.命令行下传送文件的其他方法.   一,TFTP  格式:tftp -i get file.exe path/file.exe           默认存放在system32下,如果指定就存在指定的地方.  二:ftp下载文件   ftp下载文件一般步骤如下:  echo open xxx.xxx.xxx.xxx 〉ftp.txt   echo user 〉〉ftp.txt   echo password 〉〉ftp.txt   echo binar