Обмен технологиями | Апплет WeChat обходит фирменные идеи
Обмен технологиями | Апплет WeChat обходит фирменные идеи

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

Предисловие к уязвимости:

Язык кода:javascript
копировать
Знаковые сигнатуры часто встречаются при тестировании логических уязвимостей в небольших программах. Если вы не знаете, как генерируется знак, и можете только подделать значения параметров, но не можете изменить значение знака, то перейти к делу будет сложно. следующий шаг в тестировании уязвимостей. В этом сообщении основное внимание будет уделено тому, как обойти логотип мини-программы.。

0X01

Определение знака:

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

Общие методы шифрования включают в себя: шифрование MD5, шифрование AES, шифрование SHA и т. д.

Распространенные способы обхода проверки подписи:

1. Изучите формат знака и проверьте, имеет ли он форму слабых учетных данных, таких как кодировка base64, и вы можете увидеть исходные данные после декодирования, или если они в формате MD5, вы можете попытаться расшифровать их; напрямую, чтобы увидеть, можно ли расшифровать исходные данные и т. д.

2. Попробуйте удалить поле знака или оставить значение знака пустым, чтобы посмотреть, сможете ли вы обойти проверку.

3. Попробуйте декомпилировать, найти алгоритм шифрования в декомпилированном исходном коде и найти способ генерации знака.

0X02

Инструменты, участвующие в тестировании:

Инструмент для расшифровки исходного кода мини-программы: https://share.weiyun.com/uMqNGOXv

Декомпилировать небольшой программный инструмент: https://github.com/ezshine/wxapkg-convertor/releases/tag/1.0.1

0X03

Детали теста:

1、 Тестовый апплет

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

Непосредственное изменение параметров выявило ошибку:

Попробуйте удалить поле знака напрямую и получите ошибку:

Попробуйте расшифровать знак, чтобы убедиться, что это слабое шифрование. После наблюдения выяснилось, что 32-значное число предполагало шифрование MD5, однако расшифровка показала, что его невозможно расшифровать.

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

2、 Декомпилировать небольшую программу

Сначала вам нужно найти место хранения мини-программы. В Windows это место хранения мини-программы WeChat по умолчанию (C:\Users{имя пользователя системы}\Documents\WeChat. Files\Applet{идентификатор мини-программы}\), поскольку все хранящиеся здесь команды основаны на идентификаторе апплета, вы можете сначала очистить апплет в WeChat, а затем открыть апплет, который хотите протестировать.

Следует отметить, что вам необходимо дождаться полного открытия мини-программы, а затем нажать на несколько функций, чтобы убедиться, что все пакеты запущены. Найдите соответствующий wxapkg и проверьте, можно ли его декомпилировать напрямую. Некоторые из них зашифрованы. В этом случае сначала используйте инструмент Unpacker для расшифровки, а затем используйте инструмент wxapkgconvertor для декомпиляции пакета.

После расшифровки используйте инструмент декомпиляции, чтобы извлечь исходный код:

3 , Глобальный поиск местоположения функции шифрования

Откройте декомпилированный исходный код, выполните поиск MD5 по всему миру и найдите основной код шифрования следующим образом:

Основные функции шифровального знака заключаются в следующем:

Сначала пройдитесь по объекту t, отсортируйте заданные в нем параметры, переназначьте атрибут «biz_content» переменной r и преобразуйте атрибуты параметра r из формата json в тип объекта. После интегрирования в виде строки “&” Объединить, объединить строку с заданным значением "ihos-mini-sign-8". Расположите их в порядке возрастания алфавита. После упорядочивания используйте MD5 для шифрования, а затем преобразуйте их в прописные буквы.

4 , код обратного вызова

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

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

Продолжайте следовать функции GatewayRequest и найдите следующий исходный код:

Продолжайте следить:

getPatInfoByIdNo

Обнаружено, что входящее n является константой

r — это объект, который окончательно преобразуется в формат xml.

Продолжайте следить за генерированием запроса.

Следуйте функции l:

Я нашел, что представляет собой каждый параметр в функции генерации знаков.

Специальные символы: ihos-mini-sign-8.

5 , получаем метод генерации знаков

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

Окончательный метод генерации знаков получается следующим образом:

app_id + метод (интерфейс, на основе которого определяется, какой интерфейс вызывать) + nonce_str (метка времени) + контент biz_content + токен (полученный при входе в мини-программу) + фиксированное значение (ihos-mini-sign-8)

6 , результаты испытаний

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

0x04 Сводка

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

0x05 Расширение — использование плагина Burpy

Во время теста безопасности, когда вы сталкиваетесь с использованием знаковых подписей в пакетах данных, подобных приведенному выше объяснению, после анализа метода шифрования очень проблематично, пишете ли вы свой собственный скрипт или шифруете и расшифровываете через веб-сайт, а затем вставляете его в Burp. для тестирования. Поэтому вы можете рассмотреть возможность объединения плагина Burpy для тестирования уязвимостей.

Укажите свой собственный скрипт Python в пути к файлу Burpy PY:. Burpy также предоставляет шаблоны сценариев, которые могут напрямую выполнять алгоритмы шифрования и дешифрования в своих шаблонах сценариев.

(1) После включения процессора включения при использовании Intrumer для выполнения таких действий, как взлом методом грубой силы, если полезные данные необходимо зашифровать или подписать, вы можете внедрить алгоритм шифрования/подписи в функцию процессора вашего собственного скрипта Python.

(2) Включите автоматическое включение. enc/dec автоматически вызовет метод шифрования и автоматически выполнит шифрование и дешифрование при нажатии кнопки воспроизведения.

После настройки нажмите «Запустить сервер» и можно приступать к обычному тестированию.

Скрипт:

Чтобы запустить плагин:

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

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

Оригинальная ссылка: https://forum.butian.net/share/2342.

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 и детали кода