hacktricks/linux-hardening/linux-environment-variables.md

138 lines
5.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Variáveis de Ambiente do Linux
<details>
<summary><strong>Aprenda hacking na AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Outras maneiras de apoiar o HackTricks:
* Se você quiser ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Compartilhe seus truques de hacking enviando PRs para os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
</details>
## Variáveis Globais
As variáveis globais **serão** herdadas pelos **processos filhos**.
Você pode criar uma variável global para sua sessão atual fazendo:
```bash
export MYGLOBAL="hello world"
echo $MYGLOBAL #Prints: hello world
```
Esta variável será acessível pelas suas sessões atuais e seus processos filhos.
Você pode **remover** uma variável fazendo:
```bash
unset MYGLOBAL
```
## Variáveis locais
As **variáveis locais** só podem ser **acessadas** pelo **shell/script atual**.
```bash
LOCAL="my local"
echo $LOCAL
unset LOCAL
```
## Listar variáveis atuais
```bash
printenv
```
```bash
set
env
printenv
cat /proc/$$/environ
cat /proc/`python -c "import os; print(os.getppid())"`/environ
```
## Variáveis de ambiente persistentes
#### **Arquivos que afetam o comportamento de todos os usuários:**
* _**/etc/bash.bashrc**_: Este arquivo é lido sempre que um shell interativo é iniciado (terminal normal) e todos os comandos especificados aqui são executados.
* _**/etc/profile e /etc/profile.d/\***_**:** Este arquivo é lido toda vez que um usuário faz login. Assim, todos os comandos executados aqui serão executados apenas uma vez no momento do login do usuário.
* \*\*Exemplo: \*\*
`/etc/profile.d/somescript.sh`
```bash
#!/bin/bash
TEST=$(cat /var/somefile)
export $TEST
```
## Variáveis comuns
De: [https://geek-university.com/linux/common-environment-variables/](https://geek-university.com/linux/common-environment-variables/)
* **DISPLAY** o display usado pelo **X**. Esta variável geralmente é definida como **:0.0**, o que significa o primeiro display no computador atual.
* **EDITOR** o editor de texto preferido do usuário.
* **HISTFILESIZE** o número máximo de linhas contidas no arquivo de histórico.
* **HISTSIZE** Número de linhas adicionadas ao arquivo de histórico quando o usuário termina sua sessão.
* **HOME** seu diretório pessoal.
* **HOSTNAME** o nome do host do computador.
* **LANG** seu idioma atual.
* **MAIL** a localização do correio do usuário. Geralmente **/var/spool/mail/USER**.
* **MANPATH** a lista de diretórios para pesquisar páginas do manual.
* **OSTYPE** o tipo de sistema operacional.
* **PS1** o prompt padrão no bash.
* **PATH** armazena o caminho de todos os diretórios que contêm arquivos binários que você deseja executar apenas especificando o nome do arquivo e não o caminho relativo ou absoluto.
* **PWD** o diretório de trabalho atual.
* **SHELL** o caminho para o shell de comando atual (por exemplo, **/bin/bash**).
* **TERM** o tipo de terminal atual (por exemplo, **xterm**).
* **TZ** seu fuso horário.
* **USER** seu nome de usuário atual.
## Variáveis interessantes para hacking
### **HISTFILESIZE**
Altere o **valor desta variável para 0**, para que quando você **encerrar sua sessão**, o **arquivo de histórico** (\~/.bash\_history) **seja excluído**.
```bash
export HISTFILESIZE=0
```
### **HISTSIZE**
Altere o **valor desta variável para 0**, para que quando você **encerrar sua sessão**, nenhum comando seja adicionado ao **arquivo de histórico** (\~/.bash\_history).
```bash
export HISTSIZE=0
```
### http\_proxy & https\_proxy
Os processos usarão o **proxy** declarado aqui para se conectar à internet através de **http ou https**.
```bash
export http_proxy="http://10.10.10.10:8080"
export https_proxy="http://10.10.10.10:8080"
```
### SSL\_CERT\_FILE & SSL\_CERT\_DIR
Os processos confiarão nos certificados indicados nestas **variáveis de ambiente**.
```bash
export SSL_CERT_FILE=/path/to/ca-bundle.pem
export SSL_CERT_DIR=/path/to/ca-certificates
```
### PS1
Altere a aparência do seu prompt.
[**Este é um exemplo**](https://gist.github.com/carlospolop/43f7cd50f3deea972439af3222b68808)
Root:
![](<../.gitbook/assets/image (87).png>)
Usuário regular:
![](<../.gitbook/assets/image (88).png>)
Um, dois e três trabalhos em segundo plano:
![](<../.gitbook/assets/image (89).png>)
Um trabalho em segundo plano, um parado e o último comando não terminou corretamente:
![](<../.gitbook/assets/image (90).png>)