原文:
https://blog.dixitaditya.com/leveraging-xss-to-read-internal-files/
每个人都对XSS得利用方式应该都很熟悉,这是关于如何在Android应用程序上的PDF生成器中获取XSS的文章,该文件使我能够读取系统上的本地文件。
背景
这是一个医疗相关的安卓应用,被预装在安卓平板上,这个应用被限制读取本地文件系统。
它安装了一个自定义启动器,阻止用户更改屏幕或访问其中的任何内容,就像在商场中显示的广告屏上看到的那样。
因此,找到本地文件读取绝对是至关重要的,因为它绕过了应用程序的业务逻辑,并允许攻击者访问内部数据。
XSS => LFI
在移动设备或任何应用程序中查找到XSS并不罕见。这类问题很普遍,但我遇到的问题是在PDF生成的输出中XSS。
该应用程序允许我编辑任何患者的记录,并打印出其详细信息。这也使我可以将输出另存为PDF文件。
因此,我尝试输入普通的HTML注入Payload,以查看它是否在生成的PDF输出中呈现。
<h1>test</h1>test2
毫无意外,成功注入了HTML。
我在某些博客中看到的下一个方法是检查是否可以读取本地文件,因为所有这些都是在本地发生的。这是我尝试过的Payload。
<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>')"/>
效果不佳,应用崩溃了。也许是因为onerror或img。
因此,我没有使用所有复杂的有效载荷,而是尝试了一个简单的payload,即

<script>document.write('<iframe src=file:///etc/passwd></iframe>');</scrip>
并在生成的PDF文件中读取到了这个文件,如下所示。

我们绕过了启动器,该启动器禁止用户访问系统并允许他们读取内部文件。
译者按:
说实话,这个漏洞不是很厉害。但是这种传统厂商开发的app,经常漏洞多如靶场。如果在搞测试的时候,搞到了这种设备,那简直是挖到矿了。经常是权限全给,后台花样弱口令,一key通所有主机。大家搞web如果搞累了,可以尝试下这种app试一试。
本文迁移自知识星球“火线Zone”