hacktricks/linux-hardening/linux-environment-variables.md
2023-08-03 19:12:22 +00:00

7.6 KiB
Raw Blame History

Linux环境变量

☁️ HackTricks云 ☁️ -🐦 推特 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥

全局变量

全局变量将被子进程继承。

你可以通过以下方式为当前会话创建一个全局变量:

export MYGLOBAL="hello world"
echo $MYGLOBAL #Prints: hello world

这个变量将可以被当前会话及其子进程访问。

您可以通过以下方式删除一个变量:

unset MYGLOBAL

本地变量

本地变量只能被当前的shell脚本访问。

LOCAL="my local"
echo $LOCAL
unset LOCAL

列出当前变量

To list the current environment variables in Linux, you can use the env command. This command will display a list of all the variables and their values.

$ env

You can also use the printenv command to achieve the same result:

$ printenv

Both commands will output the variables in the format variable=value.

set
env
printenv
cat /proc/$$/environ
cat /proc/`python -c "import os; print(os.getppid())"`/environ

持久环境变量

影响每个用户行为的文件:

  • /etc/bash.bashrc每次启动交互式shell普通终端时都会读取此文件并执行其中的所有命令。
  • /etc/profile和/etc/profile.d/*****每次用户登录时都会读取此文件。因此,此处执行的所有命令仅在用户登录时执行一次。
  • 示例:

/etc/profile.d/somescript.sh

#!/bin/bash
TEST=$(cat /var/somefile)
export $TEST

仅影响特定用户行为的文件:

  • ~/.bashrc:此文件的工作方式与 /etc/bash.bashrc 文件相同,但仅对特定用户执行。如果要为自己创建环境,请修改或在您的主目录中创建此文件。
  • ~/.profile, ~/.bash_profile, ~/.bash_login****这些文件与 /etc/profile 相同。区别在于执行方式。仅当用户在其主目录中存在此文件时,才会执行此文件。

摘自:此处 此处

常见变量

来自:https://geek-university.com/linux/common-environment-variables/

  • DISPLAY X 使用的显示器。此变量通常设置为 :0.0,表示当前计算机上的第一个显示器。
  • EDITOR 用户首选的文本编辑器。
  • HISTFILESIZE 历史记录文件中包含的最大行数。
  • HISTSIZE - 用户会话结束时添加到历史记录文件中的行数
  • HOME 您的主目录。
  • HOSTNAME 计算机的主机名。
  • LANG 当前语言。
  • MAIL 用户邮件存储位置。通常为 /var/spool/mail/USER
  • MANPATH 手册页搜索的目录列表。
  • OSTYPE 操作系统类型。
  • PS1 bash 中的默认提示符。
  • PATH - 存储所有目录的路径,这些目录包含您想要通过指定文件名而不是相对或绝对路径来执行的二进制文件。
  • PWD 当前工作目录。
  • SHELL 当前命令shell的路径例如/bin/bash)。
  • TERM 当前终端类型(例如,xterm)。
  • TZ 您的时区。
  • USER 您当前的用户名。

用于黑客攻击的有趣变量

HISTFILESIZE

将此变量的值更改为0这样当您结束会话时,历史记录文件~/.bash_history将被删除。

export HISTFILESIZE=0

HISTSIZE

将此变量的值更改为0这样当您结束会话时任何命令都不会被添加到历史文件~/.bash_history

export HISTSIZE=0

http_proxy & https_proxy

进程将使用在此处声明的代理通过http或https连接到互联网。

export http_proxy="http://10.10.10.10:8080"
export https_proxy="http://10.10.10.10:8080"

SSL_CERT_FILE & SSL_CERT_DIR

进程将信任这些环境变量中指定的证书。

export SSL_CERT_FILE=/path/to/ca-bundle.pem
export SSL_CERT_DIR=/path/to/ca-certificates

PS1

更改提示符的外观。

我创建了这个(基于另一个,请阅读代码)。

Root用户

普通用户:

一个、两个和三个后台作业:

一个后台作业,一个停止的作业和最后一个命令未正确完成:

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