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

简介: 本文讲的是看我如何黑掉PayPal:从任意文件上传到远程代码执行,在上一篇文章中,我描述了我是如何破解OSCP证书的,破解起来非常困难,大概花了我四个多月的时间,但是我如果我不去挖漏洞的话,意味着我就没有零用钱了。
本文讲的是 看我如何黑掉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日
本文作者:愣娃
本文来自云栖社区合作伙伴嘶吼,了解相关信息可以关注嘶吼网站。
相关实践学习
基于函数计算快速搭建Hexo博客系统
本场景介绍如何使用阿里云函数计算服务命令行工具快速搭建一个Hexo博客。
目录
相关文章
|
2月前
|
安全 网络安全
明御安全网关任意文件上传漏洞
安恒信息明御安全网关(以下简称“NGFW”)秉持安全可视、简单有效的理念,以资产为视角,构建“事前+事中+事后”全流程防御的下一代安全防护体系,并融合传统防火墙、入侵防御系统、防病毒网关、上网行为管控、VPN网关、威胁情报等安全模块于一体的智慧化安全网关。
117 1
|
7月前
|
安全 Windows
记一次“上传”命令执行的绕过案例
记一次“上传”命令执行的绕过案例
64 0
|
6月前
|
安全 Shell PHP
渗透攻击实例-文件上传导致任意代码执行
渗透攻击实例-文件上传导致任意代码执行
|
7月前
|
监控 算法 Java
记一次从任意文件下载到getshell
记一次从任意文件下载到getshell
86 0
|
7月前
|
SQL Web App开发 安全
Smanga未授权远程代码执行漏洞(CVE-2023-36076) 附加SQL注入+任意文件读取
Smanga存在未授权远程代码执行漏洞,攻击者可在目标主机执行任意命令,获取服务器权限。
169 0
|
10月前
|
存储 安全 前端开发
代码审计——任意文件下载详解
代码审计——任意文件下载详解
176 0
|
安全 Java API
PublicCMS 网站漏洞 任意文件写入并可提权服务器权限
PublicCMS是目前网站系统中第一个采用JAVA架构 TOMCAT+Apcche+Mysql数据库架构的CMS网站,开源,数据承载量大,可以承载到上千万的数据量,以及用户的网站并发可达到上千万的PV,PublicCMS静态全站html,访问速度极快,模板样式多,可自己设计,第三方的API接口也很多,深受网站运营者的喜欢。最重要的是开源,免费升级,支持动静分离,数据库及时备份等功能。
521 0
PublicCMS 网站漏洞 任意文件写入并可提权服务器权限
|
安全 前端开发 PHP
七夕咱一起验证漏洞✨ IIS7/7.5对文件名畸形解析导致远程代码执行❤️
七夕咱一起验证漏洞✨ IIS7/7.5对文件名畸形解析导致远程代码执行❤️
300 0
七夕咱一起验证漏洞✨ IIS7/7.5对文件名畸形解析导致远程代码执行❤️
|
安全 PHP 数据库
WordPress安全漏洞:从任意文件删除到任意代码执行
  WordPress安全漏洞:从任意文件删除到任意代码执行   WordPress是网络上最受欢迎的CMS系统。据w3tech统计,约有30%的网站运行了该系统。该系统的应用是如此广泛,难免会成为网络犯罪分子攻击目标。
599 0