Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
CVE-2021-2471 — PoC for CVE-2021-2471 - XXE in MySQL Connector/J | Kitploit
工具/GitHubGitHub/drunkenshells/cve-2021-2471
Vulnerability AnalysisCode AnalysisExploitationWeb Application ExploitationPenetration TestingDatabase Security
GitHubdrunkenshells/cve-2021-2471

CVE-2021-2471

PoC for CVE-2021-2471 - XXE in MySQL Connector/J

查看仓库
334年前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2021-2471 - MySQL Connector/J 中的 XXE 漏洞

Oracle MySQL 的 MySQL 连接器产品(组件:Connector/J)存在漏洞。受影响的受支持版本是 8.0.26 及更早版本。
成功利用此漏洞可导致对关键数据的未授权访问,或完全访问所有 MySQL 连接器可访问的数据,并能够未经授权地导致 MySQL 连接器挂起或频繁可重复的崩溃(完全拒绝服务)。

免责声明:

此漏洞由阿里云安全团队的徐远珍和阿里巴巴的陈宏坤发现。
本 PoC 仅供研究目的使用。请勿将其用于攻击未获得明确授权的目标。

供应商披露:

供应商关于此漏洞的披露和修复信息可在此处找到。

概念验证:

该 XXE 漏洞由包含恶意 DTD 实体的 XML 被 MysqlSQLXML 组件接收,并在调用 getSource() 函数时触发。

从下面的 mysql-connector-java-8.0.26.jar 代码中可以看出,当 DOMSource 类作为参数传递给 getSource() 函数时,它会以不安全的方式暴露 DocumentBuilder,因此如果攻击者控制了传递给构建器的 inputSource 的内容,则可以利用它来获取 XXE:

root@kitploit:~
public <T extends Source> T getSource(Class<T> clazz) throws SQLException {
        try {
            this.checkClosed();
            this.checkWorkingWithResult();
            InputSource reader;
            if (clazz != null && !clazz.equals(SAXSource.class)) {
                SQLException sqlEx;
                if (clazz.equals(DOMSource.class)) {
                    try {
                        DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();
                        builderFactory.setNamespaceAware(true);
                        DocumentBuilder builder = builderFactory.newDocumentBuilder();
                        if (this.fromResultSet) {
                            inputSource = new InputSource(this.owningResultSet.getCharacterStream(this.columnIndexOfXml));
                        } else {
                            inputSource = new InputSource(new StringReader(this.stringRep));
                        }

                        return new DOMSource(builder.parse(inputSource));

向 MysqlSQLXML 传递恶意 XXE 有两种方式:

  • 使用 sqlxml.setString() 函数(如果攻击者可以调用或传播任意输入到 setString 函数)
  • 将 XML 放入数据库中,并通过结果集使用 resultSet.getSQLXML() 函数检索它(如果攻击者对数据库具有写入权限,或者可以将受害者指向攻击者控制的数据库)

附加资源:

使用 sqlxml.setString() 的 XXE PoC
使用 resultSet.getSQLXML() 的 XXE PoC
下载易受攻击的 JAR
其他 XXE 载荷

下载工具