Apuntes Ciberseguridad (Cibaism)
HTBGitHubLinkedInNotion (Writeups)
  • Welcome to My Digital Garden
  • About me
  • Hacking notes (Personal)
    • Tratamiento TTY
    • Hacking Web Tecniques
      • File Inclusion
    • Linux Privilage Escalation
    • Arreglar bloodhound
  • Hacking Notes (Learning Path)
    • (HTB) Penetration Tester
      • Getting Started
        • Common Terms
          • Tipos de Shell
          • Puertos importantes
          • OWASP Top 10
        • Service Scanning
          • Nmap
          • Attacking Network Services
            • Captura de banners
            • FTP
            • SMB
            • SNMP
        • Web Enumeration
        • Public exploits
          • Encontrar exploits públicos
          • Introducción a Metasploit
        • Types of Shells
          • Reverse Shell
          • Bind Shell
          • Web Shell
        • Privilage escalation
        • Transferring Files
      • Footprinting
        • Infrastructura Based Enumeration
          • Domain Information
          • Cloud Resources
          • Staff
        • Host Based Enumeration
          • FTP
          • SMB
          • NFS
          • DNS
          • SMTP
          • IMAP / POP3
          • SNMP
          • MySQL
          • MSSQL
          • Oracle TNS
          • IPMI
          • Protocolos de administración remota de Linux
          • Protocolos de administración remota de Windows
      • Introduction to Active Directory Enumeration & Attacks
        • Tools of the Trade
        • Initial enumeration
          • External Recon and Enumeration Principles
          • Initial Enumeration of the Domain
        • Sniffing out a Foothold
          • LLMNR/NBT-NS Poisoning - from Linux
          • LLMNR/NBT-NS Poisoning - from Windows
        • Sighting In, Hunting For A User
          • Password Spraying Overview
          • Enumerating & Retrieving Password Policies
          • Password Spraying - Making a Target User List
        • Spray Responsibly
          • Internal Password Spraying - from Linux
      • File Inclusion
        • File Disclousure
          • Local File Inclusion (LFI)
          • Basic Bypasses
          • PHP Filters
        • Remote Code Execution
          • PHP Wrappers
    • (CRTA) Red Team Analyst
      • (CRTA) Red Team Analyst - Lab
    • (eJPT) Junior Penetration Tester
      • Assessment Methodologies
        • Assessment Methodologies: Footprinting & Scanning
          • Windows Recon: Nmap Host Discovery
          • Scan the Server 1
          • Windows Recon: SMB Nmap Scripts
        • Assessment Methodologies: Enumeration
          • Importing Nmap Scan Results Into MSF
          • T1046 : Network Service Scanning
          • FTP Enumeration
          • Samba Recon: Basics
          • Apache Enumeration
          • MySQL Enumeration
          • SSH Login
          • Postfix Recon: Basics
        • Assessment Methodologies: Vulnerability Assessment
          • Windows: IIS Server DAVTest
          • Shellshock
          • Web App Vulnerability Scanning With WMAP
      • Host & Network Penetration Testing
        • Host & Network Penetration Testing: System/Host Based Attacks
          • Windows
            • Windows: IIS Server: WebDav Metasploit
            • Windows: SMB Server PSexec
            • Windows: Insecure RDP Service
            • WinRM: Exploitation with Metasploit
            • UAC Bypass: UACMe
            • Privilege Escalation: Impersonate
            • Unattended Installation
            • Windows: Meterpreter: Kiwi Extension
          • Linux
            • ProFTP Recon: Basics
            • Samba Recon: Dictionary Attack
            • Cron Jobs Gone Wild II
            • Exploiting Setuid Programs
            • Password Cracker: Linux
        • Host & Network Penetration Testing: Network-Based Attacks
          • NetBIOS Hacking
          • SNMP Analysis
          • DNS & SMB Relay Attack
        • Host & Network Penetration Testing: The Metasploit Framework (MSF)
          • Windows: Java Web Server
          • Windows: HTTP File Server
          • Vulnerable FTP Server
          • Vulnerable File Sharing Service
          • Vulnerable SSH server
          • Vulnerable SMTP Server
          • Meterpreter Basics
          • Upgrading Command Shells To Meterpreter Shells
          • Windows Post Exploitation Modules
          • UAC Bypass: Memory Injection (Metasploit)
          • Exploiting SMB With PsExec
          • Windows: Enabling Remote Desktop
          • Clearing Windows Event Logs
          • Pivoting
  • Blue team notes
    • Digital Forensics
      • Malware Analysis with VirusTotal
      • Wireshark
    • (Falcon) CrowdStrike
      • FALCON 104: Getting Started with the Endpoint Security Module
      • FALCON 106: Customizing Dashboards in Falcon
      • FALCON 180: Falcon Forensics Fundamentals
  • Programming
    • Powershell
