Пентестинг Android: Запись проблем контроля доступа DIVA для Parrot OS

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

Итак, этот раздел состоит из трех частей. Без лишних слов, давайте перейдем к делу!


Вопросы контроля доступа — часть первая

Когда мы открываем раздел «Проблемы контроля доступа — часть 1» на нашем устройстве, перед нами встает следующая задача: попытаться получить доступ к учетным данным API извне приложения. Это означает, что вместо того, чтобы просто нажать кнопку View API Credentials, мы должны попытаться получить доступ к учетным данным в процессе деятельности, используя другие методы, например, через терминал.

Для наглядности вот что происходит, когда мы нажимаем кнопку View API Credentials напрямую. Видно, что мы получаем мгновенный доступ к учетным данным, к которым у нас не должно быть доступа!

Ладно, давайте начнем с самого интересного. Давайте посмотрим, сможем ли мы увидеть, что произошло в нашем LogCat после того, как мы открыли учетные данные api. LogCat является мощным инструментом, поскольку он может раскрыть полезную информацию для нас как для злоумышленника, например, активность, которая была открыта, что мы можем использовать для эксплуатации. Откройте терминал с помощью CTRL + ALT + T и введите следующую команду.

adb shell logcat
Войти в полноэкранный режим Выйти из полноэкранного режима


Мы видим, что открывается активность под названием .APICredsActivity. Давайте откроем jadx.gui и посмотрим, можем ли мы увидеть, откуда активность берет учетные данные.

Итак, данные жестко закодированы. Теперь, когда мы знаем, какая активность используется для хранения жестко закодированных api-учетных данных, мы можем использовать терминал, чтобы обойти кнопку «View API Credentials» и показать нам учетные данные напрямую. Другими словами, мы запустим Intent активности прямо из терминала. 👾

adb shell am start -n jakhar.aseem.diva/.APICredsActivity
Вход в полноэкранный режим Выйти из полноэкранного режима
  • am используется для управления активностью.

  • start используется для запуска деятельности.

  • -n используется для указания имени открываемой активности (.APICredsActivity).

Ура! Когда мы вернемся в наше приложение, то увидим, что мы успешно открыли активность и раскрыли учетные данные без нажатия кнопки!


Проблемы контроля доступа — часть вторая

Когда мы открываем раздел «Проблемы контроля доступа — часть вторая» на нашем устройстве, перед нами встает следующая задача: попытаться получить доступ к учетным данным API извне приложения, не зная пин-кода. Это означает, что мы не можем просто просмотреть зарегистрированные учетные данные через интерфейс или зарегистрировать новые учетные данные, но мы должны попытаться получить доступ к учетным данным в процессе работы, используя другие методы, например, через терминал (как и раньше).


Для интереса, вот что происходит, когда мы нажимаем кнопку «Уже зарегистрировано»:


Мы видим, что сразу получаем доступ к учетным данным API. Когда мы нажимаем кнопку «Зарегистрироваться сейчас», нам предлагается ввести пин-код после регистрации. Мы не можем зарегистрироваться, так как этой функции не существует! 😆.



Итак, как мы узнали ранее, LogCat покажет нам все, что нам нужно знать. Давайте откроем терминал и выполним ту же команду, что и раньше.

adb shell logcat
Войти в полноэкранный режим Выйти из полноэкранного режима

Мы видим, что возвращается активность .APICreds2Activity, которая открыла макет учетных данных API, когда мы запустили макет раздела. Давайте перейдем в JADX-GUI и откроем эту активность, чтобы посмотреть, что мы можем найти в исходном коде.

Как мы видим, это значение также было жестко закодировано — но на этот раз есть разница. Мы видим, что для доступа к учетным данным нам нужен пин, тогда как раньше у нас был прямой доступ. Нам нужно будет обойти эту проверку пин-кода.

Итак, с этого момента нам нужно отключить проверку подлинности, чтобы мы могли просто просматривать нашу активность ./APICreds2Activity без необходимости проверки пин-кода. Я рекомендую взглянуть на этот список команд ADB, прежде чем продолжить. Вернитесь в терминал и введите следующую команду:

adb shell am start -n jakhar.aseem.diva/.APICredsActivity -a jakhar.aseem.diva.action.VIEW_CRED2 --ez check_pin false
Войти в полноэкранный режим Выйти из полноэкранного режима
  • am используется для управления активностью.

  • start используется для запуска деятельности.

  • -n используется для указания имени открываемой активности (.APICredsActivity).

  • -a используется для просмотра наших учетных данных. Его синтаксис более подробен: -a .

  • --ez check_pin false используется для обхода проверок, проводимых приложением на принимающей стороне, поэтому нам не нужен пин.

И так же просто, как 123, когда мы возвращаемся в наше приложение, мы видим, что наша активность запустилась. Мы выполнили нашу задачу!


Вопросы контроля доступа — часть третья

Когда мы открываем раздел «Проблемы контроля доступа — часть третья» на нашем устройстве, перед нами встает следующая задача: попытаться получить доступ к личным заметкам извне приложения, не зная пин-кода. Это означает, что мы не можем просто создать пин-код для доступа к заметкам, а должны попытаться получить доступ к заметкам другими способами (не обязательно запустив предыдущее действие), например, через терминал (мы знаем Кристину, мы знаем).


Ради интереса, вот что происходит, когда мы регистрируем пин (я ввел базовый пин 1234):




Давайте откроем наш терминал и посмотрим, какую активность показывает нам наш LogCat.

adb shell logcat
Войти в полноэкранный режим Выход из полноэкранного режима


Мы видим, что он регистрирует две активности, ./AccessControl3Activity и ./AccessControl3NotesActivity. Давайте откроем наш **JADX-GUI ** и посмотрим на оба.


Мы видим, что AccessControl3Activity хранит наш пин через объект SharedPreferences, о котором мы уже рассказывали. Когда мы вводим пин, сохраненный в shared_prefs, запускается активность AccessControl3NotesActivity, которая проверяет этот пин перед показом заметок через запрос контента query(NotesProvider.CONTENT_URI). Этот поставщик содержимого выгрузит все заметки и позволит нам достичь нашей цели.

Мы можем сбросить этот контент-провайдер с помощью следующей команды в терминале:

adb shell am content query --uri content://jakhar.aseem.diva.provider.notesprovider/notes/
Войти в полноэкранный режим Выйти из полноэкранного режима

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


Заключение

Поздравляем, вы успешно выполнили все разделы DIVA APK! 🥳

Надеюсь, это было достаточно просто для понимания. Если у вас есть рекомендации по каким-либо крутым инструментам, техникам или учебникам, которые я тоже могу использовать, не стесняйтесь, оставьте их ниже, и я посмотрю! 😊

(Запишите это на мой GitHub для дальнейшего использования)

Оцените статью
Procodings.ru
Добавить комментарий