• 【总结】APP客户端渗透测试


    一、app代码未混淆
    1、使用7zip解压apk文件
    2、执行命令:dex2jar.bat apk解压后文件夹中的classes.dex文件
    3、上述命令执行后会在apk文件夹中生成java源码文件classes_dex2jar.jar
    4、直接使用jd-gui打开上述文件查看代码是否混淆
    (可以尝试直接使用Androidkiller打开apk文件)

    二、app应用完整性
    1、将apk文件复制到apktool目录下
    2、apktool对apk文件进行解包,命令:java -jar apktool_2.3.0.jar d apk文件
    3、解包成功后会在当前文件夹下生成一个新的apk文件夹
    4、进入新的apk文件夹下,找到相应logo,一般存在于res文件夹下的以mipmap开头的几个文件夹中,或者直接在apk文件夹下搜索launcher
    5、随便下载个png图片,替换掉logo
    6、替换成功后重新打包,执行命令:java -jar apktool_2.3.0.jar b apk文件夹
    7、打包生成的apk文件默认存放在apk文件夹中dist文件夹下
    8、对新生成的apk问价进行签名,执行命令:java -jar signapk.jar testkey.x509.pem testkey.pk8 原apk文件名 新apk文件名

    三、文件存储安全性(参考https://www.52pojie.cn/thread-621516-1-1.html)
    1、数据库文件(adb或ddms导出数据库文件,使用sqliteSpy打开数据库文件查看是否泄露敏感信息)
    2、客户端存储文件(adb或ddms查看客户端存储文件,如sharedpreferences文件等)

    四、文件权限安全性
    adb或ddms查看app文件权限,一般默认后三位为--x,即其他用户组用户不具备读写权限

    五、组件安全性(drozer)

    检测攻击面

    run app.package.attacksurface [package name]

    攻击activity:

    run app.activity.info -a [package name]

    run app.activity.start --component [package name] [component name]

    攻击Content Provider(注入和遍历):

    run app.provider.info -a [package name]

    run scanner.provider.finduris -a [package name]

    run app.provider.query [uri]

    run app.provider.update [uri] --selection [conditions] [selection arg] [column] [data]

    run scanner.provider.sqltables -a [package name]

    run scanner.provider.injection -a [package name]

    run scanner.provider.traversal -a [package name]

    攻击Broadcast Receivers:

    run app.broadcast.info -a [package name]

    run app.broadcast.send --component [package name] [component name] --extra [type] [key] [value]

    run app.broadcast.sniff --action [action]

    攻击Service:

    run app.service.info -a [package name]

    run app.service.start --action [action] --component [package name] [component name]

    run app.service.send [package name] [component name] --msg [what] [arg1] [arg2] --extra [type] [key] [value] --bundle-as-obj

    问题记录:

    查看apk版本等信息
    D:apptooladtadt-bundle-windows-x86_64-20140702sdkuild-toolsandroid-4.4W>aapt.exe dump badging D:apptool est.apk

    adb无法连接夜神模拟器shell的,多半是版本不同的原因,可尝试将adb.exe改为nox_adb.exe复制到夜神模拟器安装目录下

    执行run app.package,list命令无法获取包名,可直接adb获取包名,然后直接使用包名进行后续测试

    运行dorzer显示~/.drozer_config file错误时,进行如下操作:

    检查JDK是否安装
    环境变量是否正确配置(命令行下执行:javajavacjava -version 命令是否返回正常数据)
    如果以上项目均正常的话可做如下修复:

    建立名为 .drozer_config的文件,文件中添加如下内容:

    [executables]
    java=C:Program Files (x86)Javajdk1.8.0_144injava.exe
    javac=C:Program Files (x86)Javajdk1.8.0_144injavac.exe

    即java和javac的路径,保存后存放到C:UsersXXX 目录下,其中XXX为当前用户名目录下,之后重新连接成功

    如果在win7下此文件.drozer_config 无法命名,解决办法

    先把文件名改为1.drozer_config,然后使用命令 rename  1.drozer_config  .drozer_config 即可

    一些常用命令:

    adb.exe devices
    adb.exe connect 127.0.0.1:62001

    adb.exe shell
    adb.exe pull /sdcard/xxx_db

    adb.exe forward tcp:31415 tcp:31415

    drozer.bat console devices

    dorzer.bat console connect

  • 相关阅读:
    WinForm窗口间传值
    如何自定义标签
    oracle数据库开启的时候 是先开监听还是先开主服务,关数据库的时候呢???
    oracle 10g 安装时字符集的选择,和后边的修改
    Oracle数据库安装及配置(一)
    Win7下完全卸载Oracle 11g的步骤
    Oracle创建表空间、创建用户以及授权
    ORACLE创建表空间、创建用户、更改用户默认表空间以及授权、查看权限
    Linux 常用命令集合
    Java之JSP和Servlet基础知识
  • 原文地址:https://www.cnblogs.com/peterpan0707007/p/9481510.html
Copyright © 2020-2023  润新知