网站首页 > java教程 正文
在2015年12月,我在PayPal商业网站(manager.paypal.com)中发现了一个严重的漏洞,这个漏洞的存在,使得我可以通过不安全的JAVA反序列化对象,在PayPal的网站服务器上远程使用shell命令,并且获取访问生产数据库的权限。我迅速将这个漏洞向PayPal的安全团队报告,这个漏洞随后很快就被解决。
具体细节:
在对PayPal的网站进行安全检测的时候,我被一个不同寻常的附件表单参数“oldForm”所吸引,这个参数在经过base64解码后,看上去比较复杂。
在经过一些研究后,我意识到这是一个没有任何标记的java序列化对象,它由应用程序处理。这就意味着你可以向服务器发送任何现有类别的序列化对象,和“readObject”(或“readResolve”)。如果想利用这个漏洞,你需要在“classpath”中找到一个合适的类别,一个可以进行序列化和具有有趣(只是站在开发利用的角度来看)的内置的“readObject”方案。你可以在最近的由FoxGlove Security安全团队所做的一篇文章中,了解到这项技术。一年前,Chris Frohoff (@frohoff)和Gabriel Lawrence (@gebl)做了一项伟大的工作,他们在Apache Common Collections库中找到了合适的类,这使得他们可以进行远程代码操控,并且还在他们的 github page主页上公布了“ysoserial”有效负载生成工具。
开发利用:
我迅速下载了这个工具,然后生成了一个简单的有效负载,并向我自己的服务器上通过执行“curl x.s.artsploit.com/paypal”shell命令,发送DNS和HTTP请求:
然后我向程序服务器发送了那个在“oldFormData”参数中的base64加密的有效负载,之后令我印象深刻的是,当来自PayPal网络的请求在我的NGINX访问日志中出现的时候:
我意识到我可以在manager.paypal.com网页服务器上执行任意的操作命令,此外,我可以建立一个后台连接,连接到我喜欢的服务器上,比如,上传和执行一个后门。结果是,我可以获取manager.paypal.com应用程序所使用的生产数据库的访问权限。
取而代之的是,我只是读取“/etc/passwd” 文件,通过把它发送到我的服务器上,并将它所为漏洞的例证:
我还录制了一段视频,关于如何重新生成此漏洞,并将它向PayPal安全团队进行报告。
在那之后,我在manager.paypal.com程序中发现许多其他端点,它们同样使用序列化对象,也同样可以被利用。
大约一个月后,PayPal给了我一笔奖金,用来奖励我此次对该漏洞所做的报告,但据我所知,另一位研究员Mark Litchfield在2015年12月11日也对类似的漏洞做了报告,比我还提早两天。但不管怎么说,PayPal决定给我一笔奖金,我尊重他们的决定。
- 上一篇: Apache Dubbo 被曝出“高危”远程代码执行漏洞
- 下一篇: PHP反序列化知识点总结
猜你喜欢
- 2024-12-01 fastjson 发布关于“反序列化远程代码执行漏洞”的安全公告
- 2024-12-01 PHP反序列化知识点总结
- 2024-12-01 漏洞预警|Apache Dubbo 存在反序列化漏洞
- 2024-12-01 Apache Dubbo 被曝出“高危”远程代码执行漏洞
- 2024-12-01 序列化与反序列化——FastJSON、Jackson、Gson性能测试
- 2024-12-01 漏洞预警|Apache MINA SSHD反序列化漏洞
- 2024-12-01 【预警通报】关于WebLogicT3存在反序列化高危漏洞的预警通报
- 2024-12-01 攻防论道 | Apache Shiro反序列化漏洞检测
- 2024-12-01 Fastjson全版本远程代码执行漏洞曝光,降维发布预警
- 2024-12-01 【预警通报】关于ApacheOFBizRMI反序列化远程代码 执行高危漏洞的预警通报
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)