java反序列化标志:
ac ed 00 05
反编译工具
JD-GUI、IDEA Fernflower插件、Bytecode-Viewer、Fernflower、JAD、JBE、JEB
Java框架层注入-JPA(JPQL注入)
Java框架层注入-HQL注入
基于三方调用框架-webservice接口
1.默认的安全配置
2.Axis2-jws文件
3.SOAPMonitor反序列化漏洞
4.Axis1、Axis2、Xfire、CXF相关漏洞
基于三方调用框架-DWR接口
1.默认的安全配置项
2.未授权的访问
3.Debug状态下的问题
4.常见路径:/exec、/dwr
基于三方调用框架-HESSIAN接口
1.未授权的访问
2.自带绕waf光环
3.自身未修复漏洞
基于三方调用框架-GWT接口
未授权访问
自带绕waf光环
接口枚举猜测
JDWP nc反弹
Date 201* 类型 远程命令执行 影响范围 前置条件 开启调试模式
Java %c0%ae 安全模式绕过漏洞
原理
在Java端"%c0%ae"解析为"uC0AE",最后转义为ASCCII低字符-"."。通过这个方法可以绕过目录保护读取包配置文件信息 利用:
读取敏感文件被
修复:
下载Java的最新版本:http://www.java.com/zh_CN/
反序列化漏洞
漏洞原因
开发失误
重写ObjectInputStream对象的resolveClass方法中的检测可被绕过。
使用第三方的类进行黑名单控制
当readObject方法书写不当时就会引发漏洞
基础库中隐藏的反序列化漏洞 commons-fileupload 1.3.1 commons-io 2.4 commons-collections 3.1 commons-logging 1.2 commons-beanutils 1.9.2 org.slf4j:slf4j-api 1.7.21 com.mchange:mchange-commons-java 0.2.11 org.apache.commons:commons-collections 4.0 com.mchange:c3p0 0.9.5.2 org.beanshell:bsh 2.0b5 org.codehaus.groovy:groovy 2.3.9 org.springframework:spring-aop 4.1.4.RELEASE POP Gadgets 检测 检测步骤 反序列化操作一般应用在导入模板文件、网络通信、数据传输、日志格式化存储、对象数据落磁盘、或DB存储等业务场景。因此审计过程中重点关注这些功能板块。 "① 通过检索源码中对反序列化函数的调用来静态寻找反序列化的输入点 可以搜索以下函数:ObjectInputStream.readObject ObjectInputStream.readUnshared XMLDecoder.readObject Yaml.load XStream.fromXML ObjectMapper.readValue JSON.parseObject ② 确定了反序列化输入点后,再考察应用的Class Path中是否包含Apache Commons Collections等危险库(ysoserial所支持的其他库亦可)。 ③ 若不包含危险库,则查看一些涉及命令、代码执行的代码区域,防止程序员代码不严谨,导致bug。 ④ 若包含危险库,则使用ysoserial进行攻击复现。 防御 禁用可被反序列化的类 'org.apache.commons.collections.functors.InvokerTransformer', 'org.apache.commons.collections.functors.InstantiateTransformer', 'org.apache.commons.collections4.functors.InvokerTransformer', 'org.apache.commons.collections4.functors.InstantiateTransformer', 'org.codehaus.groovy.runtime.ConvertedClosure', 'org.codehaus.groovy.runtime.MethodClosure', 'org.springframework.beans.factory.ObjectFactory', 'xalan.internal.xsltc.trax.TemplatesImpl'通过Hook resolveClass来校验反序列化的类 使用ValidatingObjectInputStream来校验反序列化的类 使用contrast-rO0防御反序列化攻击 使用ObjectInputFilter来校验反序列化的类 禁止JVM执行外部命令Runtime.exec 不建议使用的黑名单