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

网站建设运营规划方案网站建设收益分析

网站建设运营规划方案,网站建设收益分析,wordpress 访客统计插件,上海门户网站论坛漏洞描述 Spring Kafka 是 Spring Framework 生态系统中的一个模块#xff0c;用于简化在 Spring 应用程序中集成 Apache Kafka 的过程#xff0c;记录 (record) 指 Kafka 消息中的一条记录。 受影响版本中默认未对记录配置 ErrorHandlingDeserializer#xff0c;当用户将容… 漏洞描述 Spring Kafka 是 Spring Framework 生态系统中的一个模块用于简化在 Spring 应用程序中集成 Apache Kafka 的过程记录 (record) 指 Kafka 消息中的一条记录。 受影响版本中默认未对记录配置 ErrorHandlingDeserializer当用户将容器属性 checkDeserExWhenKeyNull 或 checkDeserExWhenValueNull 设置为 true(默认为 false)并且允许不受信任的源发布到 Kafka 主题中时攻击者可将恶意 payload 注入到 Kafka 主题中当反序列化记录头时远程执行任意代码。 影响版本 2.8.1 Spring-Kafka 2.9.10 3.0.0 Spring-Kafka 3.0.9 漏洞复现 这一个漏洞所影响的组件其实是 Spring-Kafka严格意义上来说并不算是 kafka 的漏洞应该算是 Spring 的漏洞。 漏洞前置知识 先来看一看 SpringBoot 和 Kafka 是怎么完成通讯/消费的 工作流程如下 1、生产者将消息发送到 Kafka 集群中的某个 Broker也可以是多个 2、Kafka 集群将消息存储在一个或多个分区中并为每个分区维护一个偏移量 3、消费者订阅一个或多个主题并从 Kafka 集群中读取消息。4、消费者按顺序读取每个分区中的消息并跟踪每个分区的偏移量。 • ErrorHandlingDeserializer是 Kafka中的一种反序列化器Deserializer它可以在反序列化过程中处理异常和错误。• checkDeserExWhenKeyNull checkDeserExWhenValueNull是 Kafka 中的一种序列化器Serializer它可以在序列化过程中检查键key/value是否为 null并在发现值为 null 时抛出异常。 再简单整理一下漏洞条件 在受到影响的版本中默认未对记录配置 ErrorHandlingDeserializer 容器属性 checkDeserExWhenKeyNull 或 checkDeserExWhenValueNull 设置为 true 环境搭建 其中需要我们起一个 Kafka 的服务用来接收消息本机上起比较麻烦可以在 vps 上用 docker 迅速搭建且需注意Kafka 要能够接受外连docker-compose.yml 如下 version: 2services:zookeeper:image: zookeeperrestart: alwaysports:- 2181:2181container_name: zookeeperkafka:image: wurstmeister/kafkarestart: alwaysports:- 9092:9092- 9094:9094depends_on:- zookeeperenvironment:KAFKA_ADVERTISED_HOST_NAME: 124.222.21.138KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9092,SSL://0.0.0.0:9094KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://124.222.21.138:9092,SSL://124.222.21.138:9094KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,SSL:SSLKAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXTcontainer_name: kafka Spring Kafka 的生产者和消费者可以通过使用 Spring Kafka 提供的 KafkaTemplate 和 KafkaListener 注解来编写。 生产者可以使用 KafkaTemplate 来发送消息到 Kafka 集群 package com.drunkbaby.springkafkatest.controller;  import com.drunkbaby.springkafkatest.common.KafkaInfo;   import org.springframework.beans.factory.annotation.Autowired;   import org.springframework.kafka.core.KafkaTemplate;   import org.springframework.kafka.support.SendResult;   import org.springframework.util.concurrent.ListenableFuture;   import org.springframework.web.bind.annotation.PostMapping;   import org.springframework.web.bind.annotation.RequestMapping;   import org.springframework.web.bind.annotation.RestController;  import java.time.LocalDateTime;   import java.util.concurrent.ExecutionException;  RestController   RequestMapping(/producer)   public class ProducerController {  Autowired  private KafkaTemplateString,String kafkaTemplate;  PostMapping(/fireAndForget)  public String fireAndForget() {  kafkaTemplate.send(KafkaInfo.TOPIC_WELCOME, fireAndForget:  LocalDateTime.now());  return success;  }   } 消费者可以使用 KafkaListener 注解来监听 Kafka 集群中的消息 package com.drunkbaby.springkafkatest.consumer;  import com.drunkbaby.springkafkatest.common.KafkaInfo;   import org.springframework.kafka.annotation.KafkaListener;   import org.springframework.messaging.MessageHeaders;   import org.springframework.messaging.handler.annotation.Headers;   import org.springframework.messaging.handler.annotation.Payload;   import org.springframework.stereotype.Component;  Component   public class Consumer {  KafkaListener(topics  KafkaInfo.TOPIC_WELCOME)  public String consumer2(Payload String message, Headers MessageHeaders headers) {  System.out.println(消费者(注解方式)收到消息 );  System.out.println(  message  message);  System.out.println(  headers:);  headers.keySet().forEach(key - System.out.println(      key  :  headers.get(key)));  return success;  } 连接成功 访问 http://localhost:8083/producer/sync 发送一条记录 构造 payload 实际影响到的是 Consumer且 Consumer 要设置 checkDeserExWhenKeyNull 或 checkDeserExWhenValueNull 为 true ConcurrentKafkaListenerContainerFactoryString, Greeting factory  new ConcurrentKafkaListenerContainerFactory();   factory.getContainerProperties().setCheckDeserExWhenValueNull(true);   factory.getContainerProperties().setCheckDeserExWhenKeyNull(true); payload 参考 https://github.com/Contrast-Security-OSS/Spring-Kafka-POC-CVE-2023-34040 漏洞分析 主要是来看反序列化的部分 断点会先走到 org.springframework.kafka.listener.ListenerUtils#getExceptionFromHeader 方法它这里面会获取到 PoC 中的 KEY_DESERIALIZER_EXCEPTION_HEADER并将其作为 headers 往下跟进 byteArrayToDeserializationException() 方法这里就直接到反序列化的部分了而在反序列化之前做了一次 resolveClass() 的校验。 而这里的 resolveClass() 校验是一次性的这就代表我们可以构造其他的 Payload如 CC 链等证实是可以打通的 之后便会进入到对应类的 readObject() 方法 漏洞修复 https://github.com/spring-projects/spring-kafka/commit/25ac793a78725e2ca4a3a2888a1506a4bfcf0c9d 相当于把这里的 header 头加黑了 原创稿件征集 征集原创技术文章中欢迎投递 投稿邮箱eduantvsion.com 文章类型黑客极客技术、信息安全热点安全研究分析等安全相关 通过审核并发布能收获200-800元不等的稿酬。 更多详情点我查看 靶场实操体验戳“阅读原文”
http://www.yutouwan.com/news/294085/

