Struts2-Scan icon indicating copy to clipboard operation
Struts2-Scan copied to clipboard

Struts2全漏洞扫描利用工具

Results 30 Struts2-Scan issues
Sort by recently updated
recently updated
newest added

1497行 if name not in s2_list: 应改为 if name not in s2_dict:

提示有s2-057但是 [ERROR] 暂不支持S2_057漏洞利用 去掉判断后提示 无可用Payload!

感觉判单检查出漏洞的条件太简单了,通过是否有返回和返回是否存在ERROR来判断的,误判率极高。 在实际的情况中,如果对GET提交的参数进行过滤,会返回正常的页面,此时就会产生对漏洞误报,这是很不科学的。 举个例子,我随便使用一个能够提交GET请求的网址http://39.98.177.186:8088/Less-1/id=1,结果便返回了存在012,015,009三个漏洞,很显然目标站点是不存在struts漏洞的。 希望能在判断检测出漏洞的条件上进行完善。

1501行 ` s.check() ` 前面没有判断是否为052,导致报错. `[ERROR] 'S2_052' object has no attribute 'check'`

看工具判断逻辑是让服务器 echo 一个 哈希字符,看返回值是否有这个字符串来判断是否存在。 实际情况发现,目标可能出现 404 报错,把 poc 吐回来: message XXXXXXXXX.TEST&key=(%23context[%22xwork.MethodAccessor.denyMethodExecution%22]=+new+java.lang.Boolean(false),+%23_memberAccess[%22allowStaticMethodAccess%22]=true,+%[email protected]@getRuntime().exec(%27echo%205ee2994195febadcf54bb3c3f88f02b3%27).getInputStream(),%23b=new+java.io.InputStreamReader(%23a),%23c=new+java.io.BufferedReader(%23b),%23d=new+char[51020],%23c.read(%23d),%[email protected]@getResponse().getWriter(),%23kxlzx.println(%23d),%23kxlzx.close())(meh)&z[(key)(%27meh%27)] poc 被返回了: getRuntime().exec(%27echo%205ee2994195febadcf54bb3c3f88f02b3%27) 然后判断存在漏洞... 给加上一次判断吧

D:\Program Files\Struts2-Scan-master\Struts2Scan.py:1401: SyntaxWarning: invalid escape sequence '\ ' banner = """ D:\Python\Python312\Lib\site-packages\requests\__init__.py:109: RequestsDependencyWarning: urllib3 (2.2.2) or chardet (5.2.0)/charset_normalizer (3.3.2) doesn't match a supported version! warnings.warn(

替换1505行附近的代码为: name = name.upper().replace('-', '_') converted_name = name.upper().replace('-', '_') found = any(vuln_class.__name__ == converted_name for vuln_class in s2_list) if not found: click.secho("[ERROR] 暂不支持{name}漏洞利用".format(name=name), fg="red") exit(0)

第1502行if name not in s2_list:应改为if name not in s2_dict: 判断时检测的应是字符串,却变成了类 导致字符串与类相比较,判断不存在该漏洞