
DEFCON 30 Mainframe-Bufferüberlauf-Workshop-Container

Die Skripte hier werden verwendet, um den virtuellen MVS-3.8j-Großrechner für den DEFCON-30-Workshop zu erstellen.
Vielen Dank, dass Sie sich den DEFCON-30-Workshop zu Mainframe-Buffer-Overflows ansehen.
Dieser Docker-Container enthält alles, was Sie benötigen, um MVS-Buffer-Overflows zu erlernen!
Um den Kurs zu starten, führen Sie den Container aus und gehen Sie zu http://localhost:8080
Um den Container auszuführen, verwenden Sie die folgenden Befehle. Stellen Sie sicher, dass Sie $(pwd)/docker durch einen Ordner für Ihr System ersetzen.
$(pwd) legt die Docker-Volumes in Ihrem aktuellen Arbeitsordner ab.
Verwenden Sie diesen Befehl, wenn Sie den Container in sich geschlossen ausführen möchten. ⚠️ Wenn Sie den Container entfernen und neu starten, verlieren Sie alle Änderungen, die Sie an der Mainframe-Umgebung vorgenommen haben.
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
Erläuterung der Ports:
Die erwähnten Python-Skripte finden Sie hier: https://github.com/mainframed/DC30_Workshop/tree/main/extra
Dieser legt mehr Ports offen und ermöglicht dauerhafte Volumes. Er bietet Zugriff auf die Hercules- und MVS-Konsolen, die Lochkartenleser/-schreiber usw.
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
Ports
Volumes
⚠️ Mit der aktuellen Konfiguration beträgt die maximale Anzahl gleichzeitiger Benutzer 24. Wenn sich ein 25. Benutzer anmeldet, erhalten Sie
die folgende Fehlermeldung IKT00203I ADDRESS SPACE CREATION FAILED.
cp extra/FTPD.MVP MVSCE/MVP/packagesMACLFTPF.jcl ein: cat jcl/MACLFTPF.jcl|ncat --send-only -w1 127.0.0.1 3505logon_screen.jcl ein: cat jcl/logon_screen.jcl|ncat --send-only -w1 127.0.0.1 3505terminal.jcl ein: cat terminal.jcl|ncat --send-only -w1 127.0.0.1 3505git clone https://github.com/jake-mainframe/ARBAUTHupload.py aus: ./upload.py motd.txtupload.jcl ein: GETSPLOIT/hello.c verwundbares C-Programm von https://github.com/jake-mainframe/GETSPLOITARBAUTH von https://github.com/jake-mainframe/ARBAUTHoverflows/LGBT400, overflows/LOC400, overflows/WTO400Dockerfile zum Erstellen des Docker-ImagesMACLFTPD.jcl: JCL-Datei zum Installieren von MACLIBS und FTPD-Server mit MVPlogon_screen.ans/jcl/logon_screen.jcl: ANSI/JCL zum Ersetzen des NETSOL-Anmeldebildschirmsupload.py erzeugt JCL zum Bereitstellen von Datasets, Kopieren von Dateien und Vorbereiten des Systemsjcl/terminals.jcl fügt 32 neue Terminalschnittstellen hinzu und aktualisiert die VTAM-Konfiguration| Port | Beschreibung |
|---|
| 2323 | TLS-verschlüsselter TN3270-Serverport |
| 3270 | Unverschlüsselter TN3270-Serverport |
| 3221 | Verschlüsselter FTPD-Server |
| 2121 | Unverschlüsselter FTP-Serverport |
| 8443 | Webbasierter 3270-Client, der automatisch zum Lab-Mainframe verbindet https://localhost:8443 |
| 8080 | Das Kurs-Wiki https://localhost:8080 |
| 8888 | Hercules-Webserver/MVS-Konsole. Benutzer/Passwort = docker |
| 3505 | Lochkartenleser. Konvertiert ASCII in EBCDIC. |
| 3506 | Lochkartenleser. Akzeptiert nur EBCDIC-Dateien. |
| 31337-32337 | Passiver Portbereich des FTP-Servers |
| Ordner | Beschreibung |
|---|
| /config | Enthält die Hercules- und web3270-Konfigurationsdateien |
| /printers | Enthält die Ausgabe der Drucker auf CLASS=A |
| /punchcards | Enthält die Ausgabe des Lochkartenschreibers auf CLASS=B |
| /logs | Enthält Hercules-Protokolle |
| /dasd | Enthält die MVS/CE-Datenträgerimages |
| /certs | Enthält die für die TLS-Verschlüsselung verwendeten Zertifikate |
| Benutzername | Passwort | Beschreibung |
|---|
| IBMUSER | SYS1 | Administrativer Benutzer mit Zugriff auf alles |
| MVSCE01 | CUL8TR | Administrativer Benutzer mit Zugriff auf alles |
| MVSCE02 | PASS4U | Allgemeiner Benutzer |
| DC0 | DC0 | DEFCON-Workshop-Benutzer |
| DC1 | DC1 | DEFCON-Workshop-Benutzer |
| DC2 | DC2 | DEFCON-Workshop-Benutzer |
| DC3 | DC3 | DEFCON-Workshop-Benutzer |
| DC4 | DC4 | DEFCON-Workshop-Benutzer |
| DC5 | DC5 | DEFCON-Workshop-Benutzer |
| DC6 | DC6 | DEFCON-Workshop-Benutzer |
| DC7 | DC7 | DEFCON-Workshop-Benutzer |
| DC8 | DC8 | DEFCON-Workshop-Benutzer |
| DC9 | DC9 | DEFCON-Workshop-Benutzer |
| DC10 | DC10 | DEFCON-Workshop-Benutzer |
| DC11 | DC11 | DEFCON-Workshop-Benutzer |
| DC12 | DC12 | DEFCON-Workshop-Benutzer |
| DC13 | DC13 | DEFCON-Workshop-Benutzer |
| DC14 | DC14 | DEFCON-Workshop-Benutzer |
| DC15 | DC15 | DEFCON-Workshop-Benutzer |
| DC16 | DC16 | DEFCON-Workshop-Benutzer |
| DC17 | DC17 | DEFCON-Workshop-Benutzer |
| DC18 | DC18 | DEFCON-Workshop-Benutzer |
| DC19 | DC19 | DEFCON-Workshop-Benutzer |
| DC20 | DC20 | DEFCON-Workshop-Benutzer |
| DC21 | DC21 | DEFCON-Workshop-Benutzer |
| DC22 | DC22 | DEFCON-Workshop-Benutzer |
| DC23 | DC23 | DEFCON-Workshop-Benutzer |
cat upload.jcl|ncat --send-only -w1 127.0.0.1 3505https://github.com/mvslovers/rdrprep auf Ihrem Linux-Rechnerhttps://github.com/mvslovers/jcc in diesen Ordnersudo 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 nach ./GETSPLOIT: cp hello.load GETSPLOIT./usersjcl.pyrdrprep und reichen Sie sie nacheinander ein:
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 überprüfen, um zu sehen, ob jeder Job abgeschlossen wurdeweb3270.ini nach Bedarfpython3 -u ./server.py --config /path/to/config --certs /path/to/certsusersjcl.py erstellt DC00.jcl bis DC23.jcl im Ordner ./usersautomation.py ein MVS-Automatisierungs-Python-Skript für die Bereitstellung in Dockermatrix.txt Folge dem weißen Kaninchenrexx/DEBRUIJN.rex: REXX-Skript zum Erzeugen von De-Bruijn-Musternrexx/decodei.rex: dekodiert MVS-Hexadezimalanweisungen in lesbare Formmotd.txt das CLIST, das bei der Anmeldung an TSO ausgeführt wirdmvs.sh das Container-Startskript zum Starten von web3270, hercules