Exploiting Content Providers
Exploiting Content Providers
Intro
Data inapatikana kutoka kwa programu moja hadi nyingine kwa ombi la kipengele kinachojulikana kama mtoa maudhui. Maombi haya yanadhibitiwa kupitia metode za ContentResolver class. Watoa maudhui wanaweza kuhifadhi data zao katika maeneo mbalimbali, kama vile database, files, au kupitia network.
Katika faili Manifest.xml, tangazo la mtoa maudhui linahitajika. Kwa mfano:
Ili kufikia content://com.mwr.example.sieve.DBContentProvider/Keys
, ruhusa ya READ_KEYS
inahitajika. Ni ya kuvutia kutambua kwamba njia /Keys/
inapatikana katika sehemu ifuatayo, ambayo haijalindwa kutokana na makosa ya mende, ambaye alilinda /Keys
lakini alitangaza /Keys/
.
Labda unaweza kufikia data za kibinafsi au kutumia udhaifu fulani (SQL Injection au Path Traversal).
Pata taarifa kutoka watoa maudhui walio wazi
Ni rahisi kuunganisha jinsi ya kufikia DBContentProvider kwa kuanza URIs na “content://”. Njia hii inategemea maarifa yaliyopatikana kutoka kwa kutumia Drozer, ambapo taarifa muhimu zilipatikana katika /Keys directory.
Drozer inaweza kukisia na kujaribu URIs kadhaa:
You should also check the ContentProvider code to search for queries:
Also, if you can't find full queries you could check which names are declared by the ContentProvider on the onCreate
method:
The query will be like: content://name.of.package.class/declared_name
Database-backed Content Providers
Probable wengi wa Content Providers hutumiwa kama interface kwa database. Hivyo, ikiwa unaweza kuipata unaweza kuwa na uwezo wa kuchota, kusasisha, kuingiza na kufuta taarifa. Angalia ikiwa unaweza kupata taarifa nyeti au jaribu kubadilisha ili kuepuka mifumo ya idhinisha.
When checking the code of the Content Provider look also for functions named like: query, insert, update and delete:
Because you will be able to call them
Query content
Insert content
Kwa kuhoji hifadhidata utaweza kujifunza jina la safu, kisha, utaweza kuingiza data katika DB:
Kumbuka kwamba katika kuingiza na kusasisha unaweza kutumia --string kuashiria string, --double kuashiria double, --float, --integer, --long, --short, --boolean
Update content
Ukijua jina la safu unaweza pia kubadilisha entries:
Delete content
SQL Injection
Ni rahisi kujaribu SQL injection (SQLite) kwa kubadilisha projection na selection fields ambazo zinapitishwa kwa mtoa maudhui. Wakati wa kuhoji Mtoa Maudhui kuna hoja 2 za kuvutia kutafuta taarifa: --selection na --projection:
Unaweza kujaribu kudhulumu hizi parameters ili kujaribu SQL injections:
Ugunduzi wa SQLInjection wa kiotomatiki na Drozer
Watoa Maudhui Wanaoungwa Mkono na Mfumo wa Faili
Watoa maudhui wanaweza pia kutumika kupata faili:
Soma faili
Unaweza kusoma faili kutoka kwa Mtoa Maudhui
Path Traversal
Ikiwa unaweza kufikia faili, unaweza kujaribu kutumia Path Traversal (katika kesi hii hii si lazima lakini unaweza kujaribu kutumia "../" na hila zinazofanana).
Ugunduzi wa Safari ya Moja kwa Moja na Drozer
References
Last updated