Utoljára aktív 1 week ago

https://dbugs.ptsecurity.com/vulnerability/CVE-2026-24061

ai

Revízió ea5be5182166025f73b14bd7b709544815641f8b

CVE-2026-24061_test.sh Eredeti
1#!/bin/bash
2
3# Скрипт проверки уязвимости CVE-2026-24061 в GNU InetUtils telnetd
4# Уязвимые версии: 1.9.3 - 2.7 (май 2015 - январь 2026)
5# by Claude Code 4.5
6
7RED='\033[0;31m'
8YELLOW='\033[1;33m'
9GREEN='\033[0;32m'
10BLUE='\033[0;34m'
11NC='\033[0m' # No Color
12
13echo -e "${BLUE}========================================${NC}"
14echo -e "${BLUE}Проверка уязвимости CVE-2026-24061${NC}"
15echo -e "${BLUE}GNU InetUtils telnetd${NC}"
16echo -e "${BLUE}========================================${NC}\n"
17
18VULNERABLE=0
19
20# 1. Проверка наличия telnetd
21echo -e "${BLUE}[1] Поиск telnetd в системе...${NC}"
22
23TELNETD_PATHS=$(which telnetd 2>/dev/null)
24if [ -z "$TELNETD_PATHS" ]; then
25 TELNETD_PATHS=$(find /usr/sbin /sbin /usr/local/sbin -name "telnetd" 2>/dev/null)
26fi
27
28if [ -z "$TELNETD_PATHS" ]; then
29 echo -e "${GREEN}✓ telnetd не найден в системе${NC}\n"
30else
31 echo -e "${YELLOW}⚠ Найден telnetd:${NC}"
32 echo "$TELNETD_PATHS" | while read path; do
33 echo " - $path"
34 done
35 echo ""
36fi
37
38# 2. Проверка версии GNU InetUtils
39echo -e "${BLUE}[2] Проверка версии GNU InetUtils...${NC}"
40
41for telnetd_bin in $TELNETD_PATHS; do
42 if [ -f "$telnetd_bin" ]; then
43 # Попытка определить версию
44 VERSION_OUTPUT=$($telnetd_bin --version 2>&1 | head -n 1)
45
46 echo -e "${YELLOW}Файл: $telnetd_bin${NC}"
47 echo "Вывод --version: $VERSION_OUTPUT"
48
49 # Проверка, что это GNU InetUtils
50 if echo "$VERSION_OUTPUT" | grep -qi "inetutils"; then
51 echo -e "${YELLOW}✓ Обнаружен GNU InetUtils telnetd${NC}"
52
53 # Извлечение версии
54 VERSION=$(echo "$VERSION_OUTPUT" | grep -oP '\d+\.\d+(\.\d+)?' | head -n 1)
55
56 if [ -n "$VERSION" ]; then
57 echo "Версия: $VERSION"
58
59 # Проверка диапазона уязвимых версий (1.9.3 - 2.7)
60 MAJOR=$(echo $VERSION | cut -d. -f1)
61 MINOR=$(echo $VERSION | cut -d. -f2)
62 PATCH=$(echo $VERSION | cut -d. -f3)
63
64 # Уязвимы версии >= 1.9.3 и <= 2.7
65 if [ "$MAJOR" -eq 1 ] && [ "$MINOR" -eq 9 ] && [ "${PATCH:-0}" -ge 3 ]; then
66 echo -e "${RED}✗ УЯЗВИМАЯ ВЕРСИЯ ОБНАРУЖЕНА!${NC}"
67 VULNERABLE=1
68 elif [ "$MAJOR" -eq 1 ] && [ "$MINOR" -gt 9 ]; then
69 echo -e "${RED}✗ УЯЗВИМАЯ ВЕРСИЯ ОБНАРУЖЕНА!${NC}"
70 VULNERABLE=1
71 elif [ "$MAJOR" -eq 2 ] && [ "$MINOR" -le 7 ]; then
72 echo -e "${RED}✗ УЯЗВИМАЯ ВЕРСИЯ ОБНАРУЖЕНА!${NC}"
73 VULNERABLE=1
74 else
75 echo -e "${GREEN}✓ Версия не входит в уязвимый диапазон${NC}"
76 fi
77 else
78 echo -e "${YELLOW}⚠ Не удалось определить версию${NC}"
79 fi
80 else
81 echo -e "${GREEN}✓ Это не GNU InetUtils telnetd${NC}"
82 fi
83 echo ""
84 fi
85done
86
87# 3. Проверка активности telnet-сервиса
88echo -e "${BLUE}[3] Проверка активных telnet-сервисов...${NC}"
89
90# Проверка через systemctl
91if command -v systemctl &> /dev/null; then
92 TELNET_SERVICE=$(systemctl list-units --all | grep -i telnet | grep -v grep)
93 if [ -n "$TELNET_SERVICE" ]; then
94 echo -e "${YELLOW}⚠ Обнаружены telnet-сервисы:${NC}"
95 echo "$TELNET_SERVICE"
96
97 # Проверка активности
98 if systemctl is-active --quiet telnet.socket || systemctl is-active --quiet telnetd; then
99 echo -e "${RED}✗ telnet-сервис АКТИВЕН!${NC}"
100 VULNERABLE=1
101 fi
102 else
103 echo -e "${GREEN}✓ telnet-сервисы не обнаружены в systemd${NC}"
104 fi
105fi
106
107# Проверка прослушиваемых портов
108echo ""
109TELNET_PORT=$(netstat -tuln 2>/dev/null | grep ":23 " || ss -tuln 2>/dev/null | grep ":23 ")
110if [ -n "$TELNET_PORT" ]; then
111 echo -e "${RED}✗ Порт 23 (telnet) прослушивается!${NC}"
112 echo "$TELNET_PORT"
113 VULNERABLE=1
114else
115 echo -e "${GREEN}✓ Порт 23 не прослушивается${NC}"
116fi
117
118# 4. Проверка inetd/xinetd
119echo ""
120echo -e "${BLUE}[4] Проверка inetd/xinetd конфигурации...${NC}"
121
122if [ -f /etc/inetd.conf ]; then
123 TELNET_INETD=$(grep -v "^#" /etc/inetd.conf | grep telnet)
124 if [ -n "$TELNET_INETD" ]; then
125 echo -e "${YELLOW}⚠ telnet включен в /etc/inetd.conf:${NC}"
126 echo "$TELNET_INETD"
127 else
128 echo -e "${GREEN}✓ telnet не найден в /etc/inetd.conf${NC}"
129 fi
130fi
131
132if [ -d /etc/xinetd.d/ ]; then
133 TELNET_XINETD=$(grep -r "disable.*=.*no" /etc/xinetd.d/telnet 2>/dev/null)
134 if [ -n "$TELNET_XINETD" ]; then
135 echo -e "${YELLOW}⚠ telnet может быть включен в xinetd${NC}"
136 else
137 echo -e "${GREEN}✓ telnet не активен в xinetd${NC}"
138 fi
139fi
140
141# 5. Итоговый отчет
142echo ""
143echo -e "${BLUE}========================================${NC}"
144echo -e "${BLUE}ИТОГОВЫЙ ОТЧЕТ${NC}"
145echo -e "${BLUE}========================================${NC}"
146
147if [ $VULNERABLE -eq 1 ]; then
148 echo -e "${RED}✗ СИСТЕМА УЯЗВИМА!${NC}"
149 echo ""
150 echo -e "${YELLOW}Рекомендации:${NC}"
151 echo "1. Немедленно обновите GNU InetUtils до версии > 2.7"
152 echo "2. Или полностью отключите telnetd:"
153 echo " - systemctl stop telnet.socket"
154 echo " - systemctl disable telnet.socket"
155 echo " - apt remove inetutils-telnetd (Debian/Ubuntu)"
156 echo " - yum remove telnet-server (RHEL/CentOS)"
157 echo "3. Используйте SSH вместо telnet"
158 echo "4. Проверьте логи на предмет попыток эксплуатации"
159else
160 echo -e "${GREEN}✓ Система не уязвима к CVE-2026-24061${NC}"
161 echo ""
162 echo "Либо уязвимое ПО не установлено,"
163 echo "либо установлена безопасная версия."
164fi
165
166echo -e "${BLUE}========================================${NC}"