前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >在HTML5移动应用中挖掘XSS漏洞

在HTML5移动应用中挖掘XSS漏洞

作者头像
FB客服
发布于 2018-02-05 09:00:47
发布于 2018-02-05 09:00:47
1.5K0
举报
文章被收录于专栏:FreeBufFreeBuf

微信号:freebuf

Linus(@_zulln)是一位有着15年漏洞挖掘经验的瑞士黑客,本文就是他写的。

现在使用HTML5开发移动APP越来越受欢迎。HTML5不仅开发效率高,而且可以跨平台,代码重用性也很高。Zoho(全球第一大在线软件提供商,总部位于美国)是一个有着1300万用户的HTML5邮件系统,我打算挖挖他们的漏洞。

寻找Html和Javascript代码

首先我从Google Play上下载了APK,用解压软件打开。

assets文件夹中有很多html文件,html文件和javascript文件要比java文件读起来易懂很多。

翻了几下之后我发现mailDetail.html是用来显示邮件内容的,这里有一个漏洞非常有趣。

读了代码,懂了代码结构之后,发现它调用了setContent方法:

function setContent(contentToSet,margin){

document.body.style.marginTop = margin + "px";

document.body.style.marginBottom = "10px";

setBaseURL();

document.getElementById('mailcontentid').innerHTML = "";

handleContentForMailThread($('mailcontentid'), contentToSet);

androidResponse();

}

function handleContentForMailThread(contentEl,value) {

var ind = value.indexOf("<blockquote");// NO I18N

if(ind < 0) {

addContentToElement(contentEl,value);

return;

}

else

{

// removed 54 lines here for readability

}

}

function addContentToElement(contentEl,value){

contentEl.innerHTML = value;

addListener();

}

如果你跟踪contentToSet变量(应该是邮件内容),你会发现javascript代码中没有对数据做任何转义操作,所以,如果有任何转义或者安全操作,都只能是在服务端做的,或者在java代码中做的。

确定邮件内容是否做过安全处理

最简单的办法就是在setContent函数的开始未知加入payload代码,比如alert(contentToSet),然后打包重签名。

我在apk 包中加入了如下几个payload:

test<jukk

http://test<jukk

http://test%3Cjukk

结果如下:

前两个payload被正确处理了,但是第三个payload(我事先对数据做了url编码)中显示了一个<尖括号。

貌似后台有一个黑名单,如果时间足够,这些黑名单肯定可以被绕过,但是我对手工fuzzing已经无感了,所以我走了另外一条路。

逆向APK

我没有写过apk,所以我决定寻找webview相关的代码来读,当我找到从java传递数据到html的代码的时候,我被webView.loadUrl绊倒了,这明显可以执行javascript代码呀:

webView.loadUrl("javascript:initialize(" + myNumber + ");");

很明显zoho使用了跟上面类似的代码,才使得前面用url编码过得数据正确地显示出来。

通过使用dex2jar将apk逆向为.jar文件,我使用JD-GUI阅读这些jar文件,我搜索了setContent函数(之前提到的javascript函数),

this.webView.loadUrl("javascript:setContent(" + JSONObject.quote(this.content) + "," + i + ")");

正如你看到的,zoho使用了类似的代码。

总结

zoho使用了webview.loadurl方法来调用setContent方法,这告诉我们什么?用这种方式打开uri,里面的 javascript就会被执行,任何pct-encode ugo的代码都会被当做正常代码来执行。

下面这些代码很容易理解

// this line of code:location.href = 'javascript:setContent("%22-alert%281%29-%22")';// is the same as this:location.href = 'javascript:setContent(""-alert(1)-"")';

问题很明显,通过在邮件中的任意地方包含如下的payload,就可以在邮件客户端中执行任意javascript代码:

%22-alert%281%29-%22

总结

在我将这个漏洞报告给zoho几天过后,他们在Google Play上发布了新版,并且我收到邮件被告知已经有其他人给zoho报告了这个漏洞。

我觉得这个漏洞非常有趣,其他很多APP可能会有很多相似的漏洞。不过在使用HTML开发的应用中寻找漏洞比在web中寻找漏洞要难一些。让我们一起挖洞拯救世界,让互联网更安全吧!

