Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2021-2471 — CVE-2021-2471용 PoC - MySQL Connector/J의 XXE | Kitploit
도구/GitHubGitHub/drunkenshells/cve-2021-2471
Vulnerability AnalysisCode AnalysisExploitationWeb Application ExploitationPenetration TestingDatabase Security
GitHubdrunkenshells/cve-2021-2471

CVE-2021-2471

CVE-2021-2471용 PoC - MySQL Connector/J의 XXE

저장소 보기
334년 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2021-2471 - MySQL Connector/J의 XXE

Oracle MySQL의 MySQL Connectors 제품(구성 요소: Connector/J)의 취약점입니다. 영향을 받는 지원 버전은 8.0.26 및 이전 버전입니다.
이 취약점을 성공적으로 악용하면 중요한 데이터에 대한 무단 액세스 또는 MySQL Connectors에서 액세스할 수 있는 모든 데이터에 대한 완전한 액세스가 가능해지고, MySQL Connectors를 정지시키거나 빈번하게 반복되는 충돌(완전한 DoS)을 유발하는 무단 기능을 수행할 수 있습니다.

Disclaimer:

이 취약점은 Alibaba Cloud Security Team의 Xu Yuanzhen과 Alibaba의 Hongkun Chen에 의해 발견되었습니다.
이 PoC는 연구 목적으로 제공됩니다. 명시적 허가 없이 악용할 대상에 대해 공격에 사용하지 마십시오.

Vendor Disclosure:

공급업체의 공개 및 수정 사항은 여기에서 확인할 수 있습니다.

Proof Of Concept:

XXE 취약점은 MysqlSQLXML 구성 요소가 수신하는 악성 DTD 엔티티를 포함하는 XML로 구성되며, 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를 전달하는 방법에는 2가지가 있습니다:

  • sqlxml.setString() 함수를 사용하는 방법(공격자가 setString 함수에 임의 입력을 호출하거나 전파할 수 있는 경우)
  • DB에 XML을 배치하고 resultSet.getSQLXML() 함수를 사용하여 결과 집합을 통해 검색하는 방법(공격자가 DB에 쓰기 액세스 권한이 있거나 피해자를 공격자가 제어하는 데이터베이스로 연결할 수 있는 경우)

Additional Resources:

sqlxml.setString()을 사용하는 PoC XXE
resultSet.getSQLXML()을 사용하는 PoC XXE
취약한 JAR 다운로드
기타 XXE 페이로드

도구 다운로드