diff --git a/pentesting-web/file-upload.md b/pentesting-web/file-upload.md index 5d6b30d56..d0259d428 100644 --- a/pentesting-web/file-upload.md +++ b/pentesting-web/file-upload.md @@ -31,11 +31,11 @@ 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\)_ +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 de verificações de Content-Type definindo o **valor** do **header Content-Type** para: _image/png_ , _text/plain , application/octet-stream_ -8. Bypass de verificação de número mágico adicionando no início do arquivo os **bytes de uma imagem real** \(confundir o comando _file_\). Ou introduza o shell dentro dos **metadados**: `exiftool -Comment="*?”` 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. +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. @@ -99,7 +99,7 @@ Observe que **outra opção** que você pode estar pensando para contornar essa * 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 **ImageTrick**](https://mukarramkhalid.com/imagemagick-imagetragick-exploit/) +* [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)\): @@ -149,13 +149,13 @@ payload = '' 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`, which specifies the path and name of the ZIP file to be created, and `payload`, which represents the malicious payload to be included in the ZIP file. +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 with the `w` mode, which means the file will be opened for writing. The `with` statement ensures that the file is properly closed after the block of code is executed. +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 `zip_file.writestr` method is used to add a file to the ZIP archive. In this case, the file is named `'../payload.php'`, which is a relative path that attempts to escape the current directory. The `payload` variable contains the content of the file, which is a PHP code that executes a system command based on the value of the `cmd` parameter passed through the URL. +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. -Finally, the `create_malicious_zip` function is called with the desired `file_path` and `payload` values to create the malicious ZIP file. +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 @@ -223,13 +223,11 @@ Apenas um passo restou: Faça o upload do arquivo ZIP e permita que a aplicaçã Podemos reutilizar o script anterior para criar um arquivo zip. ```python -#!/usr/bin/python - import zipfile -from cStringIO import StringIO +from io import BytesIO def create_zip(): -f = StringIO() +f = BytesIO() z = zipfile.ZipFile(f, 'w', zipfile.ZIP_DEFLATED) z.writestr('shell.php .pdf', '') z.close()