Обмен технологиями | Апплет 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
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose