Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
DC30_Workshop — Conteneur de l'atelier DEFCON 30 sur le buffer overflow mainframe | Kitploit
Outils/GitHubGitHub/mainframed/dc30_workshop
Analyse des VulnérabilitésExploitationRétro-ingénierieApprentissage et ÉducationDéveloppement de Charges UtilesExploitation de BinairesLabs et Pratique
GitHubmainframed/dc30_workshop

DC30_Workshop

Conteneur de l'atelier DEFCON 30 sur le buffer overflow mainframe

Voir le dépôt
96121il y a 2 ansVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

Conteneur Mainframe pour l'atelier DEF CON 30

DEFCON MAINFRAME

Les scripts présents ici servent à construire le mainframe virtuel MVS 3.8j pour l'atelier DEF CON 30.

Merci de jeter un œil à l'atelier DEF CON 30 sur les dépassements de tampon (buffer overflows) sur mainframe.

Utiliser Docker

Ce conteneur Docker contient tout ce dont vous avez besoin pour apprendre à réaliser des dépassements de tampon MVS !

Pour démarrer la classe, lancez le conteneur et rendez-vous sur http://localhost:8080

Pour exécuter le conteneur, utilisez les commandes ci-dessous et assurez-vous de remplacer $(pwd)/docker par un dossier de votre système. $(pwd) place les volumes Docker dans votre dossier de travail courant.

Conteneur minimal

Utilisez cette commande si vous souhaitez simplement l'exécuter de manière autonome. ⚠️ Si vous supprimez puis relancez le conteneur, vous perdrez toutes les modifications apportées à l'environnement mainframe.

root@kitploit:~
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

Explication des ports :

  • 2323 : port serveur 3270
  • 8443 : client tn3270 basé sur le web, le secret est D3FC0N
  • 8888 : serveur web de la console Hercules. Utilisateur/mot de passe : defcon
  • 8080 : les instructions de l'atelier
  • 2121-2141 et 31337-31347 : plage de ports web pour le serveur FTP

Les scripts Python mentionnés se trouvent ici : https://github.com/mainframed/DC30_Workshop/tree/main/extra

Conteneur expert

Celui-ci expose plus de ports et vous permet de disposer de volumes persistants. Il donne accès aux consoles Hercules et MVS, aux lecteurs/perforateurs de cartes, etc.

root@kitploit:~
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

PortDescription
2323Port serveur TN3270 chiffré par TLS
3270Port serveur TN3270 non chiffré
3221Serveur FTPD chiffré
2121Port serveur FTP non chiffré
8443Client 3270 basé sur le web qui se connecte automatiquement au mainframe du lab https://localhost:8443
8080Le wiki de la classe https://localhost:8080
8888Serveur web Hercules / console MVS. Utilisateur/mot de passe = docker
3505Lecteur de cartes perforées. Convertit l'ASCII en EBCDIC.
3506Lecteur de cartes perforées. N'accepte que les fichiers EBCDIC.
31337-32337Plage de ports passifs du serveur FTP

Volumes

FolderDescription
/configContient les fichiers de configuration Hercules et web3270
/printersContient la sortie des imprimantes sur CLASS=A
/punchcardsContient la sortie de la perforatrice de cartes sur CLASS=B
/logsContient les journaux Hercules
/dasdContient les images disque MVS/CE
/certsContient les certificats utilisés pour le chiffrement TLS

Utilisateurs

UsernamePasswordDescription
IBMUSERSYS1Utilisateur administratif avec accès à tout
MVSCE01CUL8TRUtilisateur administratif avec accès à tout
MVSCE02PASS4UUtilisateur générique
DC0DC0Utilisateur de l'atelier DEFCON
DC1DC1Utilisateur de l'atelier DEFCON
DC2DC2Utilisateur de l'atelier DEFCON
DC3DC3Utilisateur de l'atelier DEFCON
DC4DC4Utilisateur de l'atelier DEFCON
DC5DC5Utilisateur de l'atelier DEFCON
DC6DC6Utilisateur de l'atelier DEFCON
DC7DC7Utilisateur de l'atelier DEFCON
DC8DC8Utilisateur de l'atelier DEFCON
DC9DC9Utilisateur de l'atelier DEFCON
DC10DC10Utilisateur de l'atelier DEFCON
DC11DC11Utilisateur de l'atelier DEFCON
DC12DC12Utilisateur de l'atelier DEFCON
DC13DC13Utilisateur de l'atelier DEFCON
DC14DC14Utilisateur de l'atelier DEFCON
DC15DC15Utilisateur de l'atelier DEFCON
DC16DC16Utilisateur de l'atelier DEFCON
DC17DC17Utilisateur de l'atelier DEFCON
DC18DC18Utilisateur de l'atelier DEFCON
DC19DC19Utilisateur de l'atelier DEFCON
DC20DC20Utilisateur de l'atelier DEFCON
DC21DC21Utilisateur de l'atelier DEFCON
DC22DC22Utilisateur de l'atelier DEFCON
DC23DC23Utilisateur de l'atelier DEFCON

