文章预览
什么是Struts2 Struts2是一个用Java编写的开源MVC Web应用框架,Struts也是一个中间件,它可以连接不同的系统和服务。 M是指业务模型,V是视图,C则是控制器(理解为请求接口,比如登录接口/login) Struts2默认的表达式解析语言是OGNL Struts2漏洞原理 攻击者可以通过构造恶意的HTTP请求,利用Struts 2框架的OGNL表达式注入漏洞,执行任意命令或代码。 Struts2 会对某些标签属性(比如 id) 的属性值进行二次表达式解析,因此当这些标签属性中使用了 %{A} 且 A 的值用户可控时,用户再传入一个 {payload}即可造成OGNL表达式执行。获得目标服务器的权限,实现远程代码执行攻击。 漏洞影响版本 Struts 2.0.0-2.5.25 什么是OGNL表达式 是Struts 2中用于查询和操作对象的表达式语言,它允许开发者直接访问对象属性和方法。 OGNL三要素 - Expression表达式 - root根对象、即操作对象
………………………………