-

   rss_rss_hh_new

 - e-mail

 

 -

 LiveInternet.ru:
: 17.03.2011
:
:
: 51

:


[ ] Java JAR-

, 11 2017 . 19:02 +
Linux- Java Bash . , bash script payload, .

binfmt_misc, magic number. update-binfmts .


Ubuntu 16.04 JAR :

update-binfmts --display
...
jar (enabled):
     package = openjdk-8
        type = magic
      offset = 0
       magic = PK\x03\x04
        mask = 
 interpreter = /usr/bin/jexec
    detector = 

chmod +x foo.bar , ./foo.jar :

invalid file (bad magic number): Exec format error

, bugs.java.com/bugdatabase/view_bug.do?bug_id=6401361 Maven 0xcafe JAR . maven-assembly-plugin. /usr/bin/jexec, .

, jarwrapper. /usr/bin/jarwrapper /usr/bin/jardetector ( META-INF JAR). , .

:

#!/bin/sh
#/usr/bin/jarinvoke

JAR=$1
shift

exec java -jar $JAR $@

sudo gedit /var/lib/binfmts/jar /usr/bin/jexec /usr/bin/jarinvoke. ( ), .

:

sudo update-binfmts --disable jar && sudo update-binfmts --enable jar

JAR .


Java , jarwrapper . (.. package ). , Java:

#!/bin/sh
# /usr/bin/clsinvoke

CLASS_FILE=$1
shift

ABSOLUTE_PATH=`readlink -f $CLASS_FILE`

CLASS=`basename $ABSOLUTE_PATH`
CLASS=${CLASS%.*}
CLASSPATH=`dirname $ABSOLUTE_PATH`

exec java -cp $CLASSPATH $CLASS $@

( JAR- /usr/bin/jexec):

sudo update-binfmts --package clsinvoke --install clsinvoke /usr/bin/clsinvoke --magic '\xca\xfe\xba\xbe'

:

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello, World");
    }
}

javac HellWorld.java
chmod +x HelloWorld.class
./HelloWorld.class
Hello, World

, , CLASSPATH ~/.m2, . , , , . deb .
Original source: habrahabr.ru (comments, light).

https://habrahabr.ru/post/332890/

:  

: [1] []
 

:
: 

: ( )

:

  URL