⚠️ Avec la configuration actuelle, le nombre maximal d'utilisateurs simultanés est de 24. Si un 25e utilisateur se connecte, vous obtenez le message d'erreur suivant IKT00203I ADDRESS SPACE CREATION FAILED.

Construction à partir de zéro

  • Téléchargez la version la plus récente de MVSCE depuis https://github.com/MVS-sysgen/sysgen/releases
  • Copiez le serveur FTPD vulnérable vers MVP : cp extra/FTPD.MVP MVSCE/MVP/packages
  • Lancez MVSCE
  • Soumettez le job MACLFTPF.jcl : cat jcl/MACLFTPF.jcl|ncat --send-only -w1 127.0.0.1 3505
  • Soumettez le job logon_screen.jcl : cat jcl/logon_screen.jcl|ncat --send-only -w1 127.0.0.1 3505
  • Soumettez le job terminal.jcl : cat terminal.jcl|ncat --send-only -w1 127.0.0.1 3505
  • Clonez le dépôt ARBAUTH : git clone https://github.com/jake-mainframe/ARBAUTH
  • Exécutez le script Python upload.py : ./upload.py motd.txt
  • Soumettez le job upload.jcl : cat upload.jcl|ncat --send-only -w1 127.0.0.1 3505
  • Installez https://github.com/mvslovers/rdrprep sur votre machine Linux
  • Clonez https://github.com/mvslovers/jcc dans ce dossier
  • Installez wine et wine 32 : sudo apt install wine wine32
  • Compilez GETSPLOIT/hello.c :
    • wine ./jcc/jcc.exe -I./jcc/include -o ./GETSPLOIT/hello.c
    • ./jcc/prelink -s ./jcc/objs hello.load hello.obj
  • Copiez hello.load vers ./GETSPLOIT : cp hello.load GETSPLOIT
  • Exécutez usersjcl.py : ./usersjcl.py
  • Convertissez chaque job du dossier users avec rdrprep et soumettez-les un par un :
    • for i in *.jcl; do echo $i;rdrprep $i;cat reader.jcl|ncat --send-only -w1 172.17.0.3 3506; read; done
    • Vous pouvez vérifier la sortie de MVSCE printers/prt00e.txt pour voir chaque job terminé
  • Arrêtez MVS/CE
  • Réalisez un IPL de MVS/CE et profitez de votre environnement de laboratoire
  • Téléchargez ensuite web3270 depuis https://github.com/MVS-sysgen/web3270
  • Suivez les instructions pour préparer web3270
  • Modifiez web3270.ini selon vos besoins
  • Lancez web3270 avec python3 -u ./server.py --config /path/to/config --certs /path/to/certs

Fichiers

  • GETSPLOIT/hello.c programme C vulnérable provenant de https://github.com/jake-mainframe/GETSPLOIT
  • ARBAUTH depuis https://github.com/jake-mainframe/ARBAUTH
  • Fichiers EBCDIC overflows/LGBT400, overflows/LOC400, overflows/WTO400
  • Dockerfile utilisé pour construire l'image Docker
  • MACLFTPD.jcl : fichier JCL pour installer MACLIBS et le serveur FTPD via MVP
  • logon_screen.ans/jcl/logon_screen.jcl : ANSI/JCL pour remplacer l'écran de connexion NETSOL
  • upload.py génère du JCL utilisé pour provisionner les datasets, copier les fichiers et préparer le système
  • jcl/terminals.jcl ajoute 32 nouvelles interfaces terminal et met à jour la configuration VTAM
  • usersjcl.py crée DC00.jcl jusqu'à DC23.jcl dans le dossier ./users
  • automation.py un script Python d'automatisation MVS utilisé pour le déploiement vers Docker
  • matrix.txt Suivez le lapin blanc
  • rexx/DEBRUIJN.rex : script REXX pour générer un motif de Bruijn
  • rexx/decodei.rex : décode les instructions hexadécimales MVS en texte lisible
  • motd.txt le CLIST exécuté à la connexion à TSO
  • mvs.sh le script de démarrage du conteneur pour lancer web3270, hercules
Télécharger l’outil