看我如何黑掉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日
本文作者:愣娃
本文来自云栖社区合作伙伴嘶吼,了解相关信息可以关注嘶吼网站。
目录
相关文章
|
搜索推荐 安全 Android开发
如何优化安卓应用的用户体验
【2月更文挑战第9天】在当今移动互联网时代,安卓应用已成为人们日常生活中不可或缺的一部分。然而,用户对应用的使用体验越来越苛刻,一个不好的应用体验很容易导致用户的流失。本文将介绍如何从多个方面优化安卓应用的用户体验。
|
11月前
|
数据安全/隐私保护
基于SpringBoot+Vue餐厅点餐系统【源码+论文+演示视频+包运行成功(私聊)】(2)
基于SpringBoot+Vue餐厅点餐系统【源码+论文+演示视频+包运行成功(私聊)】
117 0
|
11月前
|
机器学习/深度学习 编解码 人工智能
一种基于YOLOv8改进的高精度表面缺陷检测网络, NEU-DET和GC10-DET涨点明显(原创自研)
【7月更文挑战第3天】一种基于YOLOv8改进的高精度表面缺陷检测, 在NEU-DET和GC10-DET任务中涨点明显;
296 1
|
12月前
|
算法 C++
【洛谷 P1055】[NOIP2008 普及组] ISBN 号码 题解(字符串)
该编程题目要求编写程序检查输入的ISBN号码的识别码是否正确。ISBN号码格式为`x-xxx-xxxxx-x`,其中`x`是数字,最后一位是通过特定算法计算得出的识别码。算法是将前9位数字乘以1到9的加权值,求和后对11取模,模为10时识别码为大写`X`,否则为对应模值的数字。程序接收一个符合格式的ISBN号码,验证识别码并输出`Right`(如果正确)或修正后的正确ISBN号码。提供的AC代码使用C++实现这一功能。
156 0
|
Web App开发 Java 测试技术
反了!居然让我教她自动化测试!
一个做测试的居然让我教她怎么做自动化测试,真是反了……行吧,正好懂一些 Selenium,今天就来跟大家一起了解下 Python 如何使用 Selenium 进行自动化测试。
67 0
|
移动开发 PHP 开发者
PayPal网站付款标准版(for PHP)
原文:PayPal网站付款标准版(for PHP) 简单整理一下PHP项目整合PayPal支付功能。 一、表单的构建: 二、IPN验证部分 即时付款通知(IPN)示意图如下:   1) 客户点击“付款”按钮向您的账户付...
1261 0
「镁客早报」HTC公布第三季度营收,整体亏损;Intel发布XMM 8160 5G基带,2020年可商用
苹果面临中国市场iPhone需求下滑风险,开盘跌3.8%;惠普旗下Aruba与西门子合作,致力于填补企业IT OT网络的鸿沟。
325 0
xadmin与admin设置
xadmin : 导入xadmin 1 pip install xadmin 路由设置: 1 import xadmin 2 3 urlpatterns = [ 4 url(r'^xadmin/', xadmin.
1297 0