本文旨在为同样缺乏渗透测试经验的初学者提供一些测试思路。涉及的内容可能比较基础,表哥们见谅。APK 解包拿到 apk 之后直接用 7-Zip 解压可以得到几个文件夹、一个 AndroidManifest.xml 文件、一个dex文件。使用 dex2jar https://sourceforge.net/projects/dex2jar/ 将这个dex文件解压会生成一个jar文件,然后使用jd-gui就可以查看java源代码了。虽然可以通过查看源码来寻找代码漏洞,但通常会出现混淆情况,因此不会在此深入讨论。上边提到的 xml 文件一定不能发放过,里边涉及到许多重要的配置项,比如:- AndroidManifest.xml文件中android:debuggable为true。app 可被任意调试- AndroidManifest.xml文件中android: allowBackup为true。app 数据可以被备份导出。- 等等...还有一点在实际测试过程中可能会用到:在对 apk 解压之后可以尝试在 powershell 里边搜一下 db 文件,说不定有敏感信息(为什么这么说,因为我碰到过一次...)
for /r F:\source-code %i in (*.db) do echo %i
apk安全分析检测:
实验:apk安全分析检测(合天网安实验室)
进行实验学习如何运行apk安全分析检测程序,并借此对apk进行安全分析检测,结果发现潜在威胁。)
最简单的枚举用户名情形就是,当输入用户名并登录时,系统会响应该用户名不存在。这次碰到的是登陆不需要密码,但是要输入已经注册过的用户名,之后会根据用户名发送验证码到对应手机,同时设置了 120s 内不能重新发送,并且验证码 120s 内有效。这时候看起来我们没办法通过验证码做什么事,但是在实际测试过程中发现1. 当我们输入存在的账号之后提示发送成功;2. 重复发送,会响应 120s 内不能重复发送;3. 输入不存在用户会提示发送失败。即使设定时间限制,用户名枚举仍然可以通过爆破验证用户名是否存在,只需根据服务器返回的信息来判断。
等等,既然咱都不知道手机号,也不让输密码登陆,就算得到用户名生成社工字典也没法用啊,那拿到了用户名有什么用?当然有用,不过要看具体场景,比如下面这个案例任意验证码绕过当我们登陆时服务端给账号绑定的手机号发送短信验证码,我们输入一个上一步得到的账号,验证码随便输,点击登陆后抓包,登陆失败,发现响应中有两个 code 字段
改改试试:
It works!
验证码绕过漏洞:
实验:验证码绕过漏洞
(掌握常见的验证码绕过漏洞原理,以及绕过方式利用和漏洞防护)
功能页面成功登录之后,各个功能都点点看看,在个人信息页面有一个查询实时在线人数功能,那一栏只显示了人数,旁边并没有箭头
我一度以为那里不能点击(事实上因为数据量太大,加载了好长时间,我直接点返回了,给我的感觉就是这里没有东西),进去之后就可以看到所有登陆人员的信息了。
在我尝试了不同用户之后,发现这里的用户信息并没有权限限制,也就是说对所有人都是可见的,明显的权限配置不当。应用还具有几个查询功能,BURP 工具显示返回的数据包的格式都是 JSON
尝试注入 JSON 和尝试 XXE 到处试一试并没有什么用,因为我没有多少经验。前面还有一个参数,试试?
有戏!
试试 xss 吧
放到浏览器成功弹窗!
以上是如何进行授权的APK渗透测试的详细内容。更多信息请关注PHP中文网其他相关文章!