
DEFCON 30 Contenedor del taller de desbordamiento de búfer de mainframe

Los scripts que se incluyen aquí se utilizan para construir el mainframe virtual MVS 3.8j para el taller de DEFCON 30.
Gracias por echar un vistazo al taller de desbordamiento de búfer en mainframe de DEFCON 30.
Este contenedor de Docker tiene todo lo que necesitas para aprender a realizar desbordamientos de búfer en MVS.
Para comenzar la clase, ejecuta el contenedor y ve a http://localhost:8080
Para ejecutar el contenedor usa los comandos siguientes; asegúrate de cambiar $(pwd)/docker por una carpeta de tu sistema.
$(pwd) coloca los volúmenes de Docker en tu carpeta de trabajo actual.
Usa este comando si solo quieres ejecutarlo de forma autocontenida. ⚠️ Si eliminas y vuelves a lanzar el contenedor, perderás todos los cambios que hayas realizado en el entorno del mainframe.
docker run -d \
--name=defcon30 \
-e HUSER=defcon \
-e HPASS=defcon \
-p 2323:3223 \
-p 8888:8888 \
-p 2121-2141:2121-2141 \
-p 8443:8443 \
-p 8080:8080 \
-p 31337-31347:31337-31347 \
-v ~/dumps:/printers \
--restart unless-stopped \
mainframed767/defcon30:latest
Puertos explicados:
Este expone más puertos y permite tener volúmenes persistentes. Da acceso a las consolas de Hercules y MVS, a las lectoras/grabadoras de tarjetas, etc.
docker run -d \
--name=defcon30 \
-e HUSER=docker \
-e HPASS=docker \
-p 3221:3221 \
-p 2323:3223 \
-p 3270:3270 \
-p 3505:3505 \
-p 3506:3506 \
-p 8888:8888 \
-p 2121:2121 \
-p 8443:8443 \
-p 8080:8080 \
-p 31337-31347:31337-31347 \
-v $(pwd)/docker/config:/config \
-v $(pwd)/docker/printers:/printers \
-v $(pwd)/docker/punchcards:/punchcards \
-v $(pwd)/docker/logs:/logs \
-v $(pwd)/docker/dasd:/dasd \
-v $(pwd)/docker/certs:/certs \
--restart unless-stopped \
mainframed767/defcon30:latest
Puertos
Volúmenes
⚠️ Con la configuración actual, el número máximo de usuarios concurrentes es 24. Si un vigésimo quinto usuario inicia sesión, obtendrás el siguiente mensaje de error IKT00203I ADDRESS SPACE CREATION FAILED.
cp extra/FTPD.MVP MVSCE/MVP/packagesMACLFTPF.jcl: cat jcl/MACLFTPF.jcl|ncat --send-only -w1 127.0.0.1 3505logon_screen.jcl: cat jcl/logon_screen.jcl|ncat --send-only -w1 127.0.0.1 3505terminal.jcl: cat terminal.jcl|ncat --send-only -w1 127.0.0.1 3505git clone https://github.com/jake-mainframe/ARBAUTHupload.py: ./upload.py motd.txtupload.jcl: GETSPLOIT/hello.c: programa en C vulnerable de https://github.com/jake-mainframe/GETSPLOITARBAUTH de https://github.com/jake-mainframe/ARBAUTHoverflows/LGBT400, overflows/LOC400, overflows/WTO400Dockerfile utilizado para construir la imagen de DockerMACLFTPD.jcl: archivo JCL para instalar MACLIBS y el servidor FTPD mediante MVPlogon_screen.ans/jcl/logon_screen.jcl: ANSI/JCL para reemplazar la pantalla de inicio de sesión de NETSOLupload.py genera JCL utilizado para aprovisionar conjuntos de datos, copiar archivos y dejar el sistema listojcl/terminals.jcl añade 32 nuevas interfaces de terminal y actualiza la configuración de VTAM| Puerto | Descripción |
|---|
| 2323 | Puerto del servidor TN3270 cifrado con TLS |
| 3270 | Puerto del servidor TN3270 sin cifrar |
| 3221 | Servidor FTPD cifrado |
| 2121 | Puerto del servidor FTP sin cifrar |
| 8443 | Cliente 3270 basado en web que se conecta automáticamente al mainframe del laboratorio https://localhost:8443 |
| 8080 | La wiki de la clase https://localhost:8080 |
| 8888 | Servidor web / consola MVS de Hercules. Usuario/contraseña = docker |
| 3505 | Lectora de tarjetas perforadas. Convierte ASCII a EBCDIC. |
| 3506 | Lectora de tarjetas perforadas. Solo acepta archivos EBCDIC. |
| 31337-32337 | Rango de puertos pasivos del servidor FTP |
| Carpeta | Descripción |
|---|
| /config | Contiene los archivos de configuración de Hercules y web3270 |
| /printers | Contiene la salida de las impresoras en CLASS=A |
| /punchcards | Contiene la salida de la perforadora de tarjetas en CLASS=B |
| /logs | Contiene los registros de Hercules |
| /dasd | Contiene las imágenes de disco MVS/CE |
| /certs | Contiene los certificados utilizados para el cifrado TLS |
| Usuario | Contraseña | Descripción |
|---|
| IBMUSER | SYS1 | Usuario administrador con acceso a todo |
| MVSCE01 | CUL8TR | Usuario administrador con acceso a todo |
| MVSCE02 | PASS4U | Usuario genérico |
| DC0 | DC0 | Usuario del taller de DEFCON |
| DC1 | DC1 | Usuario del taller de DEFCON |
| DC2 | DC2 | Usuario del taller de DEFCON |
| DC3 | DC3 | Usuario del taller de DEFCON |
| DC4 | DC4 | Usuario del taller de DEFCON |
| DC5 | DC5 | Usuario del taller de DEFCON |
| DC6 | DC6 | Usuario del taller de DEFCON |
| DC7 | DC7 | Usuario del taller de DEFCON |
| DC8 | DC8 | Usuario del taller de DEFCON |
| DC9 | DC9 | Usuario del taller de DEFCON |
| DC10 | DC10 | Usuario del taller de DEFCON |
| DC11 | DC11 | Usuario del taller de DEFCON |
| DC12 | DC12 | Usuario del taller de DEFCON |
| DC13 | DC13 | Usuario del taller de DEFCON |
| DC14 | DC14 | Usuario del taller de DEFCON |
| DC15 | DC15 | Usuario del taller de DEFCON |
| DC16 | DC16 | Usuario del taller de DEFCON |
| DC17 | DC17 | Usuario del taller de DEFCON |
| DC18 | DC18 | Usuario del taller de DEFCON |
| DC19 | DC19 | Usuario del taller de DEFCON |
| DC20 | DC20 | Usuario del taller de DEFCON |
| DC21 | DC21 | Usuario del taller de DEFCON |
| DC22 | DC22 | Usuario del taller de DEFCON |
| DC23 | DC23 | Usuario del taller de DEFCON |
cat upload.jcl|ncat --send-only -w1 127.0.0.1 3505https://github.com/mvslovers/rdrprep en tu equipo Linuxhttps://github.com/mvslovers/jcc en esta carpetasudo apt install wine wine32GETSPLOIT/hello.c:
wine ./jcc/jcc.exe -I./jcc/include -o ./GETSPLOIT/hello.c./jcc/prelink -s ./jcc/objs hello.load hello.objhello.load a ./GETSPLOIT: cp hello.load GETSPLOIT./usersjcl.pyrdrprep y envíalos uno a uno:
for i in *.jcl; do echo $i;rdrprep $i;cat reader.jcl|ncat --send-only -w1 172.17.0.3 3506; read; doneprinters/prt00e.txt para ver si cada trabajo se completóweb3270.ini según correspondapython3 -u ./server.py --config /path/to/config --certs /path/to/certsusersjcl.py crea DC00.jcl a DC23.jcl en la carpeta ./usersautomation.py: script de automatización de MVS en Python utilizado para el despliegue en Dockermatrix.txt: Sigue al conejo blancorexx/DEBRUIJN.rex: script REXX para generar un patrón de Bruijnrexx/decodei.rex: decodifica instrucciones hexadecimales de MVS a un formato legible para humanosmotd.txt: el CLIST que se ejecuta al iniciar sesión en TSOmvs.sh: script de ejecución del contenedor para lanzar web3270 y Hercules