=Start=
缘由:
学习、提高需要
正文:
参考解答:
什么是序列化、反序列化?
Java序列化就是把对象转换成字节流,便于保存在内存、文件、数据库中,Java中的ObjectOutputStream类的writeObject()方法可以实现序列化。
Java反序列化即逆过程,由字节流还原成对象。Java中ObjectInputStream类的readObject()方法用于反序列化。
反序列化漏洞的危害
当应用代码从用户接受序列化数据,并试图反序列化改数据进行下一步处理时,会产生反序列化漏洞,其中最有危害性的就是远程代码注入。
这种漏洞产生原因是,java类ObjectInputStream在执行反序列化时,并不会对自身的输入进行检查,这就说明恶意攻击者可能也可以构建特定的输入,在 ObjectInputStream类反序列化之后会产生非正常结果,利用这一方法就可以实现远程执行任意代码。
这个漏洞的严重风险在于,即使你的代码里没有使用到Apache Commons Collections里的类,只要Java应用的Classpath里有Apache Commons Collections的jar包,都可以远程代码执行。
漏洞的根源其实并不是Java序列化的问题,而是Apache Commons Collections允许链式的任意的类函数反射调用。攻击者通过允许Java序列化协议的端口,把攻击代码上传到服务器上,再由Apache Commons Collections里的TransformedMap来执行。
如果Java应用对用户输入,即不可信数据做了反序列化处理,那么攻击者可以通过构造恶意输入,让反序列化产生非预期的对象,非预期的对象在产生过程中就有可能带来任意代码执行。假若反序列化可以设置Java类型的白名单,那么问题的影响就小了很多。
反序列化漏洞的补救措施/修复建议
临时方案:
一个临时的解决方案可以参考NibbleSecurity公司的ikkisoft在github上放出了一个临时补丁SerialKiller。
下载这个jar后放置于classpath,将应用代码中的java.io.ObjectInputStream替换为SerialKiller,之后配置让其能够允许或禁用一些存在问题的类,SerialKiller有Hot-Reload,Whitelisting,Blacklisting几个特性,控制了外部输入反序列化后的可信类型。
修复方案:
Apache Commons Collections在 3.2.2版本中做了一定的安全处理,对这些不安全的Java类的序列化支持增加了开关,默认为关闭状态。涉及的类包括:CloneTransformer,ForClosure, InstantiateFactory, InstantiateTransformer, InvokerTransformer, PrototypeCloneFactory,PrototypeSerializationFactory, WhileClosure。
狠一点的方案:
禁止JVM执行外部命令(未知漏洞的危害性会大大降低,可以大大提高JVM的安全性)
其它:
RedHat发布JBoss相关产品的解决方案:https://access.redhat.com/solutions/2045023
参考链接:
Lib之过?Java反序列化漏洞通用利用分析
https://blog.chaitin.cn/2015-11-11_java_unserialize_rce/
What Do WebLogic, WebSphere, JBoss, Jenkins, OpenNMS, and Your Application Have in Common? This Vulnerability.
https://foxglovesecurity.com/2015/11/06/what-do-weblogic-websphere-jboss-jenkins-opennms-and-your-application-have-in-common-this-vulnerability/
Java反序列化漏洞被忽略的大规模杀伤利用
http://www.infoq.com/cn/articles/java-deserialization-nsfocus
Java反序列化漏洞详解
https://www.secpulse.com/archives/42126.html
JAVA反序列化漏洞完整过程分析与调试
http://wps2015.org/drops/drops/JAVA%E5%8F%8D%E5%BA%8F%E5%88%97%E5%8C%96%E6%BC%8F%E6%B4%9E%E5%AE%8C%E6%95%B4%E8%BF%87%E7%A8%8B%E5%88%86%E6%9E%90%E4%B8%8E%E8%B0%83%E8%AF%95.html
深入理解 JAVA 反序列化漏洞
http://paper.seebug.org/312/
Commons Collections Java反序列化漏洞深入分析
https://security.tencent.com/index.php/blog/msg/97
JAVA反序列化漏洞知识点整理
https://3wapp.github.io/2017/05/07/JAVA%E5%8F%8D%E5%BA%8F%E5%88%97%E5%8C%96%E6%BC%8F%E6%B4%9E%E7%9F%A5%E8%AF%86%E7%82%B9%E6%95%B4%E7%90%86/
Java反序列化漏洞批量检测(附POC)
http://www.freebuf.com/vuls/86566.html
学习手册:JAVA序列化和反序列化及漏洞补救
http://blog.nsfocus.net/learning-guide-java-serialization-de-serialization-vulnerability-remediation/
Java反序列化漏洞被忽略的大规模杀伤利用
http://blog.nsfocus.net/java-deserialization-vulnerability-overlooked-mass-destruction/
Matthias Kaiser – Exploiting Deserialization Vulnerabilities in Java.
http://www.slideshare.net/codewhitesec/exploiting-deserialization-vulnerabilities-in-java-54707478
SerialKiller
https://github.com/ikkisoft/SerialKiller
ysoserial
https://github.com/frohoff/ysoserial
JavaUnserializeExploits
https://github.com/foxglovesec/JavaUnserializeExploits
JBoss-exp
https://github.com/Xyntax/JBoss-exp
=END=
《 “Java反序列化漏洞” 》 有 21 条评论
Java 反序列化漏洞利用脚本收集
https://github.com/CoalfireLabs/java_deserialization_exploits
Java反序列化漏洞速查表(The cheat sheet about Java Deserialization vulnerabilities.)
https://github.com/GrrrDog/Java-Deserialization-Cheat-Sheet
Java Untrusted Deserialization Exploits Tools
https://github.com/getcode2git/exserial
All-in-one plugin for Burp Suite for the detection and the exploitation of Java deserialization vulnerabilities
https://github.com/federicodotta/Java-Deserialization-Scanner
Java Deserialization Exploit
https://github.com/njfox/Java-Deserialization-Exploit
A proof-of-concept tool for generating payloads that exploit unsafe Java object deserialization.
https://github.com/frohoff/ysoserial
JexBoss: Jboss (and Java Deserialization Vulnerabilities) verify and EXploitation Tool
https://github.com/joaomatosf/jexboss
SuperSerial – Burp Java Deserialization Vulnerability Identification
https://github.com/DirectDefense/SuperSerial
site:github.com Java Deserialization
[漏洞分析]Java反序列化漏洞分析
https://xianzhi.aliyun.com/forum/read/1757.html
低漏报检测java反序列化漏洞方法
http://www.polaris-lab.com/index.php/archives/331/
https://blog.paranoidsoftware.com/triggering-a-dns-lookup-using-java-deserialization/
https://github.com/GoSecure/break-fast-serial
http://gosecure.net/2017/03/22/detecting-deserialization-bugs-with-dns-exfiltration/
`
不需要目标系统存在漏洞的第三方库,直接使用JDK自带的URL类发起dns请求,dns请求一般可以出网,所以漏报应该很低。
`
攻击 Java 反序列化
https://nickbloor.co.uk/2017/08/13/attacking-java-deserialization/
大型客户端渗透测试 第3部分:Java 反序列化漏洞导致的远程代码执行
http://blog.securelayer7.net/thick-client-penetration-testing-3javadeserialization-exploit-rce/
Jenkins < 1.650 反序列化漏洞(CVE-2016-0792)Exploit https://cxsecurity.com/issue/WLB-2017070198
【技术分享】Java反序列化漏洞从理解到实践
http://bobao.360.cn/learning/detail/4474.html
https://diablohorn.com/2017/09/09/understanding-practicing-java-deserialization-exploits/
[Web安全]浅谈Java反序列化漏洞修复方案
https://xianzhi.aliyun.com/forum/read/2171.html
https://www.nccgroup.trust/us/our-research/combating-java-deserialization-vulnerabilities-with-look-ahead-object-input-streams-laois/
https://github.com/ikkisoft/SerialKiller/
https://github.com/Contrast-Security-OSS/contrast-rO0
https://dzone.com/articles/a-first-look-into-javas-new-serialization-filterin
https://docs.oracle.com/javase/7/docs/platform/serialization/spec/protocol.html
https://www.owasp.org/index.php/Deserialization_of_untrusted_data
https://github.com/Cryin/Paper/blob/master/%E6%B5%85%E8%B0%88Java%E5%8F%8D%E5%BA%8F%E5%88%97%E5%8C%96%E6%BC%8F%E6%B4%9E%E4%BF%AE%E5%A4%8D%E6%96%B9%E6%A1%88.md
https://www.ibm.com/developerworks/library/se-lookahead/
Jboss引起的内网渗透
http://rcoil.me/2017/10/Jboss%E5%BC%95%E8%B5%B7%E7%9A%84%E5%86%85%E7%BD%91%E6%B8%97%E9%80%8F/
`
1. 信息收集
2. 小小免杀
3. 横向渗透
3.1. 组策略漏洞(GPP)
3.2. MS17-010
3.3. MS14-068 KERBEROS漏洞
3.4. 抓密码
`
反序列化漏洞的末日?JEP290机制研究
http://blog.csdn.net/u011721501/article/details/78555246
https://paper.seebug.org/454/
https://blogs.oracle.com/java-platform-group/filter-incoming-serialization-data-a-little-of-jdk-9-goodness-available-now-in-current-release-families
深度 – Java 反序列化 Payload 之 JRE8u20
https://mp.weixin.qq.com/s/Daipik5qK6cIuYl49G-n4Q
http://wouter.coekaerts.be/2015/annotationinvocationhandler
https://github.com/pwntester/JRE8u20_RCE_Gadget
Jdk7u21 反序列化漏洞Gadget原理
http://blog.csdn.net/u011721501/article/details/78607633
Apache Commons Collections反序列化漏洞学习
http://pirogue.org/2017/12/22/javaSerialKiller/
`
java序列化与反序列化
定义
Java中api实现
概念上根本原因
Collections漏洞原因
漏洞形成基础知识
java反射机制
被序列化和反序列化的类
Collections漏洞分析
Collections介绍
漏洞触发过程
java反序列化漏洞触发链(Collections)
`
2017年反序列化漏洞年度报告
http://blog.nsfocus.net/2017-loophole-report/
Java反序列化漏洞从入门到深入
https://xianzhi.aliyun.com/forum/topic/2041
【PPT】Weblogic漏洞挖矿事件应急分享
http://blog.nsfocus.net/weblogic-sharing/
`
分享大纲:
1. Weblogic基础配置
2. 应急场景中常见的Weblogic漏洞
3. 针对未知漏洞攻击的处置方法
4. 安全事件通告经验探讨
`
Java反序列化漏洞学习实践一:从Serializbale接口开始,先弹个计算器
http://www.polaris-lab.com/index.php/archives/447/
Java反序列化漏洞学习实践二:Java的反射机制(Java Reflection)
http://www.polaris-lab.com/index.php/archives/450/
Java反序列化漏洞学习实践三:理解Java的动态代理机制
http://www.polaris-lab.com/index.php/archives/453/
Weblogic 常见漏洞环境的搭建及其利用
https://fuping.site/2017/06/05/Weblogic-Vulnerability-Verification/
https://paper.tuisec.win/detail/2b0c6fb26f42bdd
https://github.com/phith0n/vulhub/tree/master/weblogic
https://blog.csdn.net/chs007chs/article/details/52514888
WebLogic 反序列化远程代码执行漏洞 POC 发布(CVE-2018-2893)
https://github.com/shengqi158/CVE-2018-2628
https://github.com/anbai-inc/CVE-2018-2893
https://www.anquanke.com/post/id/152164
https://www.secfree.com/article-957.html
What Do WebLogic, WebSphere, JBoss, Jenkins, OpenNMS, and Your Application Have in Common? This Vulnerability,关于 WebLogic、WebSphere、JBoss、Jenkins和OpenNMS的反序列化漏洞导致远程代码执行的研究
https://foxglovesecurity.com/2015/11/06/what-do-weblogic-websphere-jboss-jenkins-opennms-and-your-application-have-in-common-this-vulnerability/
Java常见通用漏洞和修复的代码以及利用payload
https://github.com/JoyChou93/java-sec-code
`
介绍
该项目也可以叫做Java Vulnerability Code(Java漏洞代码)。
每个漏洞类型代码默认存在安全漏洞(除非本身不存在漏洞),相关修复代码在注释里。具体可查看每个漏洞代码和注释。
漏洞代码
XXE
SSRF
URL重定向
IP伪造
XSS
CRLF注入
远程命令执行
反序列化
文件上传
SQL注入
URL白名单Bypass
Java RMI
Fastjson
CORS
JSONP
漏洞说明
Java RMI
XXE
SQLI
Fastjson
Others
`
通过t3协议识别weblogic版本
http://gv7.me/articles/2019/detection-weblogic-version-by-t3/
http://www.liuhaihua.cn/archives/604694.html
`
# 识别weblogic版本有什么用呢?
在检测weblogic漏洞之前,我们往往需要探测下weblogic版本。好判断是否在漏洞版本范围,同时也为我们构造EXP做准备(相同漏洞,可能因为weblogic版本不同需要的对应的EXP,比如CVE-2019-2725)
如果未探测到,以下几种可能情况:
1、t3协议未启用
2、服务器做了负载均衡
`
Java反序列化漏洞原理解析
https://xz.aliyun.com/t/6787
`
Java序列化与反序列化
* 序列化与反序列化过程
* readObject()方法
Java反射
* Java反射定义
* 获取类对象
* 利用类对象创建对象
* 通过反射调用方法
* 通过反射访问属性
* 利用java反射执行代码
JAVA Apache-CommonsCollections3.1 反序列化RCE漏洞分析
Java反序列化漏洞利用
* 触发场景
* 相关工具
* 实际测试
演示源码和参考链接
* 源码
* 参考链接
`
Java 序列化和反序列化
https://appts4jvi.zhishibox.net/b/5d644b6f81cbc9e40460fe7eea3c7925
`
1. Java 序列化和反序列化
在很多语言中都提供了对象反序列化支持,Java在JDK1.1(1997年)时就内置了对象反序列化(java.io.ObjectInputStream)支持。Java对象序列化指的是将一个Java类实例序列化成字节数组,用于存储对象实例化信息:类成员变量和属性值。 Java反序列化可以将序列化后的二进制数组转换为对应的Java类实例。
Java序列化对象因其可以方便的将对象转换成字节数组,又可以方便快速的将字节数组反序列化成Java对象而被非常频繁的被用于Socket传输。 在RMI(Java远程方法调用-Java Remote Method Invocation)和JMX(Java管理扩展-Java Management Extensions)服务中对象反序列化机制被强制性使用。在Http请求中也时常会被用到反序列化机制,如:直接接收序列化请求的后端服务、使用Base编码序列化字节字符串的方式传递等。
2. Java反序列化漏洞
自从2015年Apache Commons Collections反序列化漏洞(ysoserial的最早的commit记录是2015年1月29日,说明这个漏洞可能早在2014年甚至更早就已经被人所利用)利用方式被人公开后直接引发了Java生态系统的大地震,与此同时Java反序列化漏洞仿佛掀起了燎原之势,无数的使用了反序列化机制的Java应用系统惨遭黑客疯狂的攻击,为企业安全甚至是国家安全带来了沉重的打击!
直至今日(2019年12月)已经燃烧了Java平台四年之久的反序列化漏洞之火还仍未熄灭。如今的反序列化机制在Java中几乎成为了致命的存在,反序列化漏洞带来的巨大危害也逐渐被我们熟知。2018年1月Oracle安全更新了237个漏洞,而反序列化漏洞就占了28.5%,由此可见Oracle对反序列化机制的深恶痛绝。2012年JEP 154提出了移除反序列化机制:JEP 154: Remove Serialization、JDK-8046144,但似乎并未通过,移除反序列化是一个持久性的工作,短期内我们还是需要靠自身去解决反序列化机制带来的安全问题。
`