Exploiting Content Providers
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
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.
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
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
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
As jy die naam van die kolomme ken, kan jy ook die inskrywings wysig:
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
Inhoudverskaffers kan ook gebruik word om lêers te verkry:
Jy kan lêers van die Inhoudverskaffer lees.
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
Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)