消息来源detectify.com,翻译/Conermx,转载请注明来自FreeBuf黑客与极客(FreeBuf.COM)

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2015-03-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FreeBuf 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
使用html设计界面
这是一个使用html作为UI的电话拨号器实例 1.新建工程(PhoneUIByHtmlDemo) 2.在assets目录下编写html文件 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-
提莫队长
2019/02/21
2.7K0
XSS漏洞总结
同源策略 影响源的因素:host,子域名,端口,协议 a.com通过以下代码:
张树臣
2018/12/18
3.4K0
XSS挑战第一期Writeup
0×00起因 这期XSS挑战的起因是在阅读“Modern Web Application Firewalls Fingerprinting and Bypassing XSS Filters”过后,在其中发现了一个很有趣的话题。那就是在圆括号被过滤的情况下,如何去执行javascript。测在文中笔者给出来了这样的解决方案: <a onmouseover="javascript:window.onerror=alert;throw 1> 这是一个通过抛出异常的方式来执行alert()的方案。那么,还
FB客服
2018/02/02
9000
XSS挑战第一期Writeup
【XSS漏洞】XSS漏洞相关总结v1.0
通常指攻击者通过“HTML注入”篡改网页,插入恶意脚本,从而在用户浏览网页时,控制用户浏览器的一种攻击手段 。
一名白帽的成长史
2019/10/08
1.6K0
【XSS漏洞】XSS漏洞相关总结v1.0
史上最全webview详解
WebView在现在的项目中使用的频率应该还是非常高的。 我个人总觉得HTML5是一种趋势。找了一些东西,在此总结。 本篇最后有一个非常不错 的 Html5Activity 加载类,不想看的可以直接跳下载。 WebSettings WebSettings webSettings = mWebView .getSettings(); //支持获取手势焦点,输入用户名、密码或其他 webview.requestFocusFromTouch(); setJavaScriptEnabled(true);
xiangzhihong
2018/02/01
6.8K0
代码审计 | DedeCMS v 5.7 sp2 RemoveXSS bypass
DedeCMS 简称织梦CMS,当前最新版为 5.7 sp2,最近又去挖了挖这个CMS,发现过滤XSS的RemoveXSS函数存在缺陷导致可以被绕过。
FB客服
2018/09/21
1.8K0
代码审计 | DedeCMS v 5.7 sp2 RemoveXSS bypass
Android实现WebView加载assets文件夹下的html文件,html返回webView.canGo,android嵌入h5进行交互,调试错误 net::ERR_FILE_NOT_FOUND
我的环境:win7 ,Android studio 3.0.1.   java8;
zhangjiqun
2024/12/16
2130
干货 | 学习XSS从入门到熟悉
XSS,全称Cross Site Scripting,即跨站脚本攻击,是最普遍的Web应用安全漏洞。这类漏洞能够使得攻击者嵌入恶意脚本代码到正常用户会访问到的页面中,当正常用户访问该页面时,则可导致嵌入的恶意脚本代码的执行,从而达到恶意攻击用户的目的。需要强调的是,XSS不仅仅限于JavaScript,还包括flash等其它脚本语言。根据攻击代码的工作方式,XSS可以分为反射型的XSS、存储型的XSS和DOM型的XSS。
HACK学习
2021/06/24
4.7K0
干货 | 学习XSS从入门到熟悉
前端XSS相关整理
前端安全方面,主要需要关注 XSS(跨站脚本攻击 Cross-site scripting) 和 CSRF(跨站请求伪造 Cross-site request forgery)
书童小二
2018/10/09
4.7K0
前端XSS相关整理
Paypal的一个Dom型XSS漏洞分析
前言 DOM xss也称为第三种类型的xss或者类型0。现在DOM型的xss越来越多了,除了因为各种JS库比如YUI,Jquery,Jquery mobile等的使用,还有很多编程语言,比如php更
FB客服
2018/02/02
1.1K0
Paypal的一个Dom型XSS漏洞分析
长亭WAF XSS防护绕过小记
某次业务上线常规安全测试,有记录操作的功能,猜测存在存储型XSS漏洞,但由于存在长亭WAF被拦截。遂将之前总结的XSS绕过手段逐一测试了下。
瓦都剋
2020/10/27
6.2K1
长亭WAF XSS防护绕过小记
Android中Java和JavaScript交互
Android提供了一个很强大的WebView控件用来处理Web网页,而在网页中,JavaScript又是一个很举足轻重的脚本。本文将介绍如何实现Java代码和Javascript代码的相互调用。
技术小黑屋
2018/09/04
9760
Android中Java和JavaScript交互
Android中Java和JavaScript交互 Android提供了一个很强大的WebView控件用来处理Web网页,而在网页中,JavaScript又是一个很举足轻重的脚本。本文将介绍如何实现Java代码和Javascript代码的相互调用。 如何实现 实现Java和js交互十分便捷。通常只需要以下几步。 WebView开启JavaScript脚本执行 WebView设置供JavaScript调用的交互接口。 客户端和网页端编写调用对方的代码。 本例代码 为了便于讲解,先贴出全部代码 Java代码
用户1289394
2018/02/26
1.6K0
Android 渗透测试学习手册 第七章 不太知名的 Android 漏洞
在本章中,我们将了解一些不太知名的 Android 攻击向量,这在 Android 渗透测试中可能很有用。 我们还将涵盖一些主题,如 Android 广告库中的漏洞和WebView实现中的漏洞。 作为渗透测试者,本章将帮助你以更有效的方式审计 Android 应用程序,并发现一些不常见的缺陷。
ApacheCN_飞龙
2022/12/01
1.3K0
一文彻底搞懂安卓WebView白名单校验
近两年公司端侧发现的漏洞很大一部分都出在WebView白名单上,针对这类漏洞安全编码团队也组织过多次培训,但是这种漏洞还是屡见不鲜。下面本人就结合产品中容易出现问题的地方,用实例的方式来总结一下如何正确使用WebView白名单,给开发的兄弟们作为参考。
FB客服
2019/05/09
4.9K0
一文彻底搞懂安卓WebView白名单校验
WebView浏览本地html
index.html放在Assets文件夹下,供WebChromeClient调用
提莫队长
2019/02/21
1.5K0
WebView深度学习(一)之WebView的基本使用以及Android和js的交互
//设置WebView缓存(当加载 html 页面时,WebView会在/data/data/包名目录下生成 database 与 cache 两个文件夹,请求的 URL记录保存在 WebViewCache.db,而 URL的内容是保存在 WebViewCache 文件夹下)
AWeiLoveAndroid
2018/09/03
6.6K0
WebView深度学习(一)之WebView的基本使用以及Android和js的交互
2024全网最全面及最新且最为详细的网络安全技巧 七之 XSS漏洞典例分析POC以及 如何防御和修复[含C++;javascript;html源码详解](5)———— 作者:LJS
TOAST Tui Editor是一款富文本Markdown编辑器,用于给HTML表单提供Markdown和富文本编写支持。最近我们在工作中需要使用到它,相比于其他一些Markdown编辑器,它更新迭代较快,功能也比较强大。另外,它不但提供编辑器功能,也提供了渲染功能(Viewer),也就是说编辑和显示都可以使用Tui Editor搞定。
盛透侧视攻城狮
2024/10/21
2050
2024全网最全面及最新且最为详细的网络安全技巧 七之 XSS漏洞典例分析POC以及 如何防御和修复[含C++;javascript;html源码详解](5)———— 作者:LJS
Android webView打开网页
这个就比较简单了,直接拖一个控件,再加载一下url,记得在AndroidManifest.xml中加一下权限
SingYi
2022/07/13
2.2K0
Android webView打开网页
白帽赏金平台XSS漏洞模糊测试有效载荷最佳集合 2020版
该备忘清单可用于漏洞猎人,安全分析,渗透测试人员,根据应用的实际情况,测试不同的payload,并观察响应内容,查找web应用的跨站点脚本漏洞,共计100+条xss漏洞测试小技巧。
瓦都剋
2020/12/17
9.8K0
推荐阅读
相关推荐
使用html设计界面
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档