Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
CVE-2023-49606 — Tinyproxy中发现了一个严重的使用后释放(use-after-free)漏洞。 | Kitploit
工具/GitHubGitHub/d0rb/cve-2023-49606
内存取证漏洞分析代码分析漏洞利用学习与教育二进制利用
GitHubd0rb/cve-2023-49606

CVE-2023-49606

Tinyproxy中发现了一个严重的使用后释放(use-after-free)漏洞。

查看仓库
42年前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

Profile Visitors

🇮🇱 #BringThemHome #NeverAgainIsNow 🇮🇱

我们要求安全归还所有被恐怖组织哈马斯劫持为人质的公民。在每个人质获释并安全返回家园之前,我们不会停止。你可以帮助他们回家。 https://stories.bringthemhomenow.net/

CVE-2023-49606: Tinyproxy 释放后使用漏洞分析

🚨 严重漏洞警报 🚨

Tinyproxy 中 CVE-2023-49606 的技术报告

漏洞概述

🔍 CVE-2023-49606 是一个在 Tinyproxy(轻量级 HTTP/S 代理服务器)中发现的关键级别释放后使用漏洞。该缺陷存在于 Tinyproxy 1.11.1 和 1.10.0 版本中处理 HTTP 连接头时。该漏洞可能导致潜在的拒绝服务(DoS)攻击,并且在特定情况下可能导致远程代码执行(RCE)。

受影响版本

  • Tinyproxy 1.11.1
  • Tinyproxy 1.10.0

📈 CVSS 分数:9.8(严重)

漏洞详情

该漏洞源于处理 HTTP 头时的内存管理不当。http-message.c 中的源代码处理 HTTP 头的内存操作,包括分配、重新分配和释放。问题很可能出现在内存重新分配以及后续访问已释放内存的上下文中,而该内存未被正确置空。

代码分析

以下是 http-message.c 中相关代码的摘录:

root@kitploit:~
/* Function to add headers to the HTTP message structure */
void http_message_add_headers(http_message_t *msg, const char **headers, unsigned int num_headers) {
    const char **new_headers;
    unsigned int i;

    if (headers == NULL) {
        return;
    }

    // Check if there is enough space, if not, reallocate
    if (msg->headers.used + num_headers > msg->headers.total) {
        new_headers = (const char **) safecalloc (msg->headers.total * 2, sizeof(char *));
        if (new_headers == NULL) {
            return;  // Allocation failed, potential for use-after-free if not handled
        }

        // Copy existing headers to the new array
        for (i = 0; i != msg->headers.used; ++i) {
            new_headers[i] = msg->headers.strings[i];
        }
        safefree(msg->headers.strings);  // Free old array
        msg->headers.strings = new_headers;  // Danger if old pointers are used post this point
        msg->headers.total *= 2;
    }

    // Add new headers to the structure
    for (i = 0; i != num_headers; ++i) {
        msg->headers.strings[i + msg->headers.used] = headers[i];
    }
    msg->headers.used += num_headers;
}
下载工具