http://netsecurity.51cto.com/art/201403/433726_all.htmjava
以往安全爱好者研究的每每是app的本地安全,好比远控、应用破解、信息窃取等等,大多人尚未关注到app服务端的安全问题,因而在这块的安全漏洞很是多。python
移动app大多经过web api服务的方式跟服务端交互,这种模式把移动安全跟web安全绑在一块儿。移动app以web服务的方式跟服务端交互,服务器端也是一个展现信息的网站,常见的web漏洞在这也存在,好比说SQL注入、文件上传、中间件/server漏洞等,可是因为部分app不是直接嵌入网页在app中,而是使用的api接口返回josn数据,致使扫描器爬虫没法爬取连接。web
下图是抓的糗事百科糗事列表,contet字段内容与我无关 -_-|||api
那么我尝试去找app服务端的漏洞,目前想到的两种方法:安全
1.反编译APP 2.http[s]代理抓包
那么有人应该会提出问题,这两种方式拿到的连接都是零零散散的,也很差找漏洞啊,我这边的利用方式是把全部抓取的连接直接提交任务到多引擎web漏洞扫描器,扫描器能够批量扫SQL注入等等,其实除了这些漏洞,还有不少能够利用的信息。服务器
1、反编译APPapp
有两种反编译方式,dex2jar和apktool,两个工具反编译的效果是不同的,dex2jar反编译出java源代码,apktool反编译出来的是java汇编代码。dom
1. dex2jar反编译工具
工具:dex2jar+jdguiweb安全
方法:
a. 修改apk为zip扩展名
b. 解压出classes.dex文件
c.使用dex2jar反编译(dex2jar.bat classes.dex)
最后反编译出来的源码以下图。虽然部分类被配置proguard.cfg 混淆了,可是仍是能够利用的。
2. apktool反编译
工具:apktool
这个工具比较简单,直接(apktool d apkfile)就能够反编译apk文件,反编译出来的东西为smali反汇编代码、res资源文件、assets配置文件、lib库文件,咱们能够直接搜索smali文件和资源文件来查找连接等。
利用app查找网站真实IP
除了app服务端的漏洞,还有一个比较好玩的利用方式,经过收集app里面的子域名ip来寻找目标网站的真实IP,根据经验,大多app的接口都没有使用cdn等服务。
糗事百科真实IP
2、http[s]代理抓包
这个方法利用在移动设备上设置代理,经过人工操做使app与服务端交互,
步骤:
a. 在抓包机器上开启代理,测试能够用burp,须要自动化提交扫描任务能够本身写一个代理程序,移动设备设置代理服务器。
b. 在移动设备上操做app,代理端抓取以下。
总结:
整个思路已经很清晰,那么其实要作的就是让这个过程自动化,反编译以后有一个问题,url不必定完整,不少URL都是拼接起来的,我尝试写一套分析引擎,自动化反编译,而后经过对源码的分析,拼接完整的api url,再进行漏洞扫描。
下图是一个dome,后面准备用python来写,放到服务器上。