Java利用技巧—通过jsp加载Shellcode

网站建设3年前发布
25 0 0

本文基于rebeyond的《Java内存攻击技术漫谈》,以Tomcat环境为例,介绍通过jsp加载Shellcode的方法,开源代码,记录细节。,本文将要介绍以下内容:,依赖tools.jar加载Shellcode;,自定义类加载Shellcode;,通过enqueue函数加载Shellcode,测试代码:,注:,代码修改自《Java内存攻击技术漫谈》。,字节数组buf的生成方法:,long hProcess=-1;表示注入当前Java进程。,直接执行会报错提示ClassNotFoundException: sun.tools.attach.WindowsVirtualMachine,这里需要添加引用tools.jar,默认位置为< jdk >\lib\tools.jar。,测试环境为Tomcat;,将以上代码改写成jsp的格式,执行时同样会报错ClassNotFoundException: sun.tools.attach.WindowsVirtualMachine。,这里可以改为使用URLClassLoader引用tools.jar。,原代码:,替换为:,完整的jsp代码如下:,自定义sun.tools.attach.WindowsVirtualMachine类,实现enqueue函数加载Shellcode。为了避免与系统中的tools.jar冲突,通过自定义classLoader,使用defineClass创建类,调用enqueue函数加载Shellcode。,具体步骤如下:,在使用cs创建Shellcode时,输出的Shellcode格式如下:,在Java中使用以上代码会报错,需要指定字符数组每个元素的格式,正确的格式如下:,为了格式友好,可以将字节数组buf的每个元素转换成String格式,Java实现代码如下:,执行后输出结果为:,示例代码:,Java示例代码:,命令行输出Base64编码。,Java示例代码:,测试环境为Tomcat;,示例代码:,弹出计算器的操作会导致Java进程崩溃,换成其他Shellcode会避免这个问题。,本文基于rebeyond的《Java内存攻击技术漫谈》,以Tomcat环境为例,实现了通过jsp加载Shellcode。

© 版权声明

相关文章