Source: Bug Bounty Bootcamp by Vickie Li
Android apps communicate with the same backend APIs as web apps. Many web vulnerabilities (IDORs, SQLi, XSS, auth bugs) appear in the mobile surface. Android-specific issues include certificate pinning bypass, hardcoded secrets in APKs, and insecure local storage.
Route Android traffic through Burp Suite to intercept HTTPS:
Apps with certificate pinning reject Burp's CA. Bypass options:
Frida (dynamic instrumentation):
frida-server # running on device frida -U -f com.target.app -l ssl_bypass.js --no-pause
Objection (Frida-based, simpler interface):
objection -g com.target.app explore android sslpinning disable
After disabling pinning, Burp intercepts all HTTPS traffic from the app.
An APK is a ZIP file. Key contents:
AndroidManifest.xml – permissions, exported activities/receivers/providers, intent filtersclasses.dex – compiled Dalvik bytecoderes/ – resources including strings.xml (often contains hardcoded secrets)assets/ – bundled files, sometimes including config and certificateslib/ – native .so librariesADB (Android Debug Bridge):
adb devices # list connected devices/emulators adb install target.apk # install APK adb pull /data/data/com.target.app/ # pull app data directory (requires root) adb push file.txt /sdcard/ # push file to device adb shell # interactive shell on device
Apktool (decompile/recompile APK):
apktool d target.apk -o output/ # decompile to Smali + resources apktool b output/ -o repackaged.apk # rebuild
Frida (dynamic instrumentation): Hook Java methods at runtime, bypass cert pinning, trace function calls.
MobSF (Mobile Security Framework): Automated static + dynamic analysis. Upload APK to get a full vulnerability report: exported components, hardcoded secrets, insecure API usage, permissions audit.
Decompile the APK with Apktool or jadx, then:
grep -r "password\|secret\|api_key\|token\|AWS\|Bearer" output/ grep -r "http://" output/ # cleartext HTTP endpoints cat output/res/values/strings.xml # hardcoded strings cat output/AndroidManifest.xml # exported components
Exported activities, content providers, and broadcast receivers can be triggered by other apps or adb:
adb shell am start -n com.target.app/.AdminActivity adb shell content query --uri content://com.target.app/users
adb shell run-as com.target.app ls databases/ cat databases/app.db | strings cat shared_prefs/*.xml
Apps often store data in unencrypted SQLite files:
adb pull /data/data/com.target.app/databases/app.db sqlite3 app.db .tables SELECT * FROM users;