原文:

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”

    4 个月 后
    说点什么吧...