JAVA绕过RASP限制

admin 2025年5月26日20:53:47评论19 views字数 1361阅读4分32秒阅读模式

介绍:

RASP是一种安全技术,旨在通过在应用程序运行时实施保护机制来增强应用程序的安全性。它使得应用程序能够实时监控和防御潜在的攻击,而不依赖于外部的安全设备或控制措施。因为从 JDK 1.5 开始,Java 提供了一种动态代理机制,允许代理检测在 JVM 中运行的服务,通过插桩的方式修改方法的字节码,而 RASP 实际上就是通过 hook 系统的关键函数实现防护。

下面介绍两种 hook 函数机制。

java Agent

Java Agent 是一种特定于 Java 编程语言的工具,用于在 Java 虚拟机(JVM)启动时或运行中对 Java 应用程序进行监控、修改和增强。Java Agent 的功能主要依赖于 Java Instrumentation API,该 API 允许开发人员在字节码级别对 Java 类进行操作和修改。

Java Agent 的使用场景

1.

性能监控:通过跟踪方法调用、执行时间和资源使用情况,提高应用程序的性能分析能力。

2.

安全性增强:在方法调用过程中插入安全检查,确保访问控制和输入验证。

3.

日志记录和审计:自动捕捉方法入口、出口和异常信息,减少显式日志记录的需求。

4.

测试与调试:为测试工具提供支持,允许自定义行为的动态插入。

5.

静态分析:在类被加载时进行静态分析,提供编译时无法发现的错误和警告。

JAVA绕过RASP限制

attach 机制

该机制用于在 jvm 已经启动,但还需要对 jvm 中的类做一些修改。jdk1.6之后在Instrumentation中添加了一种agentmain的代理方法,可以在main函数执行之后再运行。

RASP绕过

1.WebShell通过底层类实现代码执行

1.

rasp会判断请求url是否为空来判断是否校验,判断条件需要一个环境上下文(请求线程)

我们只要开启一个新的线程,由子线程去调用

JAVA绕过RASP限制

Rasp判断并不是用户请求线程触发了hook函数,就会放行命令执行操作

但假如我们使用线程来执行命令

JAVA绕过RASP限制

 2. OpenRASP针对Java命令执行,只拦截到了java.lang.UNIXProcess.这一层,对更加底层的方法没有拦截

JAVA绕过RASP限制

所以构造Webshell时会放弃 上层的代码,选择底层未被Hook的代码进行绕过执行命令

JAVA绕过RASP限制

比较多的坑我直接贴入代码

JAVA绕过RASP限制

2.通过 JNI 绕过

JNI 实现

该图是实现JNI编程的具体路

JAVA绕过RASP限制

其实利用思路很简单就是利用 c 语言生成 dll 文件,然后利用 System.loadLibrar 来加载执行就行了。

本地实现 JNI

先编写写一个命令执行的 java 类

JAVA绕过RASP限制

然后利用 javac 生成 h 文件

JAVA绕过RASP限制

然后编写对应的 c 语言代码

JAVA绕过RASP限制

然后执行下面命令编写为 dll 文件,

Win:

JAVA绕过RASP限制

Linux:

JAVA绕过RASP限制

最后编写一个 java 类加载 dll 文件进行命令执行

JAVA绕过RASP限制

这样执行命令的时候就不是执行 Runtime 等方法了,可以绕过 RASP 了。

参考:https://cloud.tencent.com/developer/article/1958488

将恶意的对象打包为JAR包:

JAVA绕过RASP限制

配置好清单,然后调用工件构造

JAVA绕过RASP限制

参考文章:

https://www.freebuf.com/articles/web/337498.html

https://cloud.tencent.com/developer/article/1958488

java本地命令执行 - Longlone's Blog

原文始发于微信公众号(T3Ysec):JAVA绕过RASP限制

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年5月26日20:53:47
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   JAVA绕过RASP限制https://cn-sec.com/archives/4004050.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息