Bienvenidos a este capítulo del Curso de Linux para Hackers – Variables del entorno. Comparte este articulo y síguenos para recibir más capítulos y cursos gratis.

Esta guía es parte de un curso mucho más grande en donde te enseñamos a convertirte en hacker de 0 a 100. Desde los conocimientos más básicos hasta conseguir empleo.

En esta guía veremos desde cero un tema tan amplio como es Linux y lo haremos desde el punto de vista del hacking y la ciberseguridad.

Para saber más comente a continuación, respondemos todos y cada uno de los comentarios.

¿Te gustaría enterarte de cuando lanzamos descuentos y nuevos cursos?

¿Qué es un entorno informático?

El entorno informático es la plataforma (Plataforma = Sistema operativo + Procesador) donde un usuario puede ejecutar programas.

¿Qué es una variable?

En informática, una variable es un lugar donde se almacena un valor que puede ser un nombre de archivo, texto, número o cualquier otro dato . Generalmente se hace referencia a ella con su nombre simbólico, que se le asigna durante su creación. El valor almacenado de esta manera se puede visualizar, eliminar, editar y volver a guardar.

Las variables juegan un papel importante en la programación informática porque permiten a los programadores escribir programas flexibles. Como están relacionadas con el sistema operativo en el que trabajamos, es importante conocer algunas de ellas y cómo podemos influir en ellas.

Las variables de entorno son uno de los elementos clave en el funcionamiento de los sistemas operativos basados en UNIX, como Linux. No solo son utilizadas por el sistema operativo para gestionar diversas configuraciones y comportamientos, sino que también son fundamentales para cualquier persona que esté desarrollando scripts o ejecutando programas en un entorno de terminal. En este artículo vamos a profundizar en lo que son, cómo se usan, y cómo podemos manipularlas para sacarle el máximo provecho, tanto en situaciones comunes como en contextos más avanzados.

¿Qué son las variables de entorno?

Las variables de entorno son valores dinámicos que afectan a los procesos o programas de una computadora. Existen en todos los sistemas operativos, pero los tipos pueden variar. Las variables de entorno se pueden crear, editar, guardar y eliminar, y brindan información sobre el comportamiento del sistema. Las variables de entorno pueden cambiar la forma en que se comporta un programa.

Por ejemplo, la variable de entorno $LANG almacena el valor del idioma que entiende el usuario. La aplicación lee este valor de modo que a un usuario chino se le muestra una interfaz en mandarín, mientras que a un usuario estadounidense se le muestra una interfaz en inglés.

Estudiemos algunas variables de entorno comunes:

VariableDescripción
PATHEsta variable contiene una lista separada por dos puntos (:) de directorios en los que su sistema busca archivos ejecutables. Cuando se introduce un comando en la terminal, el shell busca el comando en diferentes directorios mencionados en la variable $PATH. Si se encuentra el comando, se ejecuta. De lo contrario, devuelve un error “comando no encontrado”.
USEREl nombre del usuario actual.
HOMELa ruta del directorio personal del usuario.
EDITORRuta al programa que edita el contenido de los archivos
UIDIdentificación única del usuario
TERMEmulador de terminal predeterminado
SHELLLa shell que se está utilizando (como Bash o Zsh).
LANGEspecifica la configuración regional y el idioma que utiliza el sistema.

Tipos de Variables de Entorno

Variables de Usuario

Son variables definidas por el usuario actual y solo tienen efecto dentro de la sesión o shell en la que fueron creadas. Una vez que la sesión termina, estas variables se pierden, a menos que se definan de manera persistente.

Variables Globales

Estas son variables que afectan a todos los usuarios y procesos del sistema. Generalmente se definen en archivos de configuración del sistema como /etc/environment, /etc/profile, o en archivos de configuración específicos de la shell como .bashrc o .bash_profile.

Acceder a valores de variables

Para determinar el valor de una variable, utilice el comando

echo $VARIABLE

