乐于分享
好东西不私藏

你会App渗透嘛?它和传统的Web渗透有什么区别?这也是面试渗透岗比较爱问的!

你会App渗透嘛?它和传统的Web渗透有什么区别?这也是面试渗透岗比较爱问的!

一位深耕网络安全的老兵,目前是一家安全公司的技术分管,擅长渗透测试及安全培训方向,老A的愿望是大家没烦恼,一切顺心!

你会App渗透嘛?它和传统的Web渗透有什么区别?这也是面试渗透岗爱问的问题……

嗯呢?移动端渗透不会?

那你可得好好花点功夫研究移动端渗透怎么开展,现在很多单位要求全会!

App渗透和传统的Web渗透,底层漏洞是一样的,包括:SQL注入、越权、逻辑漏洞、文件上传,App里照样有

区别在于:攻击入口不一样,数据包的形态不一样,你拿到的东西也不一样

Web渗透是浏览器里直接抓包改包。App渗透是你得先搞定流量怎么抓、数据怎么解、甚至有些东西根本不在网络上传输

下面重点讲:

区别一:抓包方式不一样

Web渗透打开Burp配好代理就能抓,App不一定

HTTP/HTTPS流量: 大部分App走的是HTTP/HTTPS。但Android 7.0以上默认不信任用户证书,不做额外配置的话,Burp抓不到HTTPS的包。需要把Burp证书装成系统证书(需要root),或者用VirtualXposed、Frida之类的工具绕过SSL Pinning

TCP/UDP直连: 有些App不走HTTP协议,直接连Socket。游戏、即时通讯类的App经常这么干。Burp就废了,需要用Wireshark抓包,或者用Frida Hook住Socket相关函数才能看到数据

第三方库封装: 有些App用了OkHttp、Retrofit这些网络库,流量经过了封装,有时候连URL都看不到,得从代码里逆向找接口地址

区别二:加密更常见

Web渗透里虽然也有加密参数,但毕竟能看到前端JS,慢慢逆总能找到逻辑

App里不一样。很多App把加密逻辑写在so文件里,你看到的是一堆JNI调用,关键代码在C/C++层。得用IDA Pro或者Ghidra去逆向so文件,找到加密函数。

更麻烦的,加密逻辑在服务端下发,每次启动动态加载。或者用了白盒加密,密钥分散在代码里,抓到的包全是乱码,不改加密逻辑根本没法改参数。

区别三:本地数据存储

Web渗透里没有"本地存储"这个概念,所有数据都在服务端

App不一样,App在手机上存了大量数据:

SharedPreferences: 存配置信息,有时候开发把Token、用户ID、甚至密码明文存里面

SQLite数据库: 存聊天记录、缓存数据

本地文件: 下载的图片、文档、日志文件

区别四:组件导出漏洞

这是Web渗透里完全没有的概念

Android App由四大组件组成:Activity、Service、BroadcastReceiver、ContentProvider。每个组件都可以设置"导出"属性

如果某个组件不小心被设置成导出,攻击者就可以从外部调用它

Activity导出:绕过登录直接进入主界面

ContentProvider导出:直接读取App的数据库

BroadcastReceiver导出:发送恶意广播触发功能

测试方法: 用drozer或者adb shell dumpsys package查看所有导出组件,然后挨个测

面试官问到这个,不一定要你现场演示,但你要能说清楚思路

一个不错的回答框架:

App渗透和Web渗透底层漏洞是一样的,核心区别是攻击入口和流量形态不同。

我会先解包看配置文件,找导出组件和权限配置。然后配置抓包环境,如果遇到SSL Pinning就用Frida绕过。抓到包之后,测试方法和Web渗透一样,测越权、注入、逻辑漏洞。如果请求参数加密了,就反编译找加密逻辑,定位key和iv。同时还会检查本地存储,看SharedPreferences和SQLite里有没有敏感信息。

核心差别: Web渗透是浏览器里抓包改包,App渗透需要先搞定抓包环境、处理加密、检查本地存储、测试组件导出。底层漏洞都差不多,但入口和形态完全不同

其实,App渗透不是学一套新漏洞,是在Web渗透的基础上加了一层"App特有的攻击面"。

会Web渗透,就能看懂App的流量包。加上组件测试和本地存储检查,App渗透的基本套路就通了

所以面试官问你"会不会App渗透",其实想听的是:你能不能把Web渗透的知识迁移到移动端,并且清楚App多了哪些地方可以测

仅用技术交流,大家一切顺利!

⚠️ 法律声明:以上内容仅供安全学习和授权测试使用。未经授权的漏洞利用属于违法行为,请勿对未经授权的目标进行测试