Java反序列化测试备忘录

注:此备忘录翻译自Java-Deserialization-Cheat-Sheet

Java反序列化备忘录

一个为渗透工程师和安全研究人员准备的Java反序列化漏洞备忘录。 阅读需知:

  1. 科学上网
  2. “被黑掉的应用”栏下是漏洞产生的条件要求

Java Native Serialization (binary)

概述

有关大会的PPT和文档

《Marshalling Pickles》

演讲者:[@frohoff](https://twitter.com/frohoff) & [@gebl](https://twitter.com/gebl)

《利用Java中的反序列化漏洞》

演讲者:[@matthias_kaiser](https://twitter.com/matthias_kaiser)

连环杀手:寂静的Java反序列化渗透

演讲者:[@pwntester](http://twitter.com/pwntester) & [@cschneider4711](http://twitter.com/cschneider4711)

《我如何开始学会并担忧Java反序列化漏洞》

演讲者:[@frohoff](https://twitter.com/frohoff) & [@gebl](https://twitter.com/gebl)

幸存的Java序列化启示

演讲者:[@cschneider4711](http://twitter.com/cschneider4711) & [@pwntester](http://twitter.com/pwntester)

Java反序列化漏洞 - 被遗忘的Bug类

演讲者:[@matthias_kaiser](https://twitter.com/matthias_kaiser)

反序列化漏洞引发的信息泄露

演讲者:[@matthias_kaiser](https://twitter.com/matthias_kaiser)

如何防范Java反序列化漏洞

演讲者:[@lucacarettoni](https://twitter.com/lucacarettoni)

从JNDI / LDAP操作到远程执行代码

演讲者:[@pwntester](http://twitter.com/pwntester) and O. Mirosh

如何修复Java序列化紊乱

演讲者:[@e_rnst](https://twitter.com/e_rnst)

盲打Java反序列化漏洞

演讲者:deadcode.me

Java虚拟机(JVM)中的反序列化漏洞概述

演讲者:[@joaomatosf](https://twitter.com/joaomatosf)

有效攻击载荷生成器

ysoserial

https://github.com/frohoff/ysoserial

其它工具: - JavaSerialKiller - Java Deserialization Scanner - Burp-ysoserial - SuperSerial - SuperSerial-Active

如何植入shell(pipes, redirects and other stuff): - $@|sh – Or: Getting a shell environment from Runtime.exec - Set String[] for Runtime.exec (patch ysoserial's payloads) - Shell Commands Converter

攻击原理 - https://blog.srcclr.com/commons-collections-deserialization-vulnerability-research-findings/ - http://gursevkalra.blogspot.ro/2016/01/ysoserial-commonscollections1-exploit.html

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 Deserialization DoS - payloads

使用默认的Java类(JRE)仍会导致Dos攻击

Exp工具

工具无特定规范 - 并不需要一个特殊的工具 (就用Burp/ZAP + 有效攻击载荷就OK)

RMI
  • 协议
  • 默认端口 - 1099/tcp for rmiregistry

ysoserial (仅针对RMI注册表服务)

JMX
  • 基于RMI协议
  • 在新版本的JRE中部分修补

ysoserial

JexBoss

JNDI/LDAP
  • 当我们控制一个地址来查找JNDI(context.lookup(address))并且可以从服务器上反向连接。
  • 详细
  • JNDI 远程代码执行

https://github.com/zerothoughts/jndipoc

JMS

JMET

JSF ViewState
  • Mac地址检测不完善

没有专门的工具

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)
  • http://jboss_server/invoker/JMXInvokerServlet
  • 默认端口 - 8080/tcp
  • CVE-2015-7501

JavaUnserializeExploits

https://github.com/njfox/Java-Deserialization-Exploit

serialator

JexBoss

Red Hat JBoss 6.X
  • http://jboss_server/invoker/readonly
  • 默认端口 - 8080/tcp
  • CVE-2017-12149
  • JBoss 6.X and EAP 5.X
  • Details

没有专门的工具

Red Hat JBoss 4.x
  • http://jboss_server/jbossmq-httpil/HTTPServerILServlet/
  • <= 4.x
  • CVE-2017-7504

没有专门的工具

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

没有专门的工具

OpenNMS
  • RMI

ysoserial

Progress OpenEdge RDBMS
  • 全版本
  • RMI

ysoserial

Commvault Edge Server

没有专门的工具

Symantec Endpoint Protection Manager

serialator

Oracle MySQL 企业级监视器

没有专门的工具

serialator

PowerFolder 商业级中间件

powerfolder-exploit-poc

Solarwinds 虚拟代理

ysoserial

思科Prime基础设施
  • https://[目标URL]/xmp_data_handler_service/xmpDataOperationRequestServlet
  • <= 2.2.3 Update 4
  • <= 3.0.2
  • CVE-2016-1291

CoalfireLabs/java_deserialization_exploits

Cisco ACS

ysoserial

Apache XML-RPC

没有专门的工具

Apache Archiva

没有专门的工具

SAP NetWeaver
  • https://[target]/developmentserver/metadatauploader
  • CVE-2017-9844

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
  • SHIRO-550
  • 加密的cookie(使用硬编码密钥)
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
  • CVE-2016-6809
  • 1.6 <= version < 1.14
  • Apache Tika的MATLAB解析器
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 - <= 10.3.6.0.0 - <= 12.1.3.0.0 - <= 12.2.1.2.0 - <= 12.2.1.1.0 - http://weblogic_server/wls-wsat/CoordinatorPortType - CVE-2017-3506 - CVE-2017-10271 - Details

Exploit

XStream (XML/JSON/various)

攻击原理

Payload 生成器

Exploits: ##### Apache Struts (S2-052) - <= 2.3.34 - <= 2.5.13 - REST plugin - CVE-2017-9805

Exploit

被黑掉的应用 (without public sploits/need more info): ##### Atlassian Bamboo - CVE-2016-5229

Jenkins

Kryo (binary)

如何黑掉它

Payload 生成器:

Hessian/Burlap (binary/XML)

攻击原理

Payload 生成器

Castor (XML)

攻击原理

Payload 生成器

被黑掉的应用(without public sploits/need more info): ##### OpenNMS - NMS-9100

json-io (JSON)

攻击原理

Payload 生成器

Jackson (JSON)

vulnerable in some configuration

攻击原理

Payload 生成器

被黑掉的应用(without public sploits/need more info): ##### Apache Camel - CVE-2016-8749

Red5 IO AMF (AMF)

攻击原理

Payload 生成器

被黑掉的应用(without public sploits/need more info): ##### Apache OpenMeetings - CVE-2017-5878

Apache Flex BlazeDS (AMF)

攻击原理

Payload 生成器

被黑掉的应用(without public sploits/need more info): ##### Adobe ColdFusion - CVE-2017-3066 - <= 2016 Update 3 - <= 11 update 11 - <= 10 Update 22

Apache BlazeDS
VMWare VCenter

Flamingo AMF (AMF)

攻击原理

GraniteDS (AMF)

攻击原理

WebORB for Java (AMF)

攻击原理

SnakeYAML (YAML)

攻击原理

Payload 生成器

被黑掉的应用(without public sploits/need more info): ##### Resteasy - CVE-2016-9606

Apache Camel
Apache Brooklyn

jYAML (YAML)

攻击原理

Payload 生成器

YamlBeans (YAML)

攻击原理

Payload 生成器

"Safe" deserialization

一些序列化库是安全的(或几乎安全https://github.com/mbechler/marshalsec

但这不是官方建议,而是由一个安全研究员提出的建议列表:

  • JAXB
  • XmlBeans
  • Jibx
  • ProtobufGSON
  • GWT-RPC