Las variables distinguen entre mayúsculas y minúsculas. Asegúrese de escribir el nombre de la variable con las mayúsculas y minúsculas correctas, de lo contrario, es posible que no obtenga los resultados deseados.

ENV

El comando ‘ env’ muestra todas las variables de entorno. El comando env o printenv puede mostrarte todas las variables de entorno que están configuradas en tu sesión actual:

Definir una variable temporalmente

Para definir una variable de entorno en la sesión actual de la shell, puedes usar el siguiente comando:

El comando env tiene más opciones que puedes explorar

export NOMBRE_VARIABLE=”valor”

Esta variable solo existirá mientras dure la sesión actual de la terminal. Si cierras la terminal, la variable desaparecerá.

 env –help

También te recomendamos consultar las páginas man:

Establecer nuevas variables de entorno

Puede crear su propia variable definida por el usuario, con sintaxis. Empezaremos hablando de las variables sin profundizar ahora en ello. Una variable solo es un elemento que tiene un nombre y que es capaz de guardar un valor. Para definir una variable basta poner su nombre un igual y su valor. (Ojo no dejar espacios).

NOMBRE_VARIABLE= valor_variable

Nuevamente, tenga en cuenta que las variables distinguen entre mayúsculas y minúsculas y, normalmente, se crean en mayúsculas.

En Unix y Linux las variables del sistema se llaman variables de entorno. Para consultar el valor de una variable se utiliza el nombre de la variable precedido por ‘$’.

Definir una variable de forma persistente

Si quieres que la variable de entorno se mantenga disponible en futuras sesiones, debes agregarla a los archivos de configuración de la shell. Para Bash, puedes editar el archivo .bashrc (para sesiones interactivas) o .bash_profile (para sesiones de login). Por ejemplo:

Eliminación de variables

La siguiente sintaxis se puede utilizar para eliminar una variable del sistema.

Esto solo eliminará la variable de la sesión actual, pero no de los archivos de configuración donde pueda estar definida de forma persistente.

Para ver todas las variables y sus valores se utiliza el comando set.

Para hacer la variable exportable se usa el comando ‘export’. Se puede hacer que una variable sea de solo lectura con el comando ‘readonly’. Este comando sin parámetros mostrará todas las variables que son de solo lectura. Pruebe estos comandos:

SET

También te recomendamos consultar las páginas man para este comando:

 man set

Export

Añadir valores a variables existentes

A menudo querrás añadir un valor a una variable ya existente, como por ejemplo:

De esta manera, no sobreescribes el valor actual, sino que lo expandes añadiendo nuevos directorios al final.

Readonly

También  te recomendamos consultar las páginas man:

 man readonly

Resumen de Variables de entorno:

Las variables de entorno gobiernan el comportamiento de los programas en su sistema operativo .

DominioDescripción
echo $VARIABLEPara mostrar el valor de una variable
envMuestra todas las variables de entorno
NOMBRE_VARIABLE= valor_variableCrear una nueva variable
unsetEliminar una variable
export Variable=valuePara establecer el valor de una variable de entorno

La terminal tiene una configuración con diferentes valores, que se pueden acceder con las variables de entorno. Estas son muy importantes para la configuración general del sistema. Podemos guardar alias para que se queden de manera permanente con esto.

Variables de Entorno para Hackers

Para los hackers y usuarios avanzados de Linux, las variables de entorno pueden ser una herramienta poderosa. Desde la configuración del entorno para pruebas de penetración hasta la modificación del comportamiento de exploits, el dominio de estas variables te da un mayor control sobre el sistema. A continuación, algunas situaciones específicas en las que podrías encontrarlas útiles:

PATH y Escalada de Privilegios

Uno de los trucos clásicos es manipular la variable PATH para que apunte a un ejecutable malicioso que tú controlas. Si logras que un usuario con mayores privilegios (como root) ejecute un comando sin especificar su ruta completa, podrías hacer que en lugar de ejecutar el comando legítimo, ejecute tu versión maliciosa.

