Skip to content

APP安全漏洞

任意用户登录

  • token生成算法可逆(token生成算法在本地,且app未加固导致可以直接反编译生成任意token)。
  • 在shared_prefs目录中,存在一个用户登录信息文件,里面有用户名密码,我们把用户名修改为一个其他的已知存在的用户名,密码任意。重新打开app,发现用户登录成功。

Android APP AllowBackup

# 漏洞原因:cat manifest.xml
<application android:allowBackup="true">

# 备份语句
adb backup -nosystem -noshared -apk -f com.*.ab(备份名字) com.package(你要备份的包)

# 恢复语句
adb restore com.*.ab

日志泄漏敏感信息

  • 日志泄漏账号密码。
  • 日志泄漏http请求(有的时候可以用此方法来绕过https不能抓包的问题)。

支付绕过

通过逆向,绕过支付。参考:一个新手的逆向之路,记录下我搞下

敏感信息泄漏

  • apk源码中存放邮箱账号密码、内网地址、接口信息等。
  • 本地数据库中存放用户信息。
  • 日志中显示登录信息。

文件权限漏洞

正常的文件权限:rw-rw----,目录权限:rwxrwx---。

APP漏洞与利用

组件泄漏

  • 漏洞原因

    • 组件在被调用时未做验证。
    • 在调用其他组件时未做验证。
  • 漏洞利用

    • 调用暴露的组件,达到某种效果,获取某些信息,构造某些数据。如:调用暴露的组件发短信、微博等。
    • 监听暴露组件,读取数据。
  • 修复建议

    • 验证输入信息、验证组件调用等。android:exported设置为false。
    • 使用android:protectionLevel="signature"。验证调用来源;

反编译

  • 漏洞原因

    • APK包非常容易被反编译成可读文件,稍加修改就能重新打包成新的APK。
  • 漏洞利用

    • 软件破解,内购破解,软件逻辑修改,插入恶意代码,替换广告商ID。
  • 修复建议

    • 使用ProGuard等工具混淆代码,重要逻辑用NDK实现。
  • 漏洞举例

    • 反编译重打包FlappyBird,把广告商ID换了,游戏改加插一段恶意代码等等。

数据对存储与传输

  • 漏洞原因1

    • 外部存储(SD卡)上的文件没有权限管理,所有应用都可读可写。开发者把敏感信息明文存在SD卡上,或者动态加载的payload放在SD卡上。
  • 漏洞利用1

    • 窃取敏感信息,篡改配置文件,修改payload逻辑并重打包。
  • 修复建议1

    • 不要把敏感信息放在外部存储上面;在动态加载外部资源的时候验证文件完整性。

  • 漏洞原因2

    • 使用全局可读写(MODE_WORLD_READABLE,MODE_WORLD_WRITEABLE)的内部存储方式,或明文存储敏感信息(用户账号密码等)。
  • 漏洞利用2

    • 全局读写敏感信息,或 root 后读取明文信息。
  • 修复建议2

    • 不适用全局可读写的内部存储方式,不明文存储用户账号密码。

密码泄漏

  • 漏洞原因

    • 密码明文存储,传输。
  • 漏洞利用

    • root后可读写内部存储。
    • SD卡全局可读写。
    • 公共Wi-Fi抓包获取账号密码。
  • 修复建议

    • 实用成熟的加密方案。不要把密码明文存储在SD卡上。

WebView

  • 漏洞原因

    • 恶意APP可以注入JavaScript代码进入WebView中的网页,网页未作验证。
    • 恶意网页可以执行JavaScript反过来调用App中注册过的方法,或者使用资源。
  • 漏洞利用

    • 恶意程序嵌入Web APP,然后窃取用户信息。
    • 恶意网页远程调用APP代码。更有甚者,通过Java Reflection调用Runtime执行任意代码。
  • 修复建议

    • 不使用WebView中的setJavaScriptEnabled(true),或者使用时对输入进行验证。

其它漏洞

  • ROOT后的手机可以修改APP的内购,或者安装外挂APP等;
  • 恶意的广告包;
  • 利用Next Intent;