注:此备忘录翻译自Java-Deserialization-Cheat-Sheet
Java反序列化备忘录
一个为渗透工程师和安全研究人员准备的Java反序列化漏洞备忘录。
阅读需知:
- 科学上网
- “被黑掉的应用”栏下是漏洞产生的条件要求
Java Native Serialization (binary)
概述
有关大会的PPT和文档
《Marshalling Pickles》
演讲者:@frohoff & @gebl
《利用Java中的反序列化漏洞》
演讲者:@matthias_kaiser
连环杀手:寂静的Java反序列化渗透
演讲者:@pwntester & @cschneider4711
《我如何开始学会并担忧Java反序列化漏洞》
演讲者:@frohoff & @gebl
幸存的Java序列化启示
演讲者:@cschneider4711 & @pwntester
Java反序列化漏洞 - 被遗忘的Bug类
演讲者:@matthias_kaiser
反序列化漏洞引发的信息泄露
演讲者:@matthias_kaiser
如何防范Java反序列化漏洞
演讲者:@lucacarettoni
从JNDI / LDAP操作到远程执行代码
演讲者:@pwntester and O. Mirosh
如何修复Java序列化紊乱
演讲者:@e_rnst
盲打Java反序列化漏洞
演讲者:deadcode.me
Java虚拟机(JVM)中的反序列化漏洞概述
演讲者:@joaomatosf
有效攻击载荷生成器
ysoserial
https://github.com/frohoff/ysoserial
其它工具:
如何植入shell(pipes, redirects and other stuff):
攻击原理
JRE8u20_RCE_Gadget
https://github.com/pwntester/JRE8u20_RCE_Gadget
纯粹的JRE 8 RCE反序列化小工具
ACEDcup
https://github.com/GrrrDog/ACEDcup
文件上传通过:
- Apache Commons FileUpload <= 1.3 (CVE-2013-2186) and Oracle JDK < 7u40
Universal billion-laughs DoS
https://gist.github.com/coekie/a27cc406fc9f3dc7a70d
使用默认的Java类(JRE)仍会导致Dos攻击
Universal Heap使用阵列和HashMaps溢出DoS
https://github.com/topolik/ois-dos/
如何运行:
使用默认的Java类(JRE)仍会导致Dos攻击
Exp工具
工具无特定规范 - 并不需要一个特殊的工具 (就用Burp/ZAP + 有效攻击载荷就OK)
RMI
- 协议
- 默认端口 - 1099/tcp for rmiregistry
ysoserial (仅针对RMI注册表服务)
JMX
ysoserial
JexBoss
JNDI/LDAP
- 当我们控制一个地址来查找JNDI(context.lookup(address))并且可以从服务器上反向连接。
- 详细
- JNDI 远程代码执行
https://github.com/zerothoughts/jndipoc
JMS
JMET
JSF ViewState
没有专门的工具
JexBoss
T3 of Oracle Weblogic
loubia ( 在11g和12c上测试, 支持 t3s)
JavaUnserializeExploits (不适用于所有Weblogic版本)
WLT3Serial
IBM Websphere (1)
JavaUnserializeExploits
serialator
IBM Websphere (2)
- 要求能够使用自定义表单身份验证
- WASPostParam cookie
- 详细
没有专门的工具
Red Hat 系统下的JBoss (1)
JavaUnserializeExploits
https://github.com/njfox/Java-Deserialization-Exploit
serialator
JexBoss
Red Hat JBoss 6.X
没有专门的工具
Red Hat JBoss 4.x
没有专门的工具
Jenkins (1)
JavaUnserializeExploits
JexBoss
Jenkins (2)
ysoserial
Jenkins (s)
- Jenkins CLI LDAP
- *默认端口 - 高位TCP端口
- <= 2.32
- <= 2.19.3 (LTS)
- CVE-2016-9299
Metasploit有针对CVE-2016-9299的攻击模块
CloudBees Jenkins
Sploit
Restlet
- <= 2.1.2
- Rest API接受序列化对象时 (使用 ObjectRepresentation)
没有专门的工具
RESTEasy
- 当Rest API接受序列化对象 (uses @Consumes({"\/*"}) or "application/*" )
- 详细信息和示例
没有专门的工具
OpenNMS
ysoserial
Progress OpenEdge RDBMS
ysoserial
Commvault Edge Server
没有专门的工具
Symantec Endpoint Protection Manager
serialator
Oracle MySQL 企业级监视器
没有专门的工具
serialator
PowerFolder 商业级中间件
powerfolder-exploit-poc
Solarwinds 虚拟代理
ysoserial
思科Prime基础设施
CoalfireLabs/java_deserialization_exploits
Cisco ACS
ysoserial
Apache XML-RPC
没有专门的工具
Apache Archiva
没有专门的工具
SAP NetWeaver
PoC
Sun Java Web Console
没有专门的工具
Apache MyFaces Trinidad
- 1.0.0 <= version < 1.0.13
- 1.2.1 <= version < 1.2.14
- 2.0.0 <= version < 2.0.1
- 2.1.0 <= version < 2.1.1
- 未设定检查MAC地址
- CVE-2016-5004
没有专门的工具
Apache Tomcat JMX
JexBoss
OpenText Documentum D2
利用
Liferay
- /api/spring
- /api/liferay
- <= 7.0-ga3
- IP检查不完善
- Details
没有专门的工具
Apache ActiveMQ - Client lib
JMET
Redhat/Apache HornetQ - Client lib
JMET
Oracle OpenMQ - Client lib
JMET
IBM WebSphereMQ - Client lib
JMET
Oracle Weblogic - Client lib
JMET
Pivotal RabbitMQ - Client lib
JMET
IBM MessageSight - Client lib
JMET
IIT Software SwiftMQ - Client lib
JMET
Apache ActiveMQ Artemis - Client lib
JMET
Apache QPID JMS - Client lib
JMET
Apache QPID - Client lib
JMET
Amazon SQS Java Messaging - Client lib
JMET
检测
代码审计
数据交互
- 序列化数据标识符--'ac ed 00 05'(十六进制)
- 序列化数据标识符--'rO0'(Base64编码下)
- 请求包的Content-Type header为'application/x-java-serialized-object'
网络
- Nmap >=7.10 有很多Java相关漏洞的探针
- 使用nmap --all-version 命令在非标准端口上查找JMX / RMI
Burp 插件
被黑掉的应用 (without public sploits/need more info)
Spring服务调用 (HTTP, JMS, RMI...)
SAP P4
Apache SOLR
- SOLR-8262
- 5.1 <= version <=5.4
- 流处理程序使用RPC的Java序列化
Apache Shiro
Apache ActiveMQ (2)
Atlassian Bamboo (1)
Atlassian Bamboo (2)
- CVE-2015-8360
- 2.3.1 <= version < 5.9.9
- Bamboo JMS port (port 54663)
Atlassian Jira
- only Jira with a Data Center license
- RMI (port 40001)
- JRA-46203
Akka
Spring AMPQ
Apache Tika
Apache HBase
Apache Camel
Apache Log4j
Gradle (gui)
- custom(?) protocol(60024/tcp)
- article
Oracle Hyperion
Oracle Application Testing Suite
Red Hat JBoss BPM Suite
VMWare vRealize Operations
VMWare vCenter/vRealize (various)
Cisco (various)
Lexmark Markvision Enterprise
McAfee ePolicy Orchestrator
HP iMC
HP Operations Orchestration
HP Asset Manager
HP Service Manager
HP Operations Manager
HP Release Control
HP Continuous Delivery Automation
HP P9000, XP7 Command View Advanced Edition (CVAE) Suite
HP Network Automation
Adobe Experience Manager
Unify OpenScape (various)
Apache OFBiz
Apache Tomcat
Apache TomEE
IBM Congnos BI
Novell NetIQ Sentinel
ForgeRock OpenAM
- 9-9.5.5, 10.0.0-10.0.2, 10.1.0-Xpress, 11.0.0-11.0.3 and 12.0.0
- 201505-01
F5 (various)
Hitachi (various)
NetApp (various)
Zimbra Collaboration
Adobe ColdFusion
Code42 CrashPlan
Apache Batchee
Apache JCS
Apache OpenJPA
Apache OpenWebBeans
防御工具
For Android
XMLEncoder (XML)
攻击原理
Exploits:
Oracle Weblogic
Exploit
XStream (XML/JSON/various)
攻击原理
Payload 生成器
Exploits:
Apache Struts (S2-052)
Exploit
被黑掉的应用 (without public sploits/need more info):
Atlassian Bamboo
Jenkins
Kryo (binary)
如何黑掉它
Payload 生成器:
Hessian/Burlap (binary/XML)
攻击原理
Payload 生成器
Castor (XML)
攻击原理
Payload 生成器
被黑掉的应用(without public sploits/need more info):
OpenNMS
json-io (JSON)
攻击原理
Payload 生成器
Jackson (JSON)
vulnerable in some configuration
攻击原理
Payload 生成器
被黑掉的应用(without public sploits/need more info):
Apache Camel
Red5 IO AMF (AMF)
攻击原理
Payload 生成器
被黑掉的应用(without public sploits/need more info):
Apache OpenMeetings
Apache Flex BlazeDS (AMF)
攻击原理
Payload 生成器
被黑掉的应用(without public sploits/need more info):
Adobe ColdFusion
Apache BlazeDS
VMWare VCenter
Flamingo AMF (AMF)
攻击原理
GraniteDS (AMF)
攻击原理
WebORB for Java (AMF)
攻击原理
SnakeYAML (YAML)
攻击原理
Payload 生成器
被黑掉的应用(without public sploits/need more info):
Resteasy
Apache Camel
Apache Brooklyn
jYAML (YAML)
攻击原理
Payload 生成器
YamlBeans (YAML)
攻击原理
Payload 生成器
"Safe" deserialization
一些序列化库是安全的(或几乎安全https://github.com/mbechler/marshalsec
但这不是官方建议,而是由一个安全研究员提出的建议列表:
- JAXB
- XmlBeans
- Jibx
- ProtobufGSON
- GWT-RPC