对于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,可以像在本地一样执行远程命令
对于服务端的重定向命令乍看有点蒙,画个简图来帮助理解,如下:
对于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多了一层加密功能,使用起来相对比较安全.

猜你喜欢

转载自blog.51cto.com/3823536/2552381