Exploiting Content Providers
Exploiting Content Providers
Intro
Data word verskaf van een toepassing na ander op aanvraag deur 'n komponent bekend as 'n content provider. Hierdie versoeke word bestuur deur die ContentResolver class metodes. Content providers kan hul data in verskeie plekke stoor, soos 'n databasis, lêers, of oor 'n netwerk.
In die Manifest.xml lêer is die verklaring van die content provider 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 let dat die pad /Keys/
toeganklik is in die volgende afdeling, wat nie beskerm is nie as gevolg van 'n fout deur die ontwikkelaar, wat /Keys
beveilig het maar /Keys/
verklaar het.
Miskien kan jy privaat data toegang of 'n sekere kwesbaarheid (SQL Injection of Path Traversal) benut.
Kry inligting van blootgestelde inhoudverskaffers
Dit is moontlik om saam te stel hoe om die DBContentProvider te bereik deur URI's met “content://” te begin. Hierdie benadering is gebaseer op insigte wat verkry is deur Drozer te gebruik, waar sleutel-inligting in die /Keys gids geleë was.
Drozer kan raai en verskeie URI's probeer:
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
Waarskynlik word die meeste van die Content Providers gebruik as interface vir 'n databasis. Daarom, as jy toegang kan kry, kan jy in staat wees om te onttrek, op te dateer, in te voeg en te verwyder inligting. Check of jy toegang kan kry tot sensitiewe inligting of probeer om dit te verander om te omseil magte.
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
Voeg inhoud in
Deur die databasis te ondervra, sal jy die naam van die kolomme leer, dan kan jy data in die DB invoeg:
Not dat jy in invoeg en opdatering --string kan gebruik om 'n string aan te dui, --double om 'n dubbel aan te dui, --float, --integer, --long, --short, --boolean
Werk inhoud op
As jy die naam van die kolomme ken, kan jy ook die inskrywings wysig:
Verwyder inhoud
SQL Inbraak
Dit is eenvoudig om vir SQL-inbraak (SQLite) te toets deur die projektering en keuse velde wat aan die inhoudverskaffer oorgedra word, te manipuleer. Wanneer jy die Inhoudverskaffer ondervra, is daar 2 interessante argumente om inligting te soek: --selection en --projection:
Jy kan probeer om hierdie parameters te misbruik om vir SQL-inbrake te toets:
Outomatiese SQLInjection ontdekking deur Drozer
Lêerstelsel-ondersteunde Inhoudverskaffers
Inhoudverskaffers kan ook gebruik word om lêers te verkry:
Lees lêer
Jy kan lêers van die Inhoudverskaffer lees.
Pad Traversal
As jy toegang tot lêers kan kry, kan jy probeer om 'n Pad Traversal te misbruik (in hierdie geval is dit nie nodig nie, maar jy kan probeer om "../" en soortgelyke truuks te gebruik).
Outomatiese Pad Traversering ontdekking deur Drozer
Verwysings
Last updated