Пентестинг Android: Запись небезопасного хранения данных DIVA для Parrot OS

Если вы читали мою предыдущую статью, в которой я рассказал о проблемах с логированием и жестким кодированием (1 & 2) в DIVA APK, то приготовьтесь к следующей. Я надеюсь, что у вас открыты инструменты, потому что сегодня мы собираемся найти все уязвимости небезопасного хранения данных в DIVA APK!😁

Итак, DIVA APK имеет четыре раздела для проверки на наличие уязвимости Insecure Data Storage. Уязвимости небезопасного хранения данных возникают, когда программисты предполагают, что пользователи, вредоносные программы или злоумышленники не будут иметь доступа к файловым системам мобильного устройства и конфиденциальной информации, которая хранится на устройстве или в APK. Проблема возникает, когда файловые системы легко доступны. Злоумышленники, или мы в данном случае, могут рутировать или сделать джейлбрейк мобильных устройств или APK и просматривать данные приложений — в конечном итоге, конфиденциальные данные приложений.

Без лишних слов перейдем к делу!

Небезопасное хранение данных — часть 1

Когда мы открываем раздел «Небезопасное хранение данных — часть 1», перед нами встает следующая задача: выяснить, где/как хранятся учетные данные и уязвимый код. Итак, мы должны найти, где хранятся учетные данные, как они хранятся и уязвимый код.

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

Давайте откроем JADX-GUI и перейдем к InsecureDataStorage1Activity. Отсюда мы видим, что наши данные хранятся в объекте SharedPreferences. Объект SharedPreferences указывает на файл, содержащий пары ключ-значение, и предоставляет простые методы для их чтения и записи. Каждый файл SharedPreferences управляется фреймворком и может быть приватным или общим. Простой пример использования объекта SharedPreference — сохранение предпочитаемого пользователем цвета фона приложения.

Обычно файл SharedPreference сохраняется в каталоге ../data/data/name.company.com/shared_prefs/… и для доступа или просмотра этого файла SharedPreference я покажу вам два метода: как получить доступ к нему в Android Studio и как получить доступ к нему через терминал.

Первый способ: Android Studio

Откройте Android Studio и выберите панель Device Manager в правой части окна. Затем откройте проводник файлов и перейдите к следующему файлу (data > data > jakhar.aseem.diva > shared_prefs > jakhar.aseem.diva_preferences.xml).

Дважды щелкните на jakhar.aseem.diva_preferences.xml, и вуаля, у нас есть доступ к данным через Android Studio!

Способ второй: Терминал

Откройте терминал с помощью CTRL + ALT + T и запустите оболочку adb с помощью команды adb shell. ADB Shell позволит нам получить доступ к файлам устройства и манипулировать устройством через терминал. Нам нужно получить доступ суперпользователя, то есть доступ Дарта Вейдера, введя команду su.

Давайте перечислим наши файлы на устройстве с помощью команды ls, а дальше мы сможем переходить к каталогам, как мы это делали в Android Studio:

cd data
cd data
cd jakhar.aseem.diva
cd shared_prefs
Вход в полноэкранный режим Выход из полноэкранного режима

Наконец, мы можем прочитать данные, введя команду cat jakhar.aseem.diva_preferences.xml. И мы закончили!

Итак, подводя итоги, мы смогли найти следующее:

  • Где: shared_prefs > jakhar.aseem.diva_preferences.xml
  • Как: объект SharedPreferences()

Небезопасное хранение данных — часть 2

Когда мы открываем раздел Insecure Data Storage — Part 2, перед нами стоит следующая задача: выяснить, где/как хранятся учетные данные и уязвимый код. Итак, мы должны найти, где хранятся учетные данные, как они хранятся и уязвимый код.

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

Откройте JADX-GUI и перейдите к InsecureDataStorage2Activity. Отсюда мы видим, что наши данные хранятся в объекте SQLiteDatabase — поэтому мы будем искать файл базы данных!

Обычно файлы базы данных SQLiteDatabase сохраняются в каталоге ../data/data/name.company.com/databases/… и чтобы получить доступ или просмотреть этот файл базы данных, я покажу вам два метода: как получить доступ к нему в Android Studio и как получить доступ к нему через терминал.

Первый способ: Android Studio

Откройте Android Studio и выберите панель Device Manager в правой части окна. Затем перейдите в File Explorer и перейдите к следующему файлу (data > data > jakhar.aseem.diva > databases). Отсюда мы видим множество файлов баз данных, но, просто взглянув на название, мы можем сделать вывод, что «ids2» (id) будет более ценным для просмотра, чем «diva notes». Итак, давайте посмотрим на ids2.

Щелкните правой кнопкой мыши и сохраните ids2 в удобном для вас месте на рабочем столе. После сохранения откройте браузер и перейдите в SQLite Viewer, чтобы мы могли просмотреть содержимое нашей базы данных. Открываем файл ids2. Мы видим, что здесь есть две таблицы.

Давайте откроем таблицу myuser. Теперь мы можем увидеть наши учетные данные!

