目录
漏洞原理
S2-057漏洞产生于网站配置
xml
的时候,有一个
namespace
的值,该值并没有做详细的安全过滤导致可以写 入到XML
上,尤其
url标签值也没有做通配符的过滤,导致可以执行远程代码,以及系统命令执行。
S2-057 先决条件 :
alwaysSelectFullNamespace值为true
,
action
元素未设置 namespace 属性,或使用了通配符
用户将从 uri 传递命名空间,并将其解析为 OGNL 表达式,最终导致远程代码执行漏洞。
影响版本
Struts2 <= 2.3.34 ;Struts2 = 2.5.16
漏洞复现
进入
cd /vulhub/struts2/s2-057
启动环境
docker-compose up -d
环境启动后,访问
http://your
-
ip:8080/showcase/
,即可看到
Struts2
的测试页面。
xxxx:8080/showcase//struts2-showcase/${(1+12)}/actionChain1.action
可以看到中间数字位置相加了 , 说明我们中间的表达式正确的执行了 , 那么我们可以构建可以执行系统命令的表达式进行rce