【原创】利用骚姿势绕过代理屏蔽和单向验证的方法汇总
APP使用okhttp框架代理屏蔽的解决方法
大多数进行渗透测试的时候都可以使用burp抓包,但有的app的部分功能会使用okhttp框架,这种框架会使App不使用默认的系统代理,解决方法就是通过proxy的方式走charles,下面是具体使用方法;
安装并调试charles
1,首先设置charles的端口;
![image-20220506172159857](https://img2022.cnblogs.com/blog/1231688/202205/1231688-20220506223205684-963114387.png)
2,Charles SSL 代理配置, 点击Proxy -> SSL Proxying Settings, 添加信任地址 【host】:443 ( 全信任的话 可以配置 *:443 ) 和打开Enable SSL Proxying
![image-20220506174717209](https://img2022.cnblogs.com/blog/1231688/202205/1231688-20220506223205659-1640698656.png)
3,先在PC上选择安装证书;
4,然后在导出cer证书;
4,手机端安装证书;
![image-20220506180334693](https://img2022.cnblogs.com/blog/1231688/202205/1231688-20220506223205686-1456183664.png)
5,在设置一层代理,将数据包再转给burp;
安装并调试postern
在手机模拟器中安装postern代理,并先设置http代理;
![image-20220506173040430](https://img2022.cnblogs.com/blog/1231688/202205/1231688-20220506223205659-1099796115.png)
然后设置代理sock;
![image-20220506173313533](https://img2022.cnblogs.com/blog/1231688/202205/1231688-20220506223205678-1278566487.png)
然后设置匹配规则;
![image-20220506173700284](https://img2022.cnblogs.com/blog/1231688/202205/1231688-20220506223205646-136827328.png)
小结
手机安装Postern,然后APP的流量包通过Postern-->charles-->burp,通过这种方式就能绕过APP的okhttp框架代理的限制,从而可以抓到想要的数据包。
小实战一把
选用一个线上知名的APP,选择忘记密码选项,然后点击发送验证码;
![image-20220506203829486](https://img2022.cnblogs.com/blog/1231688/202205/1231688-20220506223205673-1503940899.png)
获取下返回包;
得知正确的返回包的json格式如下;
HTTP/1.1 200 OK
Date: Fri, 06 May 2022 12:48:43 GMT
Content-Type: application/json; charset=UTF-8
Connection: close
Content-Length: 35
{"errorlog":"2031","success":false}
验证码如下:
{"items":[],"bookAppTempFrees":[{"activityType":-1,"ttl":0,"nid":363777,"discount":0.0,"price":0,"activityName":"","gid":100363777,"originPrice":0,"tempFree":false},{"activityType":-1,"ttl":0,"nid":161251,"discount":0.0,"price":0,"activityName":"","gid":100161251,"originPrice":0,"tempFree":false},{"activityType":-1,"ttl":0,"nid":171511,"discount":0.0,"price":0,"activityName":"","gid":100171511,"originPrice":0,"tempFree":false}],"errorlog":"","success":true}
得出结论是4位的验证码,那就尝试包里破解,发现做了限制;
然后转换下思路,换个自己的账号登陆成功后,截取返回给前端的json,然后用在任意手机的返回上;
居然成功了。。。。可以进入重置界面。。。。
![image-20220506210554933](https://img2022.cnblogs.com/blog/1231688/202205/1231688-20220506223205718-1348737236.png)
绕过单向认证绕过
用XP框架的JustrustME来绕过,自动化检测是否存在单向认证,如果有他帮你hook[他会帮你卡住让app不进入检测证书的环节
https://www.jianshu.com/p/3382cc765b39
软件如下:
![image-20220506212419609](https://img2022.cnblogs.com/blog/1231688/202205/1231688-20220506223205728-1181713053.png)
具体安装流程可以参考视频:
https://www.bilibili.com/video/BV1xh411a7h3?from=search&seid=12354466957407980525&spm_id_from=333.337.0.0
把xponsed依赖的组件放入手机
然后将文件进行转移;
//挂在linux外的文件
mount -o remount -w /system
//转移文件
cp -r /storage/sdcard0/Pictures/224 /system
//权限报错就加权限
chmod -R 777 /storage/sdcard0/Pictures/224
//改名好记
mv 224 xposed
//进入文件夹执行
sh script.sh
然后打开主APP,发现安装成功了,但没有激活,重启下模拟器;
![image-20220506221005277](https://img2022.cnblogs.com/blog/1231688/202205/1231688-20220506223205680-1718737916.png)
重启完毕,发现激活
![image-20220506221124443](https://img2022.cnblogs.com/blog/1231688/202205/1231688-20220506223205693-1245782212.png)
安装JustTrustMe.apk
提示没激活就勾上选项,接下来单向认证的内容就可以自动hook。
![image-20220506221548580](https://img2022.cnblogs.com/blog/1231688/202205/1231688-20220506223205680-834107844.png)
总结
代理屏蔽:app不走系统代理[最常见] okhttp框架
破局:利用软件挂VPN 走charles再链接burp改包;
单向认证,证书绑定 (必须要有证书 app得有证书) 客户端检测服务端
破局:
hook[我们通过技术手段不让代码执行哪一块]
解包app,改代码,捞里面的合法证书,拿来伪装;
双向认证:客户端、服务端都检测;(需要二进制功底)