首页
社区
课程
招聘
[原创]记一次APP爆破登陆并平行越权实例及相关安全建议
发表于: 2017-9-11 13:47 5938

[原创]记一次APP爆破登陆并平行越权实例及相关安全建议

2017-9-11 13:47
5938

记一次APP爆破登陆并平行越权

APP名称:加油广东 APP版本:3.2

准备工具: DDMS,Fiddler,JEB 2.x,Android Studio

 

1.) 初始分析

先配置好抓包环境并挂上代理抓包

登录帐号: 1392411****密码:任意字符

出现下图

 


要求接短信验证码完善帐号信息,我们看看抓的登录包




双向传输密文,没有看到任何明文看看POST参数表

 


我们找别的请求看看 isencrypt 这个参数变化以后POST数据差异

 

可以看出isencrypt = 0则不通过RSA+AES交换数据

 

反编译看APP的流程:(APP360加固,需要先脱壳,这里略过不说)

 

看上图标注,

 

跳转到引用,可以看到是一个封装好的HttpRequestUtils工具类

继续深入packageLogin


继续往下看addEncryptFlag方法

 

为了方便理解,我修改了参数名称

 

 

 

到这里登录的加密流程已经分析完了,我们通过Hook实现强制禁用RSA+AES交换数据

 

if (Param.packageName.equals("com.sunboxsoft.oilforgdandroid")){ //coord: (0,18,33) | addr: Lnet/sourceforge/simcpux/httputils/HttpPackageParams;->addEncryptFlag(Ljava/util/Map;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/util/Map; | loc: ? Class<?> utils = XposedHelpers.findClass("net.sourceforge.simcpux.httputils.HttpPackageParams",Param.classLoader); findAndHookMethod(utils, "addEncryptFlag", Map.class, String.class, String.class, String.class, String.class, new XC_MethodHook() { @Override protected void beforeHookedMethod(MethodHookParam param) throws Throwable { super.beforeHookedMethod(param); HookUtils.asyncLogi(TAG,"replace isencrypt 0"); param.args[1] = "0"; } }); }



重启,让插件生效再次抓登录包,还是那个帐号密码:任意字符

 


发现虽然我们停留在登录页面并提示登录失败,但是服务器已经给我们返回了帐号信息

 

 

 


2) 爆破登录

 

我们返回HttpRequestUtils类的地方反向查找postLogin引用

 


4个引用,这里就不一个一个看了我们从view入手确定调用

DDMS Dump View Hierarchy

 


是个FrameLayout, 确定为引用3,点进去继续分析

 


因为网络状态是OK的,所以我们只看onSuccess


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

上传的附件:
收藏
免费 1
支持
分享
最新回复 (3)
雪    币: 208
活跃值: (119)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
学习了,现在也正在学习分析app
2017-9-11 14:08
0
雪    币: 7016
活跃值: (4227)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
感谢分享
2017-9-11 18:53
0
雪    币: 232
活跃值: (1801)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
学到好多东西    感谢
2017-9-11 19:51
0
游客
登录 | 注册 方可回帖
返回
//