从SSRF到RCE in PDFReacter
什么是PDFReacter?
- PDFReacter是一个将HTML内容解析转换为PDF的解析器。
在测试一个应用程序时,我发现该程序正在使用PDFReacter解析器。PDFReacter是一个格式化处理器,负责将HTML内容解析为PDF文件。
由于应用程序提供了向表单中插入数据的功能,我开始使用XSS进行模糊测试。我简单地使用了<img>标签作为测试载荷。应用程序还有一个将表单导出为PDF的选项,当我导出包含测试载荷的表单时,最终的PDF文件显示如下:
[按Enter键或点击查看完整尺寸图片]
这意味着应用程序和PDFReacter都没有对HTML标签进行转义处理,并且会处理HTML标签/XSS载荷。
既然我知道应用程序使用PDFReacter作为解析器,且两者都没有过滤我的载荷,接下来我尝试使用iframe。我想检查是否能在最终的PDF文档中加载外部网站,正如你所见,Google成功在框架中加载了:
[按Enter键或点击查看完整尺寸图片]
现在可以确认,我可以通过使用iframe访问外部网站(SSRF确认)。
接下来是使用file:///包装器读取本地文件。
我使用了简单的载荷:"><iframe src="file:///etc/passwd"/></iframe>
[按Enter键或点击查看完整尺寸图片]
成功!!!!
接下来是检查当前用户是否具有root权限。我尝试使用下面提到的载荷获取shadow文件,注意到我能够成功获取shadow文件:
"/><iframe src="file:///etc/shadow"></iframe>
由于当前用户具有root权限,下一步是获取shell。我获取了私有SSH密钥,并成功SSH连接到服务器:
[按Enter键或点击查看完整尺寸图片]
虽然这不是我第一次实现RCE,但当成功获取shell时,我仍然激动不已。Rahul Maini的博客帮助我理解了当前场景,感谢Maini的优秀博客。
感谢大家的阅读。