本文仅限技术研究与讨论,严禁用于非法用途,否则产生的一切后果自行承担
事情起因
用靶场熟悉下Struts2的漏洞利用工具
注意:单纯的使用工具不能加深对漏洞的理解,熟悉漏洞原理才是重点
工具列举
HatBoy大佬的Struts2-Scan,以扫描某S2-001靶场为例:
鬼哥struts2(CVE-2013-2251)漏洞检测工具(90sec.org),同样以某S2-001靶场为例:
Lucifer1993写的struts-scan,windows下运行乱码,以某S2-004靶场为例:
K8团队的K8_Struts2_EXP,这里以某S2-005靶场为例:
K8团队的工具解压密码为k8gege、k8team、K8team中的其中一个
天融信的工具,这里以某S2-005靶场为例:
lz520520大佬的工具railgun,这里以某``靶场为例:
最常见到的Srtuts2 漏洞检查工具2018版 V2.0 by 安恒应急响应中心 20180824,这里以某``靶场为例:
S2-001
漏洞原因:该漏洞因为用户提交表单数据并且验证失败时,后端会将用户之前提交的参数值使用 OGNL 表达式 %{value} 进行解析,然后重新填充到对应的表单数据中。例如注册或登录页面,提交失败后端一般会默认返回之前提交的数据,由于后端使用 %{value} 对提交的数据执行了一次 OGNL 表达式解析,所以可以直接构造 Payload 进行命令执行
靶场正常样子:
在password地方输入%{1+1},点击登陆,发现报错返回解析成了2,证明漏洞存在
获取tomcat执行路径:%{"tomcatBinDir{"+@java.lang.System@getProperty("user.dir")+"}"}
获取Web路径:%{#req=@org.ap