Exploiting Content Providers
Kuchexploitisha Watoa Huduma wa Yaliyomo
Utangulizi
Data inatolewa kutoka kwenye programu moja kwenda nyingine kwa ombi kupitia kipengele kinachoitwa mtoa huduma wa yaliyomo. Maombi haya yanasimamiwa kupitia njia za darasa la ContentResolver. Watoa huduma wa yaliyomo wanaweza kuhifadhi data zao katika maeneo mbalimbali, kama vile database, faili, au kupitia mtandao.
Katika faili ya Manifest.xml, tangazo la mtoa huduma wa yaliyomo linahitajika. Kwa mfano:
Kupata upatikanaji wa content://com.mwr.example.sieve.DBContentProvider/Keys
, idhini ya READ_KEYS
ni muhimu. Ni ya kuvutia kufahamu kuwa njia /Keys/
inaweza kufikiwa katika sehemu ifuatayo, ambayo haiko salama kutokana na kosa la mwandishi wa programu, ambaye alilinda /Keys
lakini alitangaza /Keys/
.
Labda unaweza kupata data binafsi au kutumia udhaifu fulani (SQL Injection au Path Traversal).
Pata habari kutoka kwa watoa huduma za yaliyomo yaliyofichuliwa
Inawezekana kuunganisha jinsi ya kufikia DBContentProvider kwa kuanza URIs na "content://". Mbinu hii inategemea ufahamu uliopatikana kwa kutumia Drozer, ambapo habari muhimu ilipatikana katika saraka ya /Keys.
Drozer inaweza kudhani na kujaribu URIs kadhaa:
Unapaswa pia kuangalia msimbo wa ContentProvider kutafuta maswali:
Pia, ikiwa huwezi kupata maswali kamili unaweza kuangalia majina yaliyotangazwa na ContentProvider kwenye mbinu ya onCreate
:
Utafutaji utakuwa kama: content://jina.la.package.class/jina_lililotangazwa
Watoa Huduma wa Yaliyomo Yaliyowekwa kwenye Database
Labda watoa huduma wengi wa Yaliyomo hutumiwa kama kiolesura kwa database. Kwa hivyo, ikiwa unaweza kufikia hiyo unaweza kuwa na uwezo wa kutoa, kusasisha, kuingiza na kufuta habari. Angalia ikiwa unaweza kufikia habari nyeti au jaribu kubadilisha ili kipuuze mifumo ya idhini.
Unapochunguza msimbo wa Mtoaji wa Yaliyomo angalia pia kwa kazi zilizo na majina kama: swali, ingiza, sasisha na futa:
Kwa sababu utaweza kuzipiga
Swali yaliyomo
Weka yaliyomo
Kwa kuuliza database utajifunza jina la safuwima, kisha, unaweza kuweza kuweka data katika DB:
Note kwamba katika kuweka na kuboresha unaweza kutumia --string kuashiria string, --double kuashiria double, --float, --integer, --long, --short, --boolean
Boresha yaliyomo
Ukiwa unajua majina ya safuwima unaweza pia kurekebisha viingilio:
Futa yaliyomo
SQL Injection
Ni rahisi kujaribu kwa SQL injection (SQLite) kwa kubadilisha projection na fields za uteuzi ambazo zinapitishwa kwa mtoa yaliyomo. Unapouliza Mtoa Yaliyomo kuna hoja 2 za kuvutia za kutafuta habari: --selection na --projection:
Unaweza kujaribu kutumia vibaya hizi paramita kujaribu kwa SQL injections:
Kugundua SQLInjection kiotomatiki na Drozer
Watoa Huduma wa Yaliyomo Yaliyoungwa kwa Mfumo wa Faili
Watoa huduma wa yaliyomo wanaweza kutumika pia kwa kupata faili:
Soma faili
Unaweza kusoma faili kutoka kwa Mtoa Huduma wa Yaliyomo
Ufuatiliaji wa Njia
Ikiwa unaweza kupata faili, unaweza kujaribu kutumia Ufuatiliaji wa Njia (katika kesi hii haitakiwi lakini unaweza kujaribu kutumia "../" na mbinu kama hizo).
Kugundua Ufikiaji wa Njia kiotomatiki na Drozer
Marejeo
Last updated