Powered by GitBook
On this page
  • Checklists de escaladas de privilegios:
  • Scripts de enumeración:
  • Software vulnerable:
  • Privilegios de usuario:
  • Tareas programadas:
  • Credenciales expuestas:
  • Claves SSH:
  1. Hacking Notes (Learning Path)
  2. (HTB) Penetration Tester
  3. Getting Started

Privilage escalation

PreviousWeb ShellNextTransferring Files

Last updated 2 months ago

Nuestro acceso inicial a un servidor remoto suele ser con un usuario con pocos privilegios, lo que no nos daría acceso completo a través de la máquina. Para obtener acceso completo, necesitaremos encontrar una vulnerabilidad interna/local que escale nuestros privilegios a root(usuario en Linux) o al usuario administrator(usuario en Windows) .

Checklists de escaladas de privilegios:

  • Hacktricks:

    • Linux:

    • Windows:

  • PayloadsAllTheThings:

    • Linux:

    • Windows:

Scripts de enumeración:

  • Linux:

    • LinEnum:

    • linuxprivchecker:

  • Windows:

    • Seatbelt:

    • JAWS:

Software vulnerable:

Otra cosa que se debe mirar es los softwares instalados. Para ver que softwares están instalados en los sistemas operativos.

Linux:

dpkg -l

Windows:

C:\Program Files

Una vez tengamos los softwares instalados posemos sacar sus versiones y buscar algún exploit público.

Privilegios de usuario:

Otro aspecto crítico a considerar tras acceder a un servidor son los privilegios disponibles para el usuario al que tenemos acceso. Supongamos que podemos ejecutar comandos específicos como root (o como otro usuario). En ese caso, podríamos escalar nuestros privilegios a root/usuarios del sistema u obtener acceso como otro usuario. A continuación, se presentan algunas formas comunes de explotar ciertos privilegios de usuario:

  • Sudo

  • SUID

  • Privilegios de token en Windows

El comando sudoen Linux permite a un usuario ejecutar comandos como un usuario diferente. Se usa generalmente para permitir que usuarios con privilegios bajos ejecuten comandos como root sin darles acceso como root. Esto se debe a que ciertos comandos solo se pueden ejecutar tcpdumpocomo root o permiten al usuario acceder a ciertos directorios exclusivos para root.

Para comprobar los privelegios de sudo de nuestro usuari usaremos el siguiente comando:

sudo -l

La entrada NOPASSWDmuestra que el comando /bin/echo se puede ejecutar sin contraseña. Esto sería útil si accediéramos al servidor a través de una vulnerabilidad y no tuviéramos la contraseña del usuario. Como se indica user, podemos ejecutarlo sudocon ese usuario y no como root.

Tareas programadas:

Tanto en Linux como en Windows, existen métodos para ejecutar scripts a intervalos específicos para realizar una tarea. Algunos ejemplos son ejecutar un análisis antivirus cada hora o un script de copia de seguridad cada 30 minutos. Normalmente, hay dos maneras de aprovechar las tareas programadas (Windows) o los trabajos cron (Linux) para escalar nuestros privilegios:

  1. Agregar nuevas tareas programadas/trabajos cron

  2. Engañarlos para que ejecuten un software malicioso

