博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
虫洞漏洞挖掘研究
阅读量:7186 次
发布时间:2019-06-29

本文共 1930 字,大约阅读时间需要 6 分钟。

Android应用可能会使用sockets(TCP、UDP、UNIX)在应用间或者自身应用组件间进行通信,然而这种通信方式本身并没有提供任何身份认证。

● 当开放端口绑定到0.0.0.0,那么任何IP都可以访问。
● 当开放端口绑定到127.0.0.1,那么同一设备上的应用依然可以访问。
一旦端口访问身份验证不严,就有可能产生漏洞,造成远程命令执行。

漏洞挖掘方法

1、查看应用端口开放情况

方法一

(1)使用netstat命令查看端口开放情况。

含义如下:

Listen *:80Listen 0.0.0.0:80Listen 127.0.0.1:80Listen 192.168.0.5:80

The above options show up as:-

:::800.0.0.0:80127.0.0.1:80192.168.0.5:80

and translate to:-

● Listen on any IP address (IPv4 or IPv6)● Listen on any IPv4 address on that server● Listen on IPv4 localhost only● Listen on external IPv4 address 192.68.0.5

(2)选择感兴趣的端口转换成16进制,查看位于/proc/net/目录下对应socket套接字,在其中找到使用该端口的uid,通过uid可以得知应用用户名。

(3)通过用户名找到app

方法二

直接使用netstat plus这个APP进行查看。

2、定位核心代码

得知某个应用开放某个端口后,接下来可以在该应用的逆向代码中搜索端口号(通常是16进制表示),重点关注ServerSocket(tcp)、DatagramSocket(udp)等类,定位到关键代码,进一步探索潜在攻击面。

漏洞挖掘示例

以sina微博5.2.0版本为例,介绍虫洞漏洞挖掘过程。

我们通过netstat plus发现sina微博在本地监听了两个端口:8967和9527

下面是监听8967端口的代码

通过分析代码可知这是一个普通的socket通信。

监听9527端口的代码在native层,libweibohttp.so的start_httpd()函数中,如图所示。

该函数调用了另外一个函数用来处理http请求:

我们由此可以得知,这实际上是实现了一个http server,绑定9527端口到127.0.0.1。我们追踪这个native函数到Java层代码,发现它是在一个线程中调用的。

调用initHttpd这个native函数之前,分别实例化了类c和类b。跟进这个两个类,发现它们都继承了IMiniPlugin类。类中的isServer和server函数在native代码中进行了调用:

我们来看看c类中isServer和server函数的具体实现:

通过这几个函数调用,我们知道这段代码首先判断传入的用户请求路径是否包含"/query"或者"/si"字符串,然后做出不同的处理。通过代码分析和参数拼接,我们得到

http://127.0.0.1:9527/query?appid=com.sina.weibohttp://127.0.0.1:9527/si?act=actionhttp://127.0.0.1:9527/si?cmp=应用包名_activity名http://127.0.0.1:9527/si?data=data

再看看b类中isServer和server函数的具体实现:

判断传入的用户请求路径是否包含"/login"字符串,同样通过代码分析和参数拼接,我们得到

http://127.0.0.1:9527/login?callback=xxx

我们把这些url在手机浏览器中测试,发现

(1)通过以下链接可以打开用户手机上已安装应用的相关组件:

http://127.0.0.1:9527/si?act=actionhttp://127.0.0.1:9527/si?cmp=应用包名_activity名http://127.0.0.1:9527/si?data=data

(2)通过http://127.0.0.1:9527/query?appid=com.sina.weibo可以获取到应用的安装信息,如果没有安装则返回“not install”

(3)通过http://127.0.0.1:9527/login?callback=xxx这个应该是获取登录用户信息的,但是不知道为什么总是测试不成功。

漏洞防御

应用通信过程中应增加身份校验。

转载地址:http://jqukm.baihongyu.com/

你可能感兴趣的文章
快速构建Windows 8风格应用23-App Bar概述及使用规范
查看>>
Saltstack系列(二) Saltstack分组
查看>>
.NET的XMPP开发包 MatriX
查看>>
JQuery easyui Datagrid 分页事件
查看>>
MPLS 转发原理
查看>>
android 手机型号,版本号,
查看>>
家庭宽带之IPv6网络测试
查看>>
让宏哥告诉你什么叫做 OO -- 放在博客比较有价值
查看>>
filter的时间过滤有关问题
查看>>
access手工注入笔记
查看>>
zookeeper原理(转)
查看>>
垂直居中的几种方法
查看>>
我的友情链接
查看>>
PTN960
查看>>
$_FILES[‘file’][‘error’] 错误代码和相关的错误常量
查看>>
将项目加入maven管理时报错
查看>>
Qt线程
查看>>
数据库小知识
查看>>
ASP.NET WEB API必知必会:特性路由
查看>>
'Worker' object has no attribute '_config'
查看>>