6
6
import java .net .URI ;
7
7
import java .net .URL ;
8
8
import java .net .URLClassLoader ;
9
+ import java .net .URLStreamHandlerFactory ;
9
10
10
11
public class URLClassLoaderSSRF extends HttpServlet {
11
12
@@ -39,7 +40,7 @@ protected void doPut(HttpServletRequest request, HttpServletResponse response)
39
40
String url = request .getParameter ("uri" );
40
41
URI uri = new URI (url );
41
42
42
- URLStreamHandlerFactory urlStreamHandlerFactory = TomcatURLStreamHandlerFactory . getInstance () ;
43
+ URLStreamHandlerFactory urlStreamHandlerFactory = null ;
43
44
URLClassLoader urlClassLoader = new URLClassLoader (new URL []{uri .toURL ()}, URLClassLoaderSSRF .class .getClassLoader (), urlStreamHandlerFactory ); // $ SSRF
44
45
urlClassLoader .findResource ("test" );
45
46
} catch (Exception e ) {
@@ -64,11 +65,11 @@ protected void doOptions(HttpServletRequest request, HttpServletResponse respons
64
65
try {
65
66
String url = request .getParameter ("uri" );
66
67
URI uri = new URI (url );
67
- URLClassLoader urlClassLoader =
68
- new URLClassLoader ("testClassLoader" ,
69
- new URL []{new URL []{ uri .toURL ()}},
68
+ URLClassLoader urlClassLoader =
69
+ new URLClassLoader ("testClassLoader" ,
70
+ new URL []{uri .toURL ()}, // $ SSRF
70
71
URLClassLoaderSSRF .class .getClassLoader ()
71
- ); // $ SSRF
72
+ );
72
73
73
74
Class <?> rceTest = urlClassLoader .loadClass ("RCETest" );
74
75
} catch (Exception e ) {
@@ -81,14 +82,14 @@ protected void doTrace(HttpServletRequest request, HttpServletResponse response)
81
82
try {
82
83
String url = request .getParameter ("uri" );
83
84
URI uri = new URI (url );
84
- URLStreamHandlerFactory urlStreamHandlerFactory = TomcatURLStreamHandlerFactory . getInstance () ;
85
+ URLStreamHandlerFactory urlStreamHandlerFactory = null ;
85
86
86
87
URLClassLoader urlClassLoader =
87
88
new URLClassLoader ("testClassLoader" ,
88
- new URL []{uri .toURL ()},
89
- URLClassLoaderSSRF .class .getClassLoader (),
89
+ new URL []{uri .toURL ()}, // $ SSRF
90
+ URLClassLoaderSSRF .class .getClassLoader (),
90
91
urlStreamHandlerFactory
91
- ); // $ SSRF
92
+ );
92
93
93
94
Class <?> rceTest = urlClassLoader .loadClass ("RCETest" );
94
95
} catch (Exception e ) {
0 commit comments