La forma más sencilla es comprobar si tenemos permiso para añadir nuevas tareas programadas. En Linux, una forma común de mantener las tareas programadas es mediante [nombre del directorio] Cron Jobs. Hay directorios específicos que podemos usar para añadir nuevas tareas cron si tenemos writepermisos sobre ellos. Estos incluyen:

  • /etc/crontab

  • /etc/cron.d

  • /var/spool/cron/crontabs/root

Si podemos escribir en un directorio llamado por un trabajo cron, podemos escribir un script bash con un comando de shell inverso, que debería enviarnos un shell inverso cuando se ejecute.

Credenciales expuestas:

A continuación, podemos buscar archivos que podamos leer y comprobar si contienen credenciales expuestas. Esto es muy común con archivos de configuration, archivos de log y archivos de historial de usuario ( bash_historyen Linux y PSReadLineen Windows). Los scripts de enumeración que comentamos al principio suelen buscar posibles contraseñas en los archivos y proporcionárnoslas.

Claves SSH:

Finalmente, analicemos las claves SSH. Si tenemos acceso de lectura al .sshdirectorio para un usuario específico, podemos leer sus claves SSH privadas, que se encuentran en [nombre del directorio /home/user/.ssh/id_rsa] o [nombre del archivo /root/.ssh/id_rsa], y usarlas para iniciar sesión en el servidor. Si podemos leer el /root/.ssh/directorio y el archivo id_rsa, podemos copiarlo a nuestra máquina y usar la flag -i para iniciar sesión con él.

nano id_rsa
chmod +600 id_rsa
ssh <usuario>@<host> -i id_rsa

Si tenemos acceso de escritura al /.ssh/directorio de un usuario, podemos colocar nuestra clave pública en el directorio ssh del usuario en [nombre del usuario] /home/user/.ssh/authorized_keys. Esta técnica se suele usar para obtener acceso ssh después de obtener un shell como ese usuario. La configuración actual de SSH no acepta claves escritas por otros usuarios, por lo que solo funcionará si ya tenemos control sobre ese usuario. Primero debemos crear una nueva clave con [nombre del usuario] ssh-keygeny la -fbandera para especificar el archivo de salida.

ssh-keygen -f key

Esto nos dará dos archivos: key(que usaremos con ssh -i) y key.pub, que copiaremos a la máquina remota. Copiamos key.pub, y luego, en la máquina remota, lo añadiremos a /root/.ssh/authorized_keys.

echo "ssh-rsa AAAAB...SNIP...M= user@parrot" >> /root/.ssh/authorized_keys
ssh <user>@<host> -i key

Una vez que encontramos una aplicación específica que podemos ejecutar sudo, podemos buscar maneras de explotarla para obtener acceso root. contiene una lista de comandos y cómo explotarlos mediante [ nombre del usuario sudo]. Podemos buscar la aplicación sudosobre la que tenemos privilegios y, si existe, podría indicarnos el comando exacto que debemos ejecutar para obtener acceso root con dichos sudoprivilegios.

también contiene una lista de aplicaciones de Windows que podemos aprovechar para realizar ciertas funciones, como descargar archivos o ejecutar comandos en el contexto de un usuario privilegiado.

https://book.hacktricks.wiki/en/index.html
https://book.hacktricks.wiki/en/linux-hardening/linux-privilege-escalation-checklist.html
https://book.hacktricks.wiki/en/windows-hardening/checklist-windows-privilege-escalation.html
https://github.com/swisskyrepo/PayloadsAllTheThings
https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Methodology%20and%20Resources/Linux%20-%20Privilege%20Escalation.md
https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Methodology%20and%20Resources/Windows%20-%20Privilege%20Escalation.md
https://github.com/rebootuser/LinEnum
https://github.com/sleventyeleven/linuxprivchecker
https://github.com/GhostPack/Seatbelt
https://github.com/411Hall/JAWS
GTFOBins
LOLBAS