Última actividad 1 week ago

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

ai

KarelWintersky revisó este gist 1 week ago. Ir a la revisión

1 file changed, 166 insertions

CVE-2026-24061_test.sh(archivo creado)

@@ -0,0 +1,166 @@
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 +
7 + RED='\033[0;31m'
8 + YELLOW='\033[1;33m'
9 + GREEN='\033[0;32m'
10 + BLUE='\033[0;34m'
11 + NC='\033[0m' # No Color
12 +
13 + echo -e "${BLUE}========================================${NC}"
14 + echo -e "${BLUE}Проверка уязвимости CVE-2026-24061${NC}"
15 + echo -e "${BLUE}GNU InetUtils telnetd${NC}"
16 + echo -e "${BLUE}========================================${NC}\n"
17 +
18 + VULNERABLE=0
19 +
20 + # 1. Проверка наличия telnetd
21 + echo -e "${BLUE}[1] Поиск telnetd в системе...${NC}"
22 +
23 + TELNETD_PATHS=$(which telnetd 2>/dev/null)
24 + if [ -z "$TELNETD_PATHS" ]; then
25 + TELNETD_PATHS=$(find /usr/sbin /sbin /usr/local/sbin -name "telnetd" 2>/dev/null)
26 + fi
27 +
28 + if [ -z "$TELNETD_PATHS" ]; then
29 + echo -e "${GREEN}✓ telnetd не найден в системе${NC}\n"
30 + else
31 + echo -e "${YELLOW}⚠ Найден telnetd:${NC}"
32 + echo "$TELNETD_PATHS" | while read path; do
33 + echo " - $path"
34 + done
35 + echo ""
36 + fi
37 +
38 + # 2. Проверка версии GNU InetUtils
39 + echo -e "${BLUE}[2] Проверка версии GNU InetUtils...${NC}"
40 +
41 + for 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
85 + done
86 +
87 + # 3. Проверка активности telnet-сервиса
88 + echo -e "${BLUE}[3] Проверка активных telnet-сервисов...${NC}"
89 +
90 + # Проверка через systemctl
91 + if 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
105 + fi
106 +
107 + # Проверка прослушиваемых портов
108 + echo ""
109 + TELNET_PORT=$(netstat -tuln 2>/dev/null | grep ":23 " || ss -tuln 2>/dev/null | grep ":23 ")
110 + if [ -n "$TELNET_PORT" ]; then
111 + echo -e "${RED}✗ Порт 23 (telnet) прослушивается!${NC}"
112 + echo "$TELNET_PORT"
113 + VULNERABLE=1
114 + else
115 + echo -e "${GREEN}✓ Порт 23 не прослушивается${NC}"
116 + fi
117 +
118 + # 4. Проверка inetd/xinetd
119 + echo ""
120 + echo -e "${BLUE}[4] Проверка inetd/xinetd конфигурации...${NC}"
121 +
122 + if [ -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
130 + fi
131 +
132 + if [ -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
139 + fi
140 +
141 + # 5. Итоговый отчет
142 + echo ""
143 + echo -e "${BLUE}========================================${NC}"
144 + echo -e "${BLUE}ИТОГОВЫЙ ОТЧЕТ${NC}"
145 + echo -e "${BLUE}========================================${NC}"
146 +
147 + if [ $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. Проверьте логи на предмет попыток эксплуатации"
159 + else
160 + echo -e "${GREEN}✓ Система не уязвима к CVE-2026-24061${NC}"
161 + echo ""
162 + echo "Либо уязвимое ПО не установлено,"
163 + echo "либо установлена безопасная версия."
164 + fi
165 +
166 + echo -e "${BLUE}========================================${NC}"
Siguiente Anterior