Способ второй: Терминал

Откройте терминал с помощью CTRL + ALT + T и запустите оболочку adb с помощью команды adb shell. Дальше мы можем действовать:

su
cd data
cd data
cd jakhar.aseem.diva
cd databases 
Войти в полноэкранный режим Выйти из полноэкранного режима

Когда мы перечислим файлы в нашем каталоге баз данных, мы увидим, что там находится файл ids2. Чтобы прочитать его, нам нужно сначала ввести команду qlite3 (введите ее, набрав sql, нажмите TAB и Enter).

Затем нам нужно открыть файл базы данных ids2 с помощью команды .open ids2. Если мы перечислим все таблицы с помощью команды .tables, то увидим, что myuser является одной из них. Затем мы можем «cd» в таблицы myuser с помощью команды .tables myuser.

Чтобы прочитать содержимое таблицы myuser, мы можем просто сказать .dump myuser, и поздравляем, вы успешно вскрыли этого плохиша! 😎

Итак, подводя итоги, мы смогли найти следующее:

  • Где: databases > ids2
  • Как: SQLiteDatabase mDB

Небезопасное хранение данных — часть 3

Когда мы открываем раздел Insecure Data Storage — Part 3, перед нами стоит следующая задача: выяснить, где/как хранятся учетные данные и уязвимый код. Итак, мы должны найти, где хранятся учетные данные, как они хранятся и уязвимый код.

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

Откройте JADX-GUI и перейдите к InsecureDataStorage3Activity. Отсюда мы видим, что наши данные хранятся в объекте FileWriter, который хранится как uinfotmp — поэтому мы ищем файл с окончанием (tmp).

Файл FileWriter tmp будет сохранен по адресу ../data/data/name.company.com/… и для доступа или просмотра этого uinfo файла я покажу вам два метода: как получить доступ к нему в Android Studio, и как получить доступ к нему через терминал.

Первый способ: Android Studio

Откройте Android Studio и выберите панель Device Manager в правой части окна. Затем откройте проводник файлов и перейдите к следующему файлу (data > data > jakhar.aseem.diva. Отсюда мы видим, что наш файл находится там, помеченный как что-то похожее на uinfoxxxxxxxxxxxxtmp.

Дважды щелкните ваш файл uinfotmp. Теперь вы можете читать данные!

Способ второй: Терминал

Откройте терминал с помощью CTRL + ALT + T и запустите оболочку adb с помощью команды adb shell. С этого момента мы можем приступать:

su
cd data
cd data
cd jakhar.aseem.diva
Войти в полноэкранный режим Выйти из полноэкранного режима

Когда мы перечислим файлы, мы увидим наш файл uinfotmp. Чтобы прочитать содержимое файла uinfotmp, мы можем просто сказать cat uinfoxxxxxxxxxxtmp (замените uinfoxxxxxxxxxxtmp на имя вашего файла), и все готово!

Итак, подводя итоги, мы смогли найти следующее:

  • Где: jakhar.aseem.diva > uinfotmp
  • Как: FileWriter(File)

Небезопасное хранение данных — часть 4

Когда мы открываем раздел Insecure Data Storage — Part 4, перед нами стоит следующая задача: выяснить, где/как хранятся учетные данные и уязвимый код. Итак, мы должны найти, где хранятся учетные данные, как они хранятся и уязвимый код.

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

Откройте JADX-GUI и перейдите к InsecureDataStorage4Activity.

Отсюда мы видим, что наши данные хранятся в чем-то под названием Environment.getExternalStorageDirectory(). Не беспокойтесь, это означает, что он сохраняет наш файл .uinfo.txt на SDCard нашего устройства.

SDCard будет сохранена в нашей корневой директории. Я покажу вам, как получить доступ к этому файлу двумя способами: как получить доступ к нему в Android Studio и как получить доступ к нему через терминал.

Первый способ: Android Studio

Откройте Android Studio и выберите панель Device Manager в правой части окна. Затем откройте File Explorer и перейдите в следующий каталог: sdcard. Отсюда мы видим, что наш файл находится там и обозначен как .uinfo.txt.

Дважды щелкните файл .uinfo.txt. Теперь вы можете читать данные!

Способ второй: Терминал

Откройте терминал с помощью CTRL + ALT + T и запустите оболочку adb с помощью команды adb shell. С этого момента можно приступать:

su
cd sdcard
Войти в полноэкранный режим Выйти из полноэкранного режима

В списке файлов мы видим наш файл .uinfo.txt. Чтобы прочитать содержимое файла .uinfo.txt, мы можем просто сказать cat .uinfo.txt. Теперь мы знаем все его маленькие грязные секреты!

Итак, подводя итоги, мы смогли найти следующее:

  • Где: sdcard > .uinfo.txt
  • Как: FileWriter(File)

Поздравляю, мы закончили третий раздел APK DIVA! Я надеюсь, что это было достаточно легко для понимания. Увидимся в следующий раз с разделом 4: Проблемы валидации ввода.😊

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

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

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