S2-029
前言
S2-029漏洞是由于Struts2的i18n、text标签中的name属性的值会经过两次Ognl表达式解析。
正文
假设有如下缺陷代码:

jsp文件中使用Struts2的i18n标签获取请求中的参数“jinqi”,放入了attribute中。struts2的i18n标签中的name属性通过%{}的形式读取该参数值后将该值当作ognl表达式处理(这是第一次ognl表达式处理,这是因为struts2的标签中本来就是通过OgnlValueStack值栈来取值的)。
访问http://localhost:8088/struts2-showcase-2.1.6/S2-029.jsp?jinqi=aaaa,在I18n.class的start方法中打断点停下来看看:

跟进findString方法中:


TextParseUtil.translateVariables这个方法我们之前分析过,就是将expr中%{}里面的字符串当作ongl表达式解析,此时%{}里面包含的字符串是#request.jinqi,也就是说读取request对象中的jinqi属性,而jinqi属性的值在上面是我们可控的,此时是aaaa,回到I18n.class的start方法中:

可以看到,此时获取的name就是aaaa,然后用作字符串拼凑后,放入了findValue方法中,跟进该方法:

很明显,调用了OgnlValueStack.findValue(),我们知道这个方法里面也是将输入的参数当作了Ognl表达式执行,此时的参数expr是getTexts('aaaa'),由于aaaa是受我们控制的,且该参数值是直接通过字符串拼凑的,我们只需要将字符串前半部分
getTexts(' 和后半部分 ') 闭合掉就好了,中间接我们的poc就好了。
本地windows测试用的弹计数器的poc(get请求,所以用的url编码):%27)%2c%23cmd%3d%27calc%27%2c%23cmds%3d%7b%27cmd.exe%27%2c%27%2fc%27%2c%23cmd%7d%2c%23p%3dnew+java.lang.ProcessBuilder(%23cmds)%2c%23process%3d%23p.start()%2cnew+java.lang.String(%27

总结
本来还想整个有回显的poc出来的,但是一直没成功,后来想想这个漏洞利用起来较为麻烦,难以批量,于是就放弃了,这个漏洞就当了解算了。
S2-029的更多相关文章
- s2 devMode cmdshell
s2 devMode cmdshell 仅支持批量验证,命令执行 链接:http://pan.baidu.com/s/1sl7tgRV 密码:wud8 也可以通过outscan一键获取,之后导入t ...
- 电源相关知识—S0、S1(POS)、S2、S3(STR)、 S4、S5、睡眠、休眠、待机
转 http://blog.sina.com.cn/s/blog_52f28dde0100l3ci.html APM https://en.wikipedia.org/wiki/Advanced_Po ...
- 判断s2是否能够被通过s1做循环移位(rotate)得到的字符串是否包含
问题:给定两个字符串s1和s2,要求判断s2是否能够被通过s1做循环移位(rotate)得到的字符串包含.例如,S1=AABCD和s2=CDAA,返回true:给定s1=ABCD和s2=ACBD,返回 ...
- S2 易买网总结
易买网项目总结 --指导老师:原玉明 不知不觉,又到了S2结业的时间了,S1的项目KTV项目还历历在目.一路走来,感觉时间过的好快,我们离就业也越来越近... 展示: 1.主页面(首页) 01.商品分 ...
- 445. Add Two Numbers II ——while s1 or s2 or carry 题目再简单也要些测试用例
You are given two linked lists representing two non-negative numbers. The most significant digit com ...
- php大力力 [029节] 做PHP项目如何下载js文件:使用腾讯浏览器把网上案例页面存储到本地
php大力力 [029节] 做PHP项目如何下载js文件:使用腾讯浏览器把网上案例页面存储到本地 yeah,搞定啦 php大力力 [029节] 做PHP项目如何下载js文件:使用腾讯浏览器把网上案例页 ...
- 写一个函数,实现两个字符串的比较。即实现strcmp函数,s1=s2时返回0,s1!=s2时返回二者第一个不同字符的ASCII值。
#include<stdio.h> #include<stdlib.h> int main(){ setvbuf(stdout,NULL,_IONBF,); ],s2[]; i ...
- ACPI电源管理中的S0 S1 S2 S3 S4 S5
电源选项中S0,S1,S2,S3,S4,S5的含义以 ACPI 的规格来说吧!ACPI(Advanced Configuration and Power Interface),即高级配置与电源接口.这 ...
- S2第一本书内测
<深入.NET平台和C#编程>内部测试题-笔试试卷 一 选择题 1) 以下关于序列化和反序列化的描述错误的是( C). a) 序列化是将对象的状态存储到特定存储介质中的过程 b) 二进制格 ...
- 动态规划:给出两个字符串s1和s2,返回其中最大的公共子串
求公共子字符串问题(连续的) 这个题目是当时远景能源公司现场笔试的一道题目,当时根本就不知道动态规划是什么鬼,直接上来就暴力求解,面试官很谄媚的问我,你这能求出来吗?当时很年轻的说,能啊!现在想,当时 ...
随机推荐
- flutter编译ios的时候需要进行的操作:
pod install 执行这个命令,安装依赖
- 5.7版本mysql查询报错:com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:...this is incompatible with sql_mode=only_full_group_by
先瞧下日志: ### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException ...
- java如何压缩多个文件到压缩包,并下载到浏览器?
java压缩多个文件到压缩包,并下载到浏览器 解决方法: 完整的方法如下,很简单,亲试有效,极力推荐. 我是以流作为文件,而不是file,循环把所有pdf文件压缩到pdf.zip压缩包中. 1.前 ...
- Qt编写自定义控件52-颜色下拉框
一.前言 这个控件写了很久了,元老级别的控件之一,开发之初主要是自己的好几个项目要用到,比如提供一个颜色下拉框设置对应的曲线或者时间颜色,视频监控项目中经常用到的OSD标签设置,这个控件的难度系数接近 ...
- 123457123457#1#-----com.threeapp.ErTongHuaXue01----儿童滑雪大冒险
123456123456#0#-----com.threeapp.ErTongHuaXue01----儿童滑雪大冒险
- SringCloud学习成长之路 八 消息总线
Spring Cloud Bus 将分布式的节点用轻量的消息代理连接起来.它可以用于广播配置文件的更改或者服务之间的通讯,也可以用于监控.本文要讲述的是用Spring Cloud Bus实现通知微服务 ...
- Windows 7下安装MySQL Server卡在Apply Security Settings的解决方案(转)
如果操作无效,请卸载MySQL Server后换一个位置安装 例如默认的是C:\Program Files\MySQL 安装时选Custom修改到D:\Program Files\MySQL试试 == ...
- Bugly——Xuporter问题处理
Unity接入Bugly 用其原生的package文件导入,结果在Ios打包时报错,找不到相对应的库. 经过排查: 这个地方如果不加拦截的话,项目中所有的 .projmods文件都会按照xupor ...
- 分布式消息通信之RabbitMQ_Note
目录 1. RabbitMQ 安装 2. RabbitMQ 应用场景,特性 3. 官网入门指引 4. RabbitMQ 工作模型 5. RabbitMQ 主要的几种交换机类型 6. Java API的 ...
- 三节课MINI计划第三周
第一部分 微信读书的产品分析 一.任务背景 二.做什么 三.TASK8 业务流程图 四.TASK9 五.周会 六.周报