对于nc重定向至bash的理解

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了对于nc重定向至bash的理解相关的知识,希望对你有一定的参考价值。

nc的全名netcat,将nc服务端重定向至bash,就可以获得一个远程shell
1,在服务端:
1)建一个命名管道
mkfifo pipe
2)结合匿名管道重定向
nc -l -p 4444 < pipe|bash > pipe
2,在客户端:
假设服务端的ip为1.1.1.1
nc 1.1.1.1 444
那么现在客户端就连接到了服务端1.1.1.1,并且获得了一个服务端的远程shell,可以像在本地一样执行远程命令
对于服务端的重定向命令乍看有点蒙,画个简图来帮助理解,如下:
技术图片
根据这个图,捋一下整个远程shell的基本流程

当nc连接到服务端后
1) nc客户端通过网络发送命令到远程nc服务端
2) nc服务端通过匿名管道重定向至bash
3) bash执行客户端发送过来的命令,并重定向至命名管道pipe
4) 由于nc服务端重定向输入至命名管道pipe,所以bash执行结果会经过pipe,接着传送至nc服务端
5) nc服务端把从命名管道pipe读取的数据通过网络发送给nc客户端.
    所以,这里其实是一条命令巧妙的包含了两条管道,并且使其各司其职.

但是nc建立的连接整个过程是没有加密的,因此并不是安全的,因此又出现了一款加密版的nc,名字叫cryptcat,使用方法同nc基本无差,只不过比nc多了一层加密功能,使用起来相对比较安全.

以上是关于对于nc重定向至bash的理解的主要内容,如果未能解决你的问题,请参考以下文章

10-IO重定向管道及文本处理工具

Part2 Linux Bash Shell变量和重定向

bash 总结

htaccess 使用 OR 和 NC 重定向

根据退出代码bash脚本将命令重定向到变量或文件?

text NC SSL插件重定向