相关文章:

  • 网站自己做余额充值自动扣款wordpress 允许ping
  • asp网站开发视频昆明好的网站开发公司
  • 南阳移动端网站制作cms建站方案
  • 三端互通传奇手游找服网站长春网站设计策划书
  • 河南省建设监理协会官网站无货源电商怎么做新手入门
  • 新建的网站可以百度推广wordpress关闭多版本
  • 关于做女装的网站软件开发专业用什么笔记本
  • 重庆免费公司建网站wordpress 缓存插件
  • 免费企业网站建设word网站建设终身不用维护
  • 简单三栏网站WordPress 教育模板
  • 国内网站域名吗谷歌推广公司
  • 网站首选域301如何做网站的构成要素
  • 培训学校网站普同网站跟营销型网站的区别
  • 单页网站 html5 动态免费网络咨询免费建站
  • cms系统网络推广seo教程
  • 物流企业网站源码5个搜索引擎作弊的网站
  • 小公司做网站推广好不好设计网页英语
  • 空间类网站价格网站建设 成都
  • 二手车网站怎么做的排版设计英文
  • wordpress搭建外贸网站开发软件价格
  • 网站制作公司的swot分析南通wap网站建设
  • 林和西网站建设网站开发后端书籍
  • 龙岗网站建设价位哈尔滨设计网站建设
  • 微网站公司大讲堂123专注网站模板制作
  • 专业彩票网站建设让人做网站 需要准备什么软件
  • 建站网站加盟做电影网站用什么虚拟主机
  • 电子商务网站建设与管理教案asp网站建设公司
  • 做网站如何与网络公司沟通wordpress 7z压缩
  • 玉林网站建设培训湖南网络大课堂
  • 乐陵seo排名网站怎样做优化