9.3 KiB
Mashambulizi ya WebView
Jifunze AWS hacking kutoka sifuri hadi shujaa na htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)!
Njia nyingine za kusaidia HackTricks:
- Ikiwa unataka kuona kampuni yako ikitangazwa kwenye HackTricks au kupakua HackTricks kwa PDF Angalia MIPANGO YA KUJIUNGA!
- Pata bidhaa rasmi za PEASS & HackTricks
- Gundua Familia ya PEASS, mkusanyiko wetu wa NFTs ya kipekee
- Jiunge na 💬 Kikundi cha Discord au kikundi cha telegram au tufuate kwenye Twitter 🐦 @carlospolopm.
- Shiriki mbinu zako za kuhack kwa kuwasilisha PRs kwa HackTricks na HackTricks Cloud repos za github.
Mwongozo juu ya Mipangilio na Usalama wa WebView
Muhtasari wa Udhaifu wa WebView
Sehemu muhimu ya maendeleo ya Android inahusisha kushughulikia kwa usahihi WebViews. Mwongozo huu unasisitiza mipangilio muhimu na mazoea ya usalama ili kupunguza hatari zinazohusiana na matumizi ya WebView.
Upatikanaji wa Faili katika WebViews
Kwa chaguo-msingi, WebViews huruhusu upatikanaji wa faili. Kazi hii inadhibitiwa na njia ya setAllowFileAccess()
, inayopatikana tangu Android API kiwango cha 3 (Cupcake 1.5). Programu zilizo na idhini ya android.permission.READ_EXTERNAL_STORAGE zinaweza kusoma faili kutoka kwenye hifadhi ya nje kwa kutumia mpango wa URL wa faili (file://path/to/file
).
Vipengele Vilivyopitwa na Wakati: Upatikanaji wa Kila mahali Kutoka kwenye URL za Faili
- Upatikanaji wa Kila mahali Kutoka kwenye URL za Faili: Kipengele hiki kilichopitwa na wakati kiliruhusu maombi kutoka kwa URL za faili, kwa hivyo kusababisha hatari kubwa ya usalama kutokana na mashambulizi ya XSS. Mipangilio ya chaguo-msingi ni imelemazwa (
false
) kwa programu zinazolenga Android Jelly Bean na mpya zaidi. - Ili kuangalia mipangilio hii, tumia
getAllowUniversalAccessFromFileURLs()
. - Ili kubadilisha mipangilio hii, tumia
setAllowUniversalAccessFromFileURLs(boolean)
. - Upatikanaji wa Faili Kutoka kwenye URL za Faili: Kipengele hiki, pia kilichopitwa na wakati, kilidhibiti upatikanaji wa maudhui kutoka kwenye URL za mpango wa faili zingine. Kama upatikanaji wa kila mahali, chaguo-msingi ni imelemazwa kwa usalama bora.
- Tumia
getAllowFileAccessFromFileURLs()
kuangalia nasetAllowFileAccessFromFileURLs(boolean)
kuweka.
Upakiaji Salama wa Faili
Kwa kulemaza upatikanaji wa mfumo wa faili wakati bado unapata mali na rasilimali, njia ya setAllowFileAccess()
hutumiwa. Kuanzia Android R na zaidi, mipangilio ya chaguo-msingi ni false
.
- Angalia na
getAllowFileAccess()
. - Wezesha au lemesha na
setAllowFileAccess(boolean)
.
WebViewAssetLoader
Darasa la WebViewAssetLoader ni njia ya kisasa ya kupakia faili za ndani. Inatumia URL za http(s) kwa kupata mali na rasilimali za ndani, ikilingana na sera ya Asili-Sawa, hivyo kurahisisha usimamizi wa CORS.
loadUrl
Hii ni kazi ya kawaida hutumiwa kupakia URL za kiholela katika webview:
webview.loadUrl("<url here>")
Ofc, mshambuliaji wa uwezekano anapaswa kamwe kuweza kudhibiti URL ambayo programu inatarajia kupakia.
Kushughulikia JavaScript na Mipango ya Nia
- JavaScript: Imezimwa kwa chaguo-msingi katika WebViews, inaweza kuwezeshwa kupitia
setJavaScriptEnabled()
. Tahadhari inashauriwa kwani kuwezesha JavaScript bila ulinzi sahihi kunaweza kuleta mapungufu ya usalama. - Mipango ya Nia: WebViews inaweza kushughulikia mpango wa
intent
, ikiongoza kwa uwezekano wa kufaidika ikiwa haitasimamiwa kwa uangalifu. Mfano wa mapungufu ulihusisha parameter ya WebView iliyofichuliwa "support_url" ambayo inaweza kutumiwa kutekeleza mashambulizi ya msalaba wa tovuti (XSS).
Mfano wa kutumia unyonyaji kwa kutumia adb:
{% code overflow="wrap" %}
adb.exe shell am start -n com.tmh.vulnwebview/.SupportWebView –es support_url "https://example.com/xss.html"
{% endcode %}
Daraja la Javascript
Kipengele kinachotolewa na Android kinachowezesha JavaScript katika WebView kuita kazi za programu za asili za Android. Hii inafanikishwa kwa kutumia njia ya addJavascriptInterface
, ambayo inaunganisha JavaScript na utendaji wa asili wa Android, inayoitwa Daraja la JavaScript la WebView. Tahadhari inashauriwa kwani njia hii inaruhusu kurasa zote ndani ya WebView kupata upatikanaji wa kifaa cha Kuingiliana cha JavaScript kilichosajiliwa, ikileta hatari ya usalama ikiwa habari nyeti itafunuliwa kupitia viunganishi hivi.
- Tahadhari kali inahitajika kwa programu zinazolenga toleo la Android chini ya 4.2 kutokana na udhaifu unaoruhusu utekelezaji wa nambari kwa mbali kupitia JavaScript yenye nia mbaya, ikichambua mawimbi.
Kutekeleza Daraja la JavaScript
- Viunganishi vya JavaScript vinaweza kuingiliana na nambari ya asili, kama inavyoonyeshwa katika mifano ambapo njia ya darasa inafunuliwa kwa JavaScript:
@JavascriptInterface
public String getSecret() {
return "SuperSecretPassword";
};
- JavaScript Bridge inawezeshwa kwa kuongeza kiolesura kwenye WebView:
webView.addJavascriptInterface(new JavascriptBridge(), "javascriptBridge");
webView.reload();
- Uwezekano wa kutumia JavaScript, kwa mfano, kupitia shambulio la XSS, inawezesha wito wa njia za Java zilizofichuliwa:
<script>alert(javascriptBridge.getSecret());</script>
- Ili kupunguza hatari, zuia matumizi ya daraja la JavaScript kwa nambari iliyotumwa na APK na zuia kupakia JavaScript kutoka vyanzo vya mbali. Kwa vifaa vya zamani, weka kiwango cha chini cha API kuwa 17.
Utekelezaji wa Nambari ya Mbali kwa Kutumia Uakisi (RCE)
- Mbinu iliyodhibitishwa inaruhusu kufikia RCE kupitia uakisi kwa kutekeleza mzigo maalum. Hata hivyo, alama ya
@JavascriptInterface
inazuia ufikiaji usioruhusiwa wa njia, ikipunguza eneo la shambulio.
Upelekaji wa Mbali
- Upelekaji wa mbali unawezekana na Zana za Watengenezaji wa Chrome, ikiruhusu mwingiliano na utekelezaji wa JavaScript wa kiholela ndani ya maudhui ya WebView.
Kuwezesha Upelekaji wa Mbali
- Upelekaji wa mbali unaweza kuwezeshwa kwa WebViews zote ndani ya programu kwa:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
WebView.setWebContentsDebuggingEnabled(true);
}
- Ili kuwezesha uchunguzi kwa msingi wa hali ya kuhakikiwa ya programu:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
if (0 != (getApplicationInfo().flags & ApplicationInfo.FLAG_DEBUGGABLE))
{ WebView.setWebContentsDebuggingEnabled(true); }
}
Kutuma faili za kiholela
- Inaonyesha kutuma faili za kiholela kwa kutumia XMLHttpRequest:
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
if (xhr.readyState == XMLHttpRequest.DONE) {
alert(xhr.responseText);
}
}
xhr.open('GET', 'file:///data/data/com.authenticationfailure.wheresmybrowser/databases/super_secret.db', true);
xhr.send(null);
Marejeo
- https://labs.integrity.pt/articles/review-android-webviews-fileaccess-attack-vectors/index.html
- https://github.com/authenticationfailure/WheresMyBrowser.Android
- https://developer.android.com/reference/android/webkit/WebView
- https://medium.com/@justmobilesec/deep-links-webviews-exploitations-part-ii-5c0b118ec6f1
- https://www.justmobilesec.com/en/blog/deep-links-webviews-exploitations-part-I
Jifunze AWS hacking kutoka sifuri hadi shujaa na htARTE (HackTricks AWS Red Team Expert)!
Njia nyingine za kusaidia HackTricks:
- Ikiwa unataka kuona kampuni yako ikitangazwa kwenye HackTricks au kupakua HackTricks kwa PDF Angalia MIPANGO YA KUJIUNGA!
- Pata bidhaa rasmi za PEASS & HackTricks
- Gundua Familia ya PEASS, mkusanyiko wetu wa NFTs ya kipekee
- Jiunge na 💬 Kikundi cha Discord au kikundi cha telegram au tufuate kwenye Twitter 🐦 @carlospolopm.
- Shiriki mbinu zako za kuhack kwa kuwasilisha PRs kwa HackTricks na HackTricks Cloud repos za github.