背景
原理
使用
技术要点
实战使用
其他
背景
笔者近日看到了这样一篇文章:那些年我们堵住的洞 – OpenRASP纪实
想到rasp这类工具是基于java、php运行期的堆栈信息进行分析,可以尝试使用jni技术进行绕过。java技术栈中的jni的原理是使用java调用c、c++函数,具体实现的思路是jsp编译为class文件,该class通过jni技术调用另外一处dll里的函数绕过黑名单执行命令获取回显,即可实现rasp和安全防护软件的绕过。github地址:https://github.com/nanolikeyou/jniwebshell
原理使用
以我们要实现的jsp webshell命名为test.jsp为例。由于jni技术需要先通过javah+.class文件生成.h开头的c头文件,jsp是一种特殊的class文件,而jsp经过Tomcat编译class文件,命名遵从test.jsp ->> org.apache.jsp.test_jsp.class,所以我们需要新建package为org.apache.jsp,类名为test_jsp的.java文件。
package org.apache.jsp;
public class test_jsp
{
class JniClass
{
public native String exec( String string );
}
}
cd到编译生成的target/class目录,使用javah org.apache.jsp.tes