Shared Preferences Məxfi Məlumatların Aşkarlanması
Bu paylaşım seriyası Mobile Application Pentesting üzərindən gedəcəkdir və paylaşımın məqsədi Android Pentest üçün mühitin qurulmasıdır.
Telegram kanalına qoşularaq bu və digər mövzular üzrə quizlərdə iştirak edə bilərsiniz!
Telegram (Kanal): https://t.me/xakeraz_official
Əgər birbaşa bu paylaşıma gəlmisinizsə, sizə əvvəlki paylaşımdakı məlumatlar ilə tanış olmağınızı məsləhət görürəm!
Shared Preferences Nədir?
Shared Preferences, Android-də tətbiq activityləri arasında davamlı olaraq saxlana bilən kiçik, primitiv (məsələn, int, float, boolean, string) məlumatları açar-qiymət cütləri şəklində saxlayır. Bu, tətbiqin parametrlərini, istifadəçi seçimlərini və ya sessiya məlumatlarını saxlamaq üçün istifadə edilən yüngül bir yaddaş həllidir. Bu məlumatlar tətbiqin daxilində xüsusi bir XML faylında saxlanılır və digər tətbiqlər tərəfindən əlçatandır (rootlu cihazlarda), beləliklə məlumatların təhlükəsizliyi burada pozulur.
Zəifliyin yaranması və müşahidə edilməsi
Zəifliyin yaradılması və müşahidəsi üçün zəifliyi olan və məhz bu məqsədlər üçün yaradılmış AndroGoat.apk tətbiqindən istifadə edəcəyik. Əgər siz Emulator necə quraşdırmaq və ya AndroGoat.apk tətbiqini yükləmək istəyirsinizsə, aşağıdakı paylaşıma baxa bilərsiniz.
1. İlk addım olaraq AndroGoatda İnsecure Data Storage bölməsindən Shared Preferences hissəsini seçirik.


2.Zəifliyin test edilməsi üçün özümüz username və pass hissəsinə test məlumatlarını daxil edirik və sonra isə save edirik.


Buradakı Data Saved hissəsindən daxil etdiyimiz test məlumatlarının Shared Preferences hissəsinə qeyd edildiyini deyə bilərik.
Zəifliyin tapılması və Dataların əldə olunması
İlk öncə bunun yerinə yetirilməsi üçün rootlu cihaz və ya emulator lazımdır.Ümumi olaraq bu ctf həlli package adının tapılması və shared preferences qovluğuna daxil olaraq dataların oxunmasından ibarətdir.

1. Adb ilə package adının tapılması
Bütün əməliyyatların öncüsü olaraq package adının tapılması durur və bu məlumat bizə tətbiqin shared preferences qovluğuna çatdıran amildir. Aşağıdakı əməliyyat ilə tətbiqin paket adını təyin edirik. və adb servisini root olaraq başladırıq.
└─# adb shell pm list packages -f goat
package:/data/app/owasp.sat.agoat-Ou6LQDmoXifFnYJ2nJ8bBA==/base.apk=owasp.sat.agoat
┌──(root㉿rose)-[/]
└─# adb root
restarting adbd as root
2. Shared Preferences qovluğuna daxil olmaq və məlumatların oxuması
Bu hissədə isə bütün tətbiqlərin məlumatlarının olduğu qovluğa (/data/data) daxil oluruq və yuxarıda tapdığımız paket adı ilə məhz bizim tətbiqin məlumatlarına daxil oluruq. shared_prefs/ bu qovluq yolu avtomatik olaraq yaradılır, yəni bütün tətbiqlər üçün eynidir.
generic_x86_64:/ # cd /data/data/owasp.sat.agoat/shared_prefs/
generic_x86_64:/data/data/owasp.sat.agoat/shared_prefs # ls -la
total 16
drwxrwx--x 2 u0_a68 u0_a68 4096 2025-11-11 00:50 .
drwx------ 5 u0_a68 u0_a68 4096 2025-11-11 00:35 ..
-rw-rw---- 1 u0_a68 u0_a68 163 2025-11-11 00:50 users.xml
generic_x86_64:/data/data/owasp.sat.agoat/shared_prefs # cat users.xml
<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
<string name="password">XAKERAZPASS</string>
<string name="username">rose13</string>
</map>
generic_x86_64:/data/data/owasp.sat.agoat/shared_prefs #
Qovluğa daxil olduqda users.xml faylını görürük və cat əmri ilə tətbiq və bizim üçün əhəmiyyətli məlumatları oxuya bilərik.
Nəticə
Ümumiyyətlə istifadəçi və digər məlumatların saxlanması üçün shared preferences kimi təhlükəli yolun seçilməyi düzgün deyildir.Problemin həlli üçün backend server üzərində client2server məntiqi qurmaq və server tərəfdə hər istəyi yoxlamaq mütləqdir.
Ümid edirəm faydalı olmuşdur! Təşəkkürlər!
Bizi izləyin:
Telegram (Kanal): https://t.me/xakeraz_official
Paylaşımların səliqəli yığılmış halı: https://t.me/xakerazgroup
Fikir və şərhləriniz : https://t.me/xakerazchat