Android靶机-攻击-webview+ insecurebankv2笔记

Android渗透-WebView攻击

前言

参考文章:https://cn-sec.com/archives/277326.html

一 webview intent 注入

靶机地址:https://github.com/harshitrajpal/VulnerableWebView
这里的apk会利用一个activity组件去访问内置web页面。apk内容如下:
在这里插入图片描述

把apk扔进jadx里找包名“com.example.webviewexample”(我一般是直接这样找到AndroidManifest.xml)。
在这里插入图片描述
再全局搜索访问的ur“hackingarticles.in”。
在这里插入图片描述
这里理解的是:MainActivity里定义了url,然后MainActivity会在调用组件webViewActiviry时传url1
intent中提供一系列的putExtra()方法的重载,可以把想要传递的数据暂存在intent中,当另一个活动启动后,再把这些数据从intent缓存中取出即可。
putExtra(“A”, B)方法中,AB为键值对,第一个参数为键名,第二个参数为键对应的值,这个值才是真正要传递的数据

再看webViewActivity:接收了url1,允许setJavaScriptEnabled(允许js),最后加载url1
在这里插入图片描述
使用drozer查看暴露的组件:
在这里插入图片描述
(这一步应该在分析Activity之前就做了。从暴露的组件开始找更符合思路。)
发现被调用的webViewAcitivity刚好暴露着
尝试调用它
run app.activity.start --component com.example.webviewexample com.example.webviewexample.WebViewActivity --extra string url1 https://www.csdn.net
在这里插入图片描述
如果别的软件利用了靶机暴露的组件执行intent就可以实现攻击了。
比如浏览器访问含intent的页面。。。。。但是死活没调成功
在这里插入图片描述

二、Android-InsecureBankv2

靶机地址:https://github.com/dineshshetty/Android-InsecureBankv2
服务端我在ubuntu下运行的,Windows下报错起不来。
客户端右上角配置服务器地址

1、Decompiling Android Applications

没得说,apktools反编译就行。要注意的是apk一定要签名才能安装(可以自定义签名主体)。
反编译出的源码可用于后续测试。

2、Patching Android Application

源码里泄露个创建账号的功能,判定is_admin
在这里插入图片描述
反编译的包内搜索is_admin。找到了string.xml,修改默认值再打包就行了

3、Android Debugging using JDWP

adb连接后,cmd输入adb jdwp能看到当前可调试的jdwp进程。如果进程多,就可以运行前后都列出一次对比下
在这里插入图片描述
连接时需注意Windows下这样:
jdb -connect com.sun.jdi.SocketAttach:hostname=localhost,port=12345

在这里插入图片描述
可用classes列出已知类
后续命令(做断点)
methods com.android.insecurebankv2.PostLogin

stop in com.android.insecurebankv2.PostLogin.showRootStatus()

设置好断点了,手机点击登录。这时候cmd就能看到调试信息了
在这里插入图片描述
输入下step,再locals就能查看当前变量了
可以一直step,直到看到:
“thread=main”, com.android.insecurebankv2.PostLogin.showRootStatus(), line=88 bci=16’
(调试次数太多了没找到。也可以step up替换step跳的更快)
step 执行当前行
step up 一直执行, 直到当前方法返回到其调用方

在这里插入图片描述

Bypass Android Root Detection

和上述is_admin修改一样,改源码冲打包
发现点是登录的时候有句话:
在这里插入图片描述
按着这句话去反编译的包里找:
在这里插入图片描述
像作者这样改个恒真就行
在这里插入图片描述

Developer Backdoors

查看登录处源码,找到预留账号,指定账号任意密码登录

在这里插入图片描述

Exploiting Android Keyboard Cache

用户名输入框复制的时候,有键盘缓存
su u0_a50 service call clipboard 2 s16 com.android.insecurebankv2
在这里插入图片描述
能看到一些数据缓存。没想到有啥可用的

Exploiting Android Activities

就是drozer导出一些组件,然后运行暴露的activity组件。
这个问题在于组件本身是只给apk自身调用的。如果写暴露出来就是任意程序都能调用它。
例如这个组件登录成果后才能看,如果直接调用就能直接看了
在这里插入图片描述
dz> run app.activity.start --componen com.android.insecurebankv2 com.android.insecurebankv2.ViewStatement
但是调用后还是看不到的,也算是有问题

Exploiting Android Backup Functionality

AndroidManifest.xml内allow_backup=true时apk可以备份出去
导出命令:
adb backup –apk –shared com.android.insecurebankv2
然后就生成一个xxx.db文件
adb连接另一设备,开始还原:
adb restore xxx.db

Exploiting Android Broadcast Receivers

和暴露activity组件一样,这是利用的broadcast组件
需要根据暴露的broadcast,找对应的源码,就能找到intent语法了
这里示例是:
dz> run app.broadcast.send --action theBroadcast --component com.android.insecurebankv2 com.android.insecurebankv2.MyBroadCastReceiver --extra string phonenumber 1234 --extra string newpass Dinesh@123!

Exploiting Android Content Provider

暴露content probider组件
在这里插入图片描述
要注意的是drozer导出uri,adb列出uri

Exploiting Android Pasteboard

这跟数据缓存 keyboard cache差不多吧

Exploiting Weak Cryptography

数据弱加密,也是审源码的时候发现的。算是加密方式泄露
有个小tips是抓包找到登录的接口api,根据这个值再去搜源码会快点
在这里插入图片描述
然后找到加密的布置
在这里插入图片描述

再搜下找到算法
在这里插入图片描述

Insecure Logging

adb shell 下执行logcat就行
就是日志会异常的多,这里建议是可以先ps看下对应pid,然后grep会少些。
在这里插入图片描述
为了方便一般是在事件前(比如这个登录)多来点空格标识下好找
在这里插入图片描述

Intent Sniffing

我觉得是用intent sniffing这个apk去嗅探intent语句,只是现在没找到或者没编译好,没做出

Proxying Android Traffic on Device

能burp、charles抓到包就行。似乎叫弱证书认证

Reading Android Memory

本地文件搜索存留的东西
搜本地文件就行,adb里find或者手机里搜。这次的是用户名密码本地存储。有些手势密码本地也是这么找

Using Apktool – APK to Smali

没得说 反编译。或者改成zip解压看classes.dex

本地文件污染

记得还有个漏洞(在旧版的银行靶机上看的),是运行时会加载本地一个html文件
可以从logcat里看到,或者审源码的时候会有个html。
思路是如果这个html会被污染了,本地查看的时候能加载到就是有问题了。要是还运行js脚本就更多问题

后记

漏洞比较多,也不难,有些出问题的记了下。
建议看下靶机项目里面的write-up,读读。
靶机思路不错。菜鸟继续学习。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值