Por ejemplo, supongamos que has comprometido un servidor y tienes acceso limitado. Si tienes la capacidad de modificar el PATH de un administrador, podrías hacer lo siguiente:

export PATH=/ruta/a/tu/script_malicioso:$PATH

Ahora, si el administrador ejecuta un comando como ls, en lugar de ejecutar el ls del sistema, se ejecutará tu versión.

Manipulación de SHELL

Algunos exploits se basan en la manipulación de la variable SHELL para obtener acceso a una shell no restringida. Por ejemplo, si una aplicación vulnerable ejecuta comandos a través de sh, puedes intentar cambiar la variable SHELL para que apunte a un binario como /bin/bash o incluso una shell personalizada que hayas creado con fines maliciosos.

export SHELL=/bin/bash

Variables de Entorno en Explotación de Aplicaciones Web

En el contexto de aplicaciones web, las variables de entorno son útiles en situaciones como la explotación de vulnerabilidades de inyección de código o de archivo. En configuraciones incorrectas, podrías aprovechar variables como HTTP_PROXY, HTTPS_PROXY y otras que controlan el tráfico saliente de las aplicaciones para redirigir ese tráfico a servidores bajo tu control.

Localización de Archivos Importantes

Los atacantes a menudo utilizan variables de entorno para localizar archivos sensibles en un sistema comprometido. Si tienes acceso a una shell restringida o a un contenedor, inspeccionar variables como HOME y LOGNAME te da pistas sobre la configuración del entorno del usuario, lo que puede ser el primer paso para elevar privilegios o moverte lateralmente en un sistema.

echo $HOME
echo $LOGNAME

Conclusión

Dominar las variables de entorno en Linux te da control total sobre el comportamiento de tus sesiones, scripts y aplicaciones. Ya sea que las uses para ajustar tu entorno de desarrollo o para actividades más avanzadas como la explotación de vulnerabilidades, entender cómo funcionan es fundamental para cualquier hacker que quiera maximizar su eficiencia y efectividad en un entorno Linux.

La próxima vez que estés frente a una terminal, tómate un momento para observar y manipular las variables de entorno. Puede que te sorprenda todo lo que puedes lograr con solo unas pocas líneas de código.

Pon en práctica lo aprendido

Ahora pon a prueba lo aprendido con estas preguntas y ejercicios. No te preocupes si no puedes resolver algun punto. En los siguientes capítulos abordaremos con más detalle todos estos temas.

Preguntas sobre el artículo:

  1. ¿Qué es un entorno informático y cómo está compuesto?
  2. ¿Qué es una variable en informática y cuál es su propósito?
  3. ¿Qué son las variables de entorno y por qué son importantes en sistemas basados en UNIX como Linux?
  4. ¿Cuál es el propósito de la variable de entorno $PATH y qué sucede si no se encuentra el comando especificado en los directorios indicados?
  5. ¿Qué función cumple la variable $USER en el sistema operativo?
  6. ¿Cuál es la diferencia entre las variables de entorno de usuario y las globales?
  7. ¿Cómo se puede consultar el valor de una variable de entorno en la terminal?
  8. ¿Qué comando se utiliza para definir una variable de entorno temporalmente en una sesión de shell?
  9. ¿Qué es el archivo .bashrc y cómo se utiliza para definir variables de entorno de manera persistente?
  10. ¿Cómo pueden los hackers aprovechar las variables de entorno como $PATH o $SHELL para realizar ataques?

