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