
Container del workshop di DEFCON 30 sul buffer overlow del mainframe

Gli script qui presenti sono usati per costruire il mainframe virtuale MVS 3.8j per il workshop DEFCON 30.
Grazie per aver dato un'occhiata al workshop sul buffer overflow del mainframe DEFCON 30.
Questo container Docker ha tutto ciò che ti serve per imparare a fare buffer overflow su MVS!
Per iniziare la lezione, esegui il container e vai su http://localhost:8080
Per eseguire il container usa i comandi qui sotto, assicurati di cambiare $(pwd)/docker con una cartella adatta al tuo sistema.
$(pwd) inserisce i volumi Docker nella tua cartella di lavoro corrente.
Usa questo comando se vuoi solo eseguirlo in modo autonomo. ⚠️ Se rimuovi e rilanci il container perderai tutte le modifiche apportate all'ambiente 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
Porte spiegate:
Gli script Python menzionati si trovano qui: https://github.com/mainframed/DC30_Workshop/tree/main/extra
Questo espone più porte e consente di avere volumi permanenti. Dà accesso alle console Hercules e MVS, ai lettori/scrittori di schede, ecc.
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
Porte
Volumi
⚠️ Con la configurazione attuale il numero massimo di utenti contemporanei è 24. Se un 25° utente accede, si ottiene
il seguente messaggio di errore 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 programma C vulnerabile da https://github.com/jake-mainframe/GETSPLOITARBAUTH da https://github.com/jake-mainframe/ARBAUTHoverflows/LGBT400, overflows/LOC400, overflows/WTO400Dockerfile usato per creare l'immagine dockerMACLFTPD.jcl: file JCL per installare MACLIBS e il server FTPD usando MVPlogon_screen.ans/jcl/logon_screen.jcl: ANSI/JCL per sostituire la schermata di accesso NETSOLupload.py genera il JCL usato per creare i dataset, copiare i file e preparare il sistemajcl/terminals.jcl aggiunge 32 nuove interfacce terminale e aggiorna la configurazione VTAM| Port | Description |
|---|
| 2323 | Porta del server TN3270 cifrata TLS |
| 3270 | Porta del server TN3270 non cifrata |
| 3221 | Server FTPD cifrato |
| 2121 | Porta del server FTP non cifrata |
| 8443 | Client 3270 basato sul web che si connette automaticamente al mainframe del laboratorio https://localhost:8443 |
| 8080 | Il Wiki del corso https://localhost:8080 |
| 8888 | Server Web Hercules/Console MVS. Utente/password = docker |
| 3505 | Lettore di schede perforate. Converte ASCII in EBCDIC. |
| 3506 | Lettore di schede perforate. Accetta solo file EBCDIC. |
| 31337-32337 | Intervallo porte passive del server FTP |
| Folder | Description |
|---|
| /config | Contiene i file di configurazione di Hercules e web3270 |
| /printers | Contiene l'output delle stampanti su CLASS=A |
| /punchcards | Contiene l'output dello scrittore di schede su CLASS=B |
| /logs | Contiene i log di Hercules |
| /dasd | Contiene le immagini disco MVS/CE |
| /certs | Contiene i certificati usati per la cifratura TLS |
| Username | Password | Description |
|---|
| IBMUSER | SYS1 | Utente amministrativo con accesso a tutto |
| MVSCE01 | CUL8TR | Utente amministrativo con accesso a tutto |
| MVSCE02 | PASS4U | Utente generico |
| DC0 | DC0 | Utente del workshop DEFCON |
| DC1 | DC1 | Utente del workshop DEFCON |
| DC2 | DC2 | Utente del workshop DEFCON |
| DC3 | DC3 | Utente del workshop DEFCON |
| DC4 | DC4 | Utente del workshop DEFCON |
| DC5 | DC5 | Utente del workshop DEFCON |
| DC6 | DC6 | Utente del workshop DEFCON |
| DC7 | DC7 | Utente del workshop DEFCON |
| DC8 | DC8 | Utente del workshop DEFCON |
| DC9 | DC9 | Utente del workshop DEFCON |
| DC10 | DC10 | Utente del workshop DEFCON |
| DC11 | DC11 | Utente del workshop DEFCON |
| DC12 | DC12 | Utente del workshop DEFCON |
| DC13 | DC13 | Utente del workshop DEFCON |
| DC14 | DC14 | Utente del workshop DEFCON |
| DC15 | DC15 | Utente del workshop DEFCON |
| DC16 | DC16 | Utente del workshop DEFCON |
| DC17 | DC17 | Utente del workshop DEFCON |
| DC18 | DC18 | Utente del workshop DEFCON |
| DC19 | DC19 | Utente del workshop DEFCON |
| DC20 | DC20 | Utente del workshop DEFCON |
| DC21 | DC21 | Utente del workshop DEFCON |
| DC22 | DC22 | Utente del workshop DEFCON |
| DC23 | DC23 | Utente del workshop DEFCON |
cat upload.jcl|ncat --send-only -w1 127.0.0.1 3505https://github.com/mvslovers/rdrprep sul tuo sistema Linuxhttps://github.com/mvslovers/jcc in questa cartellasudo 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 in ./GETSPLOIT: cp hello.load GETSPLOIT./usersjcl.pyrdrprep e inviali 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 per vedere ogni job completatoweb3270.ini come appropriatopython3 -u ./server.py --config /path/to/config --certs /path/to/certsusersjcl.pyDC00.jclDC23.jcl./usersautomation.py uno script Python di automazione MVS usato per il deployment su dockermatrix.txt Segui il coniglio biancorexx/DEBRUIJN.rex: script REXX per generare pattern di de Bruijnrexx/decodei.rex: decodifica le istruzioni hex MVS in formato leggibilemotd.txt la CLIST eseguita all'accesso a TSOmvs.sh lo script di avvio del container per lanciare web3270, hercules