文章前言
每个人都熟悉什么是XSS,这是一篇关于我如何设法在一个Android应用程序的PDF生成器中获得XSS的文章,它允许我读取系统上的本地文件
背景介绍
这是一个与医疗保健相关的应用程序/渗透测试,它有一个Android应用程序,他们预先安装在他们的Android平板电脑中并锁定它们,因此文件系统访问或任何应用程序访问都是不可能的。
它安装了一个自定义启动器,阻止用户更改屏幕或访问内部任何内容,就像您在商场展示的手机上看到的一样。
所以找到本地文件读取绝对是一个关键,因为它绕过了应用程序的业务逻辑并允许攻击者访问内部数据。
XSS => LFI
在移动设备或任何应用程序中查找XSS并不少见,这类问题很普遍,但我遇到的问题是在PDF生成的输出中,该应用程序允许我编辑任何患者的记录并打印出他们的详细信息,这也允许我将输出保存为PDF文件,所以我尝试输入一个普通的HTML有效负载,看看它是否在生成的PDF输出中呈现。
<h1>test</h1>test2
看到它被执行,我并不感到惊讶,我在一些博客中看到的下一个方法是检查是否可以读取本地文件,因为所有这些都发生在本地,这是我尝试过的有效载荷
<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,因此我没有使用所有复杂的有效载荷,而是尝试了一个简单的有效载荷,即
<script>document.write('<iframe src=file:///etc/passwd></iframe>');</scrip>
并在生成的 PDF 文件中读取了文件,如下所示
这绕过了禁止用户访问系统并允许他们读取内部文件的启动器