
CVE-2024-51442 write up and example config file
CVE-2024-51442 是 minidlna/Readyshare 版本 <= 1.3.3 中的一个命令注入漏洞。该漏洞可以通过使用 minidlna.conf 中特制的 db_dir 参数运行 minidlnad 来利用。
该漏洞存在于 check_db 函数的 rescan 功能中:
minidlna.c
rescan:
CLEARFLAG(RESCAN_MASK);
if (ret < 0)
DPRINTF(E_WARN, L_GENERAL, "Creating new database at %s/files.db\n", db_path);
else if (ret == 1)
DPRINTF(E_WARN, L_GENERAL, "New media_dir detected; rebuilding...\n");
else if (ret == 2)
DPRINTF(E_WARN, L_GENERAL, "Removed media_dir detected; rebuilding...\n");
else
DPRINTF(E_WARN, L_GENERAL, "Database version mismatch (%d => %d); need to recreate...\n",
ret, DB_VERSION);
sqlite3_close(db);
snprintf(cmd, sizeof(cmd), "rm -rf %s/files.db %s/art_cache", db_path, db_path);
if (system(cmd) != 0)
DPRINTF(E_FATAL, L_GENERAL, "Failed to clean old file cache! Exiting...\n");
以及当 -R 作为可选命令行参数传递时:
minidlna.c
case 'R':
snprintf(buf, sizeof(buf), "rm -rf %s/files.db %s/art_cache", db_path, db_path);
if (system(buf) != 0)
DPRINTF(E_FATAL, L_GENERAL, "Failed to clean old file cache %s. EXITING\n", db_path);
break;
上述代码将运行 "rm -rf %s/files.db %s/art_cache,其中 db_path 作为格式字符串的参数。db_path 由 options.c 中的代码处理配置文件时获取。
该漏洞可以通过使用本仓库中的示例 minidlna.conf 作为配置文件来利用。这将使用 xdg-open 打开一个文件系统窗口作为概念验证。
minidlnad -d -f minidlna.conf