当前位置:首页 > 百科

app渗透测试教程

我花了三个小时没搞定一个银行App,渗试教最后发现漏洞出在它的透测热修复补丁上。那补丁包没做签名校验,渗试教直接躺在SD卡里等人篡改。透测这活儿干久了你会发现,渗试教App渗透测试最魔幻的透测地方在于——你永远猜不到开发者会把什么秘密塞进客户端里。

拿到一个App,渗试教别急着上Burp Suite抓包。透测先把它当压缩包解压看看。渗试教Android的透测APK就是个zip,iOS的渗试教IPA也一样。我习惯先翻assets目录,透测再找res/raw。渗试教上周测一个健身App,透测居然在assets里翻出一份完整的渗试教数据库备份,里面有两百万用户的手机号和体重记录。开发者大概觉得没人会解包看。他们错了。

代码审计是重头戏,但别傻乎乎一行行读。直接搜关键词:password、secret、api_key、token。配合正则表达式找硬编码密钥。有一次我就在一个社交App的so文件里找到了阿里云OSS的AccessKey,顺手把它的整个存储桶列了一遍。那里面全是用户上传的身份证照片。这种案例太多了,说真的,很多公司的安全预算都花在了防火墙和WAF上,却没人管App里那堆明晃晃的密钥。

动态测试讲究的是耐心。抓包工具得配好证书,绕过SSL Pinning是基本功。Frida是个好东西,但别一上来就hook所有函数。先观察App的正常行为,看看它什么时候发起网络请求,参数怎么拼接的。我习惯用objection配合r0capture做脱壳,再用Jadx看逻辑。但更关键的是理解业务逻辑漏洞——比如支付流程,改个价格参数能不能通过?改个数量会不会变负数?积分商城兑换逻辑能不能越权?

说到越权,这是App测试里最容易被忽视的点。很多App的接口只校验了登录状态,没校验资源归属。你登录A账号,把请求里的user_id改成B的,能不能看到B的订单?改个订单号能不能操作别人的退款?这种漏洞比SQL注入还常见,但危害一点不小。我测过一个大厂的电商App,改个订单状态参数就能把任意订单标记为已发货。就这么简单。

还有个坑得提醒你:别只测客户端。App的WebView是个大入口。很多App内嵌了H5页面,那些页面往往没做和原生一样的防护。测一下WebView的JavaScript桥接接口,看看能不能通过JS调用原生方法。去年我测一个新闻App,它的WebView开了file域访问,直接可以读取本地文件。读个/shared_prefs里的xml,里面存着session token。

最后说点工具之外的。测试前先看权限申请列表。一个手电筒App要读取联系人权限?这本身就是问题。再检查它有没有私自把数据传到第三方统计平台。隐私合规这块,现在监管查得严,但很多老App还在裸奔。你测的时候多留意一下数据流向,说不定能挖出个数据泄露的大新闻。

这行干久了,你会发现大多数漏洞不是技术多高深,而是开发者懒。懒得做签名校验,懒得管密钥泄露,懒得校验资源归属。你的工作就是替他们收拾烂摊子。别抱怨活多,每修一个漏洞,就少一个被薅羊毛的普通用户。就这么回事。

分享到: