Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

l3yx/Java-RASP-Research-Env

Repository files navigation

之前研究Java RASP原理和绕过时写了这个Docker项目,主要是为了方便启动带有RASP的Java漏洞环境还有进行各种调试分析。Java Web包含nashorn和groovy代码执行漏洞。RASP包含 jrasp 1.1.5 和 openrasp 1.3.7

启动无RASP的Java Web环境

docker compose -f docker-compose-app.yml up --build

image-20241013104932019

启动带有openrasp的Java Web环境

docker compose -f docker-compose-openrasp.yml up --build

配置文件在./volumes/openrasp/official.js,已经略作修改。原始配置文件在./volumes/openrasp/official-raw.js

image-20241013105457952

标准输出已经对openrasp的拦截日志做了处理和展示,可以直接看到格式化后的拦截日志和堆栈:

image-20241013105419925

启动带有jrasp的Java Web环境

docker compose -f docker-compose-jrasp.yml up --build

PS. 启动需要等待一分钟左右,jrasp才会注入进程

配置文件在./volumes/jrasp/config.json

image-20241013110426095

标准输出已经对jrasp的拦截日志做了处理和展示,可以直接看到格式化后的拦截日志和堆栈

image-20241013110453669

也可以进入后台看日志:

image-20241013110759679

Dump Class

众所周知目前Java RASP实现原理之一就是通过Instrumentation API修改Java字节码以达到Hook的目的,那么想知道被RASP Hook之后的类是怎样的,最方便莫过于动态Dump出来:

进入jrasp-app容器/opt目录,运行以下命令即可Dump UNIXProcess类,会保存在./volumes/jrasp/data目录

bash dumpclass.sh java.lang.UNIXProcess

image-20241013112030882

这里也可以看出jrasp是通过setNativeMethodPrefix给原本的forkAndExec加了前缀,然后自己实现了一个forkAndExec以达到Hook的目的:

image-20241013112335834

About

之前方便自己研究RASP原理和绕过时顺手写的,用于快速启动和重置RASP环境

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

Contributors

Languages

AltStyle によって変換されたページ (->オリジナル) /