Tongda OA (Интеллектуальная офисная система Office Anywhere Network) — это программное обеспечение для автоматизации офиса для совместной работы, независимо разработанное компанией Beijing Tongda Xinke Technology Co., Ltd. Это комплексная офисная платформа управления, сочетающая в себе китайскую практику управления предприятием. 13 марта Tongda OA объявила на официальном форуме, что недавно получила отзывы пользователей о том, что она подверглась атаке вируса-вымогателя. Злоумышленники создавали вредоносные запросы, загружали вредоносные файлы, такие как веб-шеллы, и зашифровывали файлы на атакуемых серверах. вымогать крупные суммы денег. Анонимный денежный выкуп. Автор долгое время занимается исследованием бинарных уязвимостей. Цель написания этой статьи — изучить методы исследования веб-уязвимостей и использовать эту уязвимость в качестве практики для углубления понимания технологии эксплуатации веб-уязвимостей и ее фиксации. .
Данные показывают, что эта уязвимость имеет широкое воздействие и затронуты следующие версии: V11, 2017, 2016, 2015, расширенная версия 2013 и 2013.
Для удобства воспроизведения в данной статье загружается и используется версия Tongda OA V11.3. Ссылка для скачивания:
https://pan.baidu.com/s/1QFAoLxj9pD1bnnq3f4I8lg Код извлечения:ousi
После установки Tongda OA v11.3 найдите исходный код в корневом каталоге веб-сайта после установки. Проверьте исходный код и обнаружите, что он весь искажен, зашифрован и требует расшифровки. Инструмент расшифровки может использовать SeayDzend, поскольку исходный код написан на PHP. Самый простой способ — использовать инструмент аудита исходного кода seay для грубого поиска потенциальных лазеек. Аудит кода занимает много времени, а результаты аудита просто. короткий абзац в начале, объясняющий идею. Как показано на рисунке 1:
Рисунок 1. Аудит кода
Согласно общедоступной информации в Интернете, непосредственно найдите путь исходного кода C:\phpStudy\WWW\tongdaoa\webroot\ispirit\im\upload.php и просмотрите исходный код, как показано на рисунке 2:
Рисунок 2. Исходный код уязвимости загрузки файла upload.php.
Для части черного ящика этого исходного кода передается параметр p. Когда параметр p не пуст, происходит вход на страницу сеанса, в противном случае — на страницу аутентификации. Уязвимость здесь вполне очевидна. Пока параметр p непустой, аутентификацию можно обойти. Продолжайте читать этот код, чтобы загружать файлы сразу после обхода аутентификации. Как показано на рисунке 3:
Рисунок 3: Загрузка файла
Следуя методу загрузки inc\utility_file.php, мы обнаружили, что существует функция проверки имени файла is_uploadable. Глядя на логику кода этой функции, если последние три позиции имени файла — «php», то возвращается false, то есть файлы, заканчивающиеся на php, не могут быть загружены. Обратитесь к исходному коду, там тоже много способов обойти черный список, пропустите его. Исходный код показан на рисунке 4:
Рисунок 4. Черный список имен файлов.
Для справки: этот файл содержит уязвимость, существующую в исходном коде ispirit/interface/gateway.php. Просмотрите исходный код здесь, как показано на рисунке 5:
Рисунок 5. Файл содержит уязвимый код.
Проанализируйте json с помощью цикла foreach. Если ключ и URL-адрес равны, затем получите URL-адрес и определите, является ли URL-адрес пустым и URL-адрес содержит общие/, ispirit/, модуль/, вызовите функцию include_once. Представьте себе, что если URL-адрес имеет тип ../../, после выполнения включения файла мы можем получить доступ к файлам, которые мы загрузили ранее. Один ../ перемещается в верхний каталог, а два ../ просто перемещаются. вернуться в каталог установки tongdaoa, за которым следует каталог ранее загруженных файлов. Ключ к уязвимости здесь заключается в создании URL-адреса.
Тестовый хост: Win10 x64, английский
Тонгда ОА 11.3
Программное обеспечение для захвата пакетов: Burpsuite v1.737.
БраузерFirefox 41.0
Ниже мы воспроизводим две уязвимости соответственно.
Прочитав исходный код upload.php, для воспроизведения уязвимости необходимо выполнить следующие условия:
(1) Параметр p не пуст; (2) DEST_UID не пуст и представляет собой число; (3) UPLOAD_MODE — 1, 2 или 3; (4) Имя файла вложения не может быть php;
Создайте файл для загрузки полезных данных1, как показано на рисунке 6:
Рисунок 6. Полезная нагрузка1 для загрузки файла.
Используйте Burpsuite для захвата пакета, измените текущую полезную нагрузку на payload1 и воспроизведите ее. Файл успешно загружен. Как показано на рисунке 7:
Рисунок 7: Воспроизведение загрузки файла
Загруженный файл сохраняется в каталоге c:\phpstudy/www/tongdaoa/attach/im/2005/, как показано на рисунке 8:
Рисунок 8. Загрузка прошла успешно.
Убедитесь, что загрузка файла прошла успешно. В настоящее время возникла проблема: загруженный файл не находится в корневом веб-каталоге и к нему невозможно получить удаленный доступ. Это необходимо для взаимодействия с другой уязвимостью — уязвимостью включения файла для завершения обхода пути и доступа к загруженному файлу.
Согласно предыдущему анализу кода, основная цель — создать полезную нагрузку URL-адреса. Предположим, вы посещаете http://localhost/ispirit/interface/gateway.php, используете BurpSuite для перехвата пакета и отправки его на ретранслятор. Созданный файл содержит полезную нагрузку2 уязвимости. Обратите внимание на две вещи в полезной нагрузке2. Тип контента: application/x-www-form-urlencoded, второй — структура URL-адреса в формате JSON. Как показано на рисунке 9, уязвимость включения файла была успешно реализована.
Рисунок 9. Воспроизведение уязвимости включения файлов.
Обе уязвимости используются вместе для удаленного получения оболочки. Заранее подготовьте PHP-трояны и инструменты удаленной оболочки, такие как Ice Skorpion. Идея: использовать уязвимость загрузки файла для загрузки PHP-трояна, а затем использовать уязвимость включения файла, чтобы разрешить Интернету доступ к файлу PHP, а затем использовать Ice Scorpion для подключения. (Примечание: это не может быть непосредственно .php. Согласно результатам анализа кода, файлы, заканчивающиеся на php, не могут быть загружены.) Как показано на рисунке 10:
Рис. 10. Получение оболочки, шаг 1.
Файл был найден в папке «C:\phpStudy\WWW\tongdaoa\attach\im\2005», и загрузка прошла успешно. Как показано на рисунке 11:
Рисунок 11. Загрузка прошла успешно.
Затем получите доступ к только что загруженному файлу 2125745527.test.php через уязвимость включения файла. Как показано на рисунке 12:
Рисунок 12: Доступ к загруженным файлам
После успешного доступа файл readme.php будет создан в каталоге \ispirit\interface\. Используйте веб-оболочку Ice Skorpion для подключения и успешного получения оболочки. Как показано на рисунке 13:
Рисунок 13: Успешно получена оболочка Shell1.
Рисунок 14. Shell2 успешно получен.
Последнее, что осталось — это создать эксплойт. В Интернете доступно множество программ удаленного эксплойта для этой уязвимости, которые вы можете использовать для тестирования.
Автор с целью обучения скачал патч Tongda OAv11.3 и сравнил патчи. Результаты сравнения следующие:
Первый патч устраняет уязвимость загрузки файлов и требует аутентификации независимо от того, пуст параметр или нет. Как показано на рисунке 15:
Рисунок 15: Первый патч
Второй патч отфильтровывает «..». Если этот символ появляется в URL-адресе, это считается неправильным URL-адресом. Таким образом, обход пути не может быть выполнен, и файлы в каталогах, не являющихся корневыми, не могут быть доступны. Как показано на рисунке 16:
Рисунок 16: Второй патч.
Пользователям Tongda OA, использующим уязвимую версию, рекомендуется войти на официальный сайт Tongda OA, чтобы получить последние исправления. Пожалуйста, выберите соответствующий программный файл в соответствии с текущей версией OA и сделайте резервную копию перед запуском. Адрес загрузки обновлений безопасности: http://www.tongda2000.com/news/673.php.
В этой статье описан только процесс анализа и использования уязвимости Tongda OA. Если есть какие-либо некорректные моменты, попросите экспертов их исправить. С точки зрения обратного мышления, как мы можем самостоятельно обнаружить этот тип уязвимостей, быстро сформулировать идеи использования и построить эксплойт. Именно на этом автор хочет сосредоточиться при последующем углубленном изучении веб-уязвимостей. Если есть эксперты, имеющие опыт аудита кода или заинтересованные в аудите кода и желающие учиться вместе, свяжитесь с нами на сайте, и мы сможем добиться прогресса вместе!
https://www.cnblogs.com/yuyan-sec/p/12549237.html
*Автор статьи: elvadisas, укажите источник перепечатки с FreeBuf.COM.
Замечательная рекомендация