Ejercicios basados en el artículo:

  1. Define una variable llamada MI_VAR con el valor “Hola Mundo” y consulta su valor en la terminal.
  2. Modifica el valor de la variable $PATH para incluir un nuevo directorio y verifica que se haya agregado correctamente.
  3. Crea una variable de entorno temporal que almacene el nombre de tu usuario y comprueba que desaparezca después de cerrar la sesión.
  4. Consulta y muestra el valor de la variable de entorno que contiene el directorio personal del usuario.
  5. Añade de manera persistente una variable de entorno en el archivo .bashrc que se mantenga en futuras sesiones.
  6. Elimina una variable de entorno que has creado y confirma que ya no está disponible en la sesión actual.
  7. Utiliza el comando env para mostrar todas las variables de entorno configuradas en tu sesión actual.
  8. Intenta manipular la variable $LANG para cambiar el idioma de las aplicaciones de la terminal. ¿Qué efectos observas?
  9. Configura la variable EDITOR para usar un editor de texto diferente y verifica que al editar archivos este editor se utilice.
  10. Simula una situación donde cambias la variable $SHELL para usar una shell diferente y observa el comportamiento del sistema.

Respuestas a las preguntas:

  1. Entorno informático: Es la plataforma que permite al usuario ejecutar programas, compuesta por el sistema operativo y el procesador.
  2. Variable en informática: Es un lugar donde se almacena un valor, como texto, números o datos, que puede ser utilizado, modificado o eliminado por programas. Son clave en la programación para crear programas flexibles.
  3. Variables de entorno: Son valores dinámicos que afectan el comportamiento de programas y procesos en un sistema operativo. En sistemas UNIX, son esenciales para gestionar configuraciones y comportamientos del sistema.
  4. $PATH: Contiene una lista de directorios donde el sistema busca ejecutables cuando se introduce un comando en la terminal. Si no encuentra el comando, muestra el error “comando no encontrado”.
  5. $USER: Indica el nombre del usuario que está utilizando la sesión actual en el sistema.
  6. Variables de usuario vs globales: Las variables de usuario afectan solo a la sesión actual, mientras que las globales afectan a todos los usuarios y procesos del sistema.
  7. Consultar una variable: Utilizando el comando echo $NOMBRE_VARIABLE, se puede ver el valor de una variable de entorno.
  8. Definir temporalmente una variable: Se usa el comando export NOMBRE_VARIABLE="valor" para definir una variable en la sesión actual de la shell.
  9. Archivo .bashrc: Se utiliza para definir variables de entorno de manera persistente, lo que asegura que las variables estén disponibles en futuras sesiones.
  10. Hackers y variables de entorno: Los hackers pueden manipular variables como $PATH para redirigir comandos a ejecutables maliciosos, o $SHELL para obtener acceso a una shell sin restricciones.

Respuestas a los ejercicios:

  1. Definir variable:
    Comando: MI_VAR="Hola Mundo"
    Consultar: echo $MI_VAR
    Resultado: “Hola Mundo”
  2. Modificar $PATH:
    Comando: export PATH=$PATH:/nuevo/directorio
    Verificar: echo $PATH
    Resultado: El nuevo directorio debe estar al final de la lista de directorios.
  3. Variable temporal:
    Comando: export MI_USUARIO="nombre_usuario"
    Comprobar: echo $MI_USUARIO
    Cerrar la sesión: exit
    Resultado: La variable desaparece después de cerrar la sesión.
  4. Consultar $HOME:
    Comando: echo $HOME
    Resultado: Muestra la ruta del directorio personal del usuario.
  5. Añadir variable en .bashrc:
    Editar .bashrc e incluir: export MI_VAR="valor_persistente"
    Guardar, luego ejecutar: source ~/.bashrc
    Comprobar: echo $MI_VAR
    Resultado: La variable será accesible en futuras sesiones.
  6. Eliminar variable:
    Comando: unset MI_VAR
    Comprobar: echo $MI_VAR (no debe devolver nada).
  7. Mostrar todas las variables:
    Comando: env
    Resultado: Lista de todas las variables de entorno configuradas.
  8. Manipular $LANG:
    Comando: export LANG=es_ES.UTF-8
    Resultado: Las aplicaciones que usan esta variable cambiarán el idioma al español.
  9. Cambiar $EDITOR:
    Comando: export EDITOR=nano
    Comprobar: Editar un archivo y ver que usa nano como editor.
  10. Cambiar $SHELL:
    Comando: export SHELL=/bin/zsh
    Resultado: La terminal cambiará a Zsh si está instalada, afectando el comportamiento de la sesión.

