Panwei ecology9 ofsLogin.jsp Утечка информации и анализ уязвимостей внешнего входа в систему произвольного пользователя
Panwei ecology9 ofsLogin.jsp Утечка информации и анализ уязвимостей внешнего входа в систему произвольного пользователя

источник

Чангтинг недавно выпустил предупреждение об уязвимости《в оппозиции1dayПредупреждение о риске|ПанвэйEcologyутечка информации&Любая уязвимость входа пользователя на стойке регистрации》,Ссылка на статью с предупреждениемдляhttps://mp.weixin.qq.com/s/ZvbXbtcpq8EslNKZ2hHW_w,С отношением к обучению и исследованиям,Было проведено беглое исследование возможной логики уязвимости.

анализировать

Чангтинг опубликовал последнюю версию Xray в статье с предупреждением. Обновленный Xray может удаленно обнаружить уязвимость. Команда обнаружения выглядит следующим образом.

Язык кода:javascript
копировать
./xray ws --poc poc-yaml-ecology-ofslogin-aul --url http://example.com

Запустите указанную выше команду локально

Данные запроса, отправленные Xray для проверки уязвимости, могут быть перехвачены с помощью Wireshark.

для

/mobile/plugin/1/ofsLogin.jsp?syscode=syscode&timestamp=2&gopage=3&receiver=test&loginTokenFromThird=

Теперь, когда конкретный файл найден, можно приступить к анализу.

Откройте файл mobile/plugin/1/ofsLogin.jsp в каталоге установки Panwei ecology9 следующим образом.

Во-первых, в строках 19-23 при доступе к URL-адресу mobile/plugin/1/ofsLogin.jsp сначала будут получены переданные параметры syscode, получателя, метки времени, loginTokenFromThird и gopage.

Затем в строке 26,Вызовите метод AESCoder.encrypt для шифрования параметров AES.,Первый параметр метода AESCoder.encrypt — дляreceiver+timestamp.,Вызовите метод Prop.getPropValue, чтобы получить возвращаемое значение и объединить его с полученным значением системного кода.,Полученное возвращаемое значение используется в качестве второго параметра для,Данные, полученные с помощью AES-шифрования, присваиваются переменной loginTokenFromThird2.

Далее проверка логики входа начинается со строки 36. По строкам 36-39 оценивается, равны ли полученное loginTokenFromThird и сгенерированное значение loginTokenFromThird2. Если они не равны, вход не выполняется и передается в /login/Login. .jsp. Только когда loginTokenFromThird и loginTokenFromThird2 равны, следующая логика входа в систему может продолжать выполняться.

продолжать вниз,Когда loginTokenFromThird равен loginTokenFromThird2,Во-первых, полученное значение системного кода будет использоваться в качестве параметра условия для запроса в таблице данных s_sendinfo.,Поле запроса дляhrmtransrule. Если запрошенное значение hrmtransruleдля пусто (то есть значение системного кода условия запроса не существует в таблице ofs_sendinfo),Назначьте hrmtransrule для «1», если запрошенное hrmtransrule не пусто;,Сделайте вывод по строкам 52-63. Определено переменное правило,Значение по умолчанию для «loginid»,Если hrmtransrule для "0",Затем назначьте правило для"id" if hrmtransruleдля"1";,Затем правилу присваивается значение "loginid",Логика в основе та же.

После выполнения приведенной выше логики суждения,,Значение переменной правила используется в качестве поля условия для запроса в таблице данных HrmResource.,Параметр условия — это значение приемника, полученное для

В это время я выполнил оператор select * from HrmResource;SQL непосредственно в базе данных локальной тестовой среды и обнаружил, что HrmResource — это пустая таблица в среде автора.

То есть в среде автора следующая логика не может продолжать выполняться.

Далее идут кадровые дела->Создайте нового человека в New Personnel

После завершения создания повторите запрос, и вы увидите, что в таблице HrmResource уже есть данные.

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

Продолжая следующую логику, следующая логика относительно проста. Получите идентификатор из результата запроса и присвойте его идентификатору пользователя. Затем сгенерируйте учетные данные аутентификации на основе идентификатора пользователя, то есть после завершения аутентификации, перейдите к. страница, указанная пользователем, то есть это полученный параметр gopage

анализировать Иди сюда,Вся логика входа очень понятна,Ключ заключается в двух условиях:

