运维开发网

对于nc重定向至bash的理解

运维开发网 https://www.qedev.com 2020-11-20 12:46 出处:51CTO 作者:一念为云
nc的全名netcat,将nc服务端重定向至bash,就可以获得一个远程shell1,在服务端:1)建一个命名管道mkfifopipe2)结合匿名管道重定向nc-l-p4444<pipe|bash>pipe2,在客户端:假设服务端的ip为1.1.1.1nc1.1.1.1444那么现在客户端就连接到了服务端1.1.1.1,并且获得了一个服务端的远程shell,可以像在本地一样执行远程命令

nc的全名netcat,将nc服务端重定向至bash,就可以获得一个远程shell

1,在服务端:

1)建一个命名管道

mkfifo pipe

2)结合匿名管道重定向

nc -l -p 4444 &lt; pipe|bash &gt; pipe

2,在客户端:

假设服务端的ip为1.1.1.1

nc 1.1.1.1 444

那么现在客户端就连接到了服务端1.1.1.1,并且获得了一个服务端的远程shell,可以像在本地一样执行远程命令

对于服务端的重定向命令乍看有点蒙,画个简图来帮助理解,如下:

对于nc重定向至bash的理解

根据这个图,捋一下整个远程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多了一层加密功能,使用起来相对比较安全.

扫码领视频副本.gif

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号