Exploiting Content Providers
Uitbuiting van Inhoudsverskaffers
Inleiding
Data word verskaf van die een aansoek na die ander op versoek deur 'n komponent wat bekend staan as 'n inhoudsverskaffer. Hierdie versoeke word hanteer deur die metodes van die ContentResolver-klas. Inhoudsverskaffers kan hul data op verskeie plekke stoor, soos 'n databasis, lêers, of oor 'n netwerk.
In die Manifest.xml lêer is die verklaring van die inhoudsverskaffer vereis. Byvoorbeeld:
Om toegang te verkry tot content://com.mwr.example.sieve.DBContentProvider/Keys
, is die READ_KEYS
toestemming nodig. Dit is interessant om op te merk dat die pad /Keys/
toeganklik is in die volgende afdeling, wat nie beskerm word as gevolg van 'n fout deur die ontwikkelaar nie, wat /Keys
beveilig het maar /Keys/
verklaar het.
Miskien kan jy toegang verkry tot private data of van 'n kwesbaarheid gebruik maak (SQL Injection of Pad Traversal).
Kry inligting van blootgestelde inhoudsverskaffers
Dit is moontlik om saam te stel hoe om die DBContentProvider te bereik deur te begin met URI's met "content://". Hierdie benadering is gebaseer op insigte wat verkry is deur die gebruik van Drozer, waar sleutelinligting in die /Keys gids gevind is.
Drozer kan veral URIs raai en probeer:
Jy moet ook die ContentProvider-kode nagaan om te soek na navrae:
Ook, as jy nie volledige navrae kan vind nie, kan jy ondersoek watter name deur die ContentProvider verklaar word in die onCreate
-metode:
Die navraag sal wees soos: content://name.of.package.class/declared_name
Databank-ondersteunde Content Providers
Waarskynlik word die meeste van die Content Providers gebruik as koppelvlak vir 'n databank. Daarom, as jy daartoe toegang kan verkry, kan jy dalk inligting ontgin, opdateer, invoeg en verwyder. Kyk of jy gevoelige inligting kan benader of probeer om dit te verander om outorisasiemeganismes te omseil.
Wanneer jy die kode van die Content Provider ondersoek, kyk ook vir funksies wat genoem word: query, insert, update en delete:
Omdat jy hulle sal kan aanroep
Navraaginhoud
Voeg inhoud in
Deur die databasis te ondersoek, sal jy die naam van die kolomme leer, dan kan jy data in die DB invoeg:
Merk op dat jy in invoeg en opdateer --string kan gebruik om 'n string aan te dui, --double om 'n dubbeldik aan te dui, --float, --integer, --long, --short, --boolean
Werk inhoud by
Deur die naam van die kolomme te ken, kan jy ook die inskrywings verander:
Verwyder inhoud
SQL Injection
Dit is maklik om vir SQL-injeksie (SQLite) te toets deur die projeksie en seleksieveld wat aan die inhoudverskaffer oorgedra word, te manipuleer. Wanneer jy die Inhoudverskaffer ondersoek, is daar 2 interessante argumente om na inligting te soek: --selection en --projection:
Jy kan probeer om hierdie parameters te misbruik om vir SQL-injeksies te toets:
Outomatiese SQLInjection-ontdekking deur Drozer
Lêerstelsel-ondersteunde Inhoudsverskaffers
Inhoudsverskaffers kan ook gebruik word om lêers te benader:
Lees lêer
Jy kan lêers van die Inhoudsverskaffer lees
Padtraversie
Indien jy lêers kan toegang verkry, kan jy probeer om 'n Padtraversie te misbruik (in hierdie geval is dit nie noodsaaklik nie, maar jy kan probeer om "../" en soortgelyke truuks te gebruik).
Outomatiese Paddeurontdekking deur Drozer
Verwysings
Last updated