1. loginTokenFromThird должен быть равен loginTokenFromThird2, loginTokenFromThird является управляемым, loginTokenFromThird2 генерируется путем вызова внутренней функции шифрования на основе контролируемых параметров, а когда входные параметры функции шифрования остаются неизменными, loginTokenFromThird2 также фиксируется;

2. В таблице информации о пользователе HrmResource должны быть данные.

тест

В таблице HrmResource loginid фактически является именем пользователя для входа.,Например, идентификатор входа системного администратора по умолчанию — sysadmin.,Есть два подхода к логике суждения входа в систему.,Во-первых, значение системного кода не существует в таблице.,Во-вторых, правило hrmtransrule, найденное в соответствии с системным кодом, должно быть «1».,Очевидно, что лучше использовать первый. Далее вы можете создать параметры для генерации loginTokenFromThird2.,Затем оставьте полученное значение loginTokenFromThird2 нетронутым и оставьте нетронутым значение параметра дляloginTokenFromThird, чтобы завершить использование логина любого пользователя.

boy illustration
Учебное пособие по Jetpack Compose для начинающих, базовые элементы управления и макет
boy illustration
Код js веб-страницы, фон частицы, код спецэффектов
boy illustration
【новый! Суперподробное】Полное руководство по свойствам компонентов Figma.
boy illustration
🎉Обязательно к прочтению новичкам: полное руководство по написанию мини-программ WeChat с использованием программного обеспечения Cursor.
boy illustration
[Забавный проект Docker] VoceChat — еще одно приложение для мгновенного чата (IM)! Может быть встроен в любую веб-страницу!
boy illustration
Как реализовать переход по странице в HTML (html переходит на указанную страницу)
boy illustration
Как решить проблему зависания и низкой скорости при установке зависимостей с помощью npm. Существуют ли доступные источники npm, которые могут решить эту проблему?
boy illustration
Серия From Zero to Fun: Uni-App WeChat Payment Practice WeChat авторизует вход в систему и украшает страницу заказа, создает интерфейс заказа и инициирует запрос заказа
boy illustration
Серия uni-app: uni.navigateЧтобы передать скачок значения
boy illustration
Апплет WeChat настраивает верхнюю панель навигации и адаптируется к различным моделям.
boy illustration
JS-время конвертации
boy illustration
Обеспечьте бесперебойную работу ChromeDriver 125: советы по решению проблемы chromedriver.exe не найдены
boy illustration
Поле комментария, щелчок мышью, специальные эффекты, js-код
boy illustration
Объект массива перемещения объекта JS
boy illustration
Как открыть разрешение на позиционирование апплета WeChat_Как использовать WeChat для определения местонахождения друзей
boy illustration
Я даю вам два набора из 18 простых в использовании фонов холста Power BI, так что вам больше не придется возиться с цветами!
boy illustration
Получить текущее время в js_Как динамически отображать дату и время в js
boy illustration
Вам необходимо изучить сочетания клавиш vsCode для форматирования и организации кода, чтобы вам больше не приходилось настраивать формат вручную.
boy illustration
У ChatGPT большое обновление. Всего за 45 минут пресс-конференция показывает, что OpenAI сделал еще один шаг вперед.
boy illustration
Copilot облачной разработки — упрощение разработки
boy illustration
Микросборка xChatGPT с низким кодом, создание апплета чат-бота с искусственным интеллектом за пять шагов
boy illustration
CUDA Out of Memory: идеальное решение проблемы нехватки памяти CUDA
boy illustration
Анализ кластеризации отдельных ячеек, который должен освоить каждый&MarkerгенетическийВизуализация
boy illustration
vLLM: мощный инструмент для ускорения вывода ИИ
boy illustration
CodeGeeX: мощный инструмент генерации кода искусственного интеллекта, который можно использовать бесплатно в дополнение к второму пилоту.
boy illustration
Машинное обучение Реальный бой LightGBM + настройка параметров случайного поиска: точность 96,67%
boy illustration
Бесшовная интеграция, мгновенный интеллект [1]: платформа больших моделей Dify-LLM, интеграция без кодирования и встраивание в сторонние системы, более 42 тысяч звезд, чтобы стать свидетелями эксклюзивных интеллектуальных решений.
boy illustration
LM Studio для создания локальных больших моделей
boy illustration
Как определить количество слоев и нейронов скрытых слоев нейронной сети?
boy illustration
[Отслеживание целей] Подробное объяснение ByteTrack и детали кода