No te detengas, sigue avanzando

Aquí tienes un propósito que debes considerar seriamente: si has querido mejorar tus habilidades en hacking, Ciberseguridad y programación ahora es definitivamente el momento de dar el siguiente paso. ¡Desarrolla tus habilidades aprovechando nuestros cursos a un precio increíble y avanza en tu carrera! El mundo necesita más hackers…

¿Te gustaría enterarte de cuando lanzamos descuentos y nuevos cursos?

Sobre los autores

Álvaro Chirou

Yo soy Álvaro Chirou, tengo más de 20 Años de experiencia trabajando en Tecnología, eh dado disertaciones en eventos internacionales como OWASP, tengo más de 1.800.000 estudiantes en Udemy y 100 formaciones profesionales impartidas en la misma. Puedes seguirme en mis redes:

Laprovittera Carlos

Soy Laprovittera Carlos. Con más de 20 años de experiencia en IT brindo Educación y Consultoría en Seguridad de la Información para profesionales, bancos y empresas. Puedes saber más de mi y de mis servicios en mi sitio web: laprovittera.com y seguirme en mis redes:

Hacker de 0 a 100 desde las bases hasta conseguir empleo

¿Quieres iniciarte en hacking y ciberseguridad pero no sabes por dónde empezar? Inicia leyendo nuestra guia gratuita: https://achirou.com/hacker-de-0-a-100-desde-las-bases-hasta-conseguir-empleo/ que te lleva de 0 a 100. Desde los fundamentos más básicos, pasando por cursos, recursos y certificaciones hasta cómo obtener tu primer empleo.

Hemos creado una ruta de 0 a 100. Un plan de desarrollo que va desde las bases: cómo aprender hacking, qué aprender, en qué orden; pasando por las areas técnicas necesarias como Linux, Redes, Programación y los conocimientos necesarios en ciber seguridad, hacking, pentesting hasta la práctica y el inicio laboral: Crear tu propio laboratorio, certificaciones, adquirir experiencia e iniciarse laboralmente.

Este es un mega post. Una guía con más de 250 artículos que te llevaran por el camino del hacker. Esta guía es gratuita y esta creada gracias al esfuerzo y al trabajo combinado de Alvaro Chirou y mío (Laprovittera Carlos).

Creamos esta guía (futuro curso) para que puedas iniciarte en este mundo. Puedes arrancar ahora, GRATIS, solo necesitas un PC, conexión a internet y paciencia (Ser hacker NO ES un camino de la noche a la mañana).

El Hacking y la ciberseguridad es una carrera divertida, emocionante y gratificante que te recompensará y desafiará por igual. Sin embargo, para quienes buscan adentrarse en este campo en auge y en constante evolución, puede resultar difícil saber por dónde empezar. ¡Ahí es donde entra en juego nuestra guía en ciberseguridad!

Esta es la hoja de ruta hacia el trabajo de ciberseguridad de tus sueños. Te ayudará a entender qué conocimientos, habilidades y certificados son necesarios para alcanzar tus metas profesionales y tener una carrera próspera. Si quieres ser consultor de ciberseguridad, analista de malware, evaluador de penetración, analista de SOC o cualquier otro puesto de ciberseguridad, esta guía es lo que necesitas.

SIGUE APRENDIENDO GRATIS CON NUESTRAS GUIAS

Aprende con nuestros más de 100 cursos que tenemos disponibles para vos

Compartimos estos recursos para ayudar a la comunidad de hacking y ciberseguridad. COMPARTE y Siéntete libre de agregar más sugerencias en los comentarios a continuación, respondemos todos y cada uno de los comentarios.

Saludos amigos y happy hacking!!!