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:
Variable | Descripción |
PATH | Esta 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”. |
USER | El nombre del usuario actual. |
HOME | La ruta del directorio personal del usuario. |
EDITOR | Ruta al programa que edita el contenido de los archivos |
UID | Identificación única del usuario |
TERM | Emulador de terminal predeterminado |
SHELL | La shell que se está utilizando (como Bash o Zsh). |
LANG | Especifica 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 .
Dominio | Descripción |
echo $VARIABLE | Para mostrar el valor de una variable |
env | Muestra todas las variables de entorno |
NOMBRE_VARIABLE= valor_variable | Crear una nueva variable |
unset | Eliminar una variable |
export Variable=value | Para 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:
- ¿Qué es un entorno informático y cómo está compuesto?
- ¿Qué es una variable en informática y cuál es su propósito?
- ¿Qué son las variables de entorno y por qué son importantes en sistemas basados en UNIX como Linux?
- ¿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? - ¿Qué función cumple la variable
$USER
en el sistema operativo? - ¿Cuál es la diferencia entre las variables de entorno de usuario y las globales?
- ¿Cómo se puede consultar el valor de una variable de entorno en la terminal?
- ¿Qué comando se utiliza para definir una variable de entorno temporalmente en una sesión de shell?
- ¿Qué es el archivo
.bashrc
y cómo se utiliza para definir variables de entorno de manera persistente? - ¿Cómo pueden los hackers aprovechar las variables de entorno como
$PATH
o$SHELL
para realizar ataques?
Ejercicios basados en el artículo:
- Define una variable llamada
MI_VAR
con el valor “Hola Mundo” y consulta su valor en la terminal. - Modifica el valor de la variable
$PATH
para incluir un nuevo directorio y verifica que se haya agregado correctamente. - Crea una variable de entorno temporal que almacene el nombre de tu usuario y comprueba que desaparezca después de cerrar la sesión.
- Consulta y muestra el valor de la variable de entorno que contiene el directorio personal del usuario.
- Añade de manera persistente una variable de entorno en el archivo
.bashrc
que se mantenga en futuras sesiones. - Elimina una variable de entorno que has creado y confirma que ya no está disponible en la sesión actual.
- Utiliza el comando
env
para mostrar todas las variables de entorno configuradas en tu sesión actual. - Intenta manipular la variable
$LANG
para cambiar el idioma de las aplicaciones de la terminal. ¿Qué efectos observas? - Configura la variable
EDITOR
para usar un editor de texto diferente y verifica que al editar archivos este editor se utilice. - Simula una situación donde cambias la variable
$SHELL
para usar una shell diferente y observa el comportamiento del sistema.
Respuestas a las preguntas:
- Entorno informático: Es la plataforma que permite al usuario ejecutar programas, compuesta por el sistema operativo y el procesador.
- 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.
- 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.
- $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”.
- $USER: Indica el nombre del usuario que está utilizando la sesión actual en el sistema.
- 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.
- Consultar una variable: Utilizando el comando
echo $NOMBRE_VARIABLE
, se puede ver el valor de una variable de entorno. - Definir temporalmente una variable: Se usa el comando
export NOMBRE_VARIABLE="valor"
para definir una variable en la sesión actual de la shell. - Archivo
.bashrc
: Se utiliza para definir variables de entorno de manera persistente, lo que asegura que las variables estén disponibles en futuras sesiones. - 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:
- Definir variable:
Comando:MI_VAR="Hola Mundo"
Consultar:echo $MI_VAR
Resultado: “Hola Mundo” - Modificar $PATH:
Comando:export PATH=$PATH:/nuevo/directorio
Verificar:echo $PATH
Resultado: El nuevo directorio debe estar al final de la lista de directorios. - 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. - Consultar $HOME:
Comando:echo $HOME
Resultado: Muestra la ruta del directorio personal del usuario. - 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. - Eliminar variable:
Comando:unset MI_VAR
Comprobar:echo $MI_VAR
(no debe devolver nada). - Mostrar todas las variables:
Comando:env
Resultado: Lista de todas las variables de entorno configuradas. - Manipular $LANG:
Comando:export LANG=es_ES.UTF-8
Resultado: Las aplicaciones que usan esta variable cambiarán el idioma al español. - Cambiar $EDITOR:
Comando:export EDITOR=nano
Comprobar: Editar un archivo y ver que usanano
como editor. - 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…
- Cómo conseguir trabajo de hacker en 2024
- Trabaja remoto e internacionalmente como Hacker en 2024
- Se necesitan más Hackers – Hechos y estadísticas de 2024
- Se Necesitan más Hackers – La escasez de habilidades en ciberseguridad está empeorando
- El salario de un hacker – Cuanto se gana como Pentesters/ Infosec
- Las empresas te estan buscando para hacerle frente a los ciberataques
- Cómo convertirse en analista de ciberseguridad
- Inicia en hacking y ciberseguridad como analista SOC
- DevOps vs DevSecOps para Hackers
- DevOps vs DevSecOps para Empresas
¿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
- Cómo Iniciarse en Hacking y Ciberseguridad en 2024
- Hacker de 0 a 100 desde las bases hasta conseguir empleo
- Curso de Redes para Hackers
- Curso Gratis de Programación
- Curso Gratis Linux – Capitulo 1 – Introducción a Linux
- Curso Gratis de Redes – Capitulo 1 – Tipos de redes y servicios
- Guía de Hacking y Pentesting capitulo 1: Introducción al Pentesting
- Como iniciarse en TRY HACK ME – Complete Beginner #1
- OSINT #1 Más de 200 Search Tools
- Curso Gratis de Java para Hackers
- Hardware para Hackers – Los mejores 40 Dispositivos de Hacking
- Guía de Flipper Zero – Qué es y para qué sirve
- SIGUE APRENDIENDO GRATIS EN NUESTRO BLOG
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!!!