
Контейнер воркшопа DEFCON 30 по переполнению буфера в мейнфреймах

Скрипты здесь используются для сборки виртуального мейнфрейма MVS 3.8j для воркшопа DEFCON 30.
Спасибо, что заглянули на воркшоп DEFCON 30 по переполнению буфера на мейнфрейме.
Этот docker-контейнер содержит всё необходимое, чтобы научиться делать переполнение буфера в MVS!
Чтобы начать занятие, запустите контейнер и перейдите на http://localhost:8080
Для запуска контейнера используйте команды ниже; обязательно замените $(pwd)/docker на папку вашей системы.
$(pwd) помещает тома docker в вашу текущую рабочую папку.
Используйте эту команду, если хотите запустить контейнер в автономном режиме. ⚠️ Если вы удалите и перезапустите контейнер, вы потеряете все изменения, внесённые в среду мейнфрейма.
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
Описание портов:
Упомянутые Python-скрипты можно найти здесь: https://github.com/mainframed/DC30_Workshop/tree/main/extra
Он открывает больше портов и позволяет использовать тома с постоянным хранением. Даёт доступ к консолям Hercules и MVS, устройствам чтения/записи перфокарт и т.д.
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
Порты
| Port | Description |
|---|---|
| 2323 | Порт сервера TN3270 с шифрованием TLS |
| 3270 | Порт сервера TN3270 без шифрования |
| 3221 | FTPD-сервер с шифрованием |
| 2121 | Порт FTP-сервера без шифрования |
| 8443 | Веб-клиент 3270, который автоматически подключается к лабораторному мейнфрейму https://localhost:8443 |
| 8080 | Вики занятия https://localhost:8080 |
| 8888 | Веб-сервер Hercules/консоль MVS. Пользователь/пароль = docker |
| 3505 | Устройство чтения перфокарт. Преобразует ASCII в EBCDIC. |
| 3506 | Устройство чтения перфокарт. Принимает только файлы EBCDIC. |
| 31337-32337 | Диапазон пассивных портов FTP-сервера |
Тома
| Folder | Description |
|---|---|
| /config | Содержит файлы конфигурации Hercules и web3270 |
| /printers | Содержит вывод принтеров на CLASS=A |
| /punchcards | Содержит вывод устройства записи перфокарт на CLASS=B |
| /logs | Содержит журналы Hercules |
| /dasd | Содержит образы дисков MVS/CE |
| /certs | Содержит сертификаты, используемые для TLS-шифрования |
| Имя пользователя | Пароль | Описание |
|---|---|---|
| IBMUSER | SYS1 | Административный пользователь с доступом ко всему |
| MVSCE01 | CUL8TR | Административный пользователь с доступом ко всему |
| MVSCE02 | PASS4U | Обычный пользователь |
| DC0 | DC0 | Пользователь воркшопа DEFCON |
| DC1 | DC1 | Пользователь воркшопа DEFCON |
| DC2 | DC2 | Пользователь воркшопа DEFCON |
| DC3 | DC3 | Пользователь воркшопа DEFCON |
| DC4 | DC4 | Пользователь воркшопа DEFCON |
| DC5 | DC5 | Пользователь воркшопа DEFCON |
| DC6 | DC6 | Пользователь воркшопа DEFCON |
| DC7 | DC7 | Пользователь воркшопа DEFCON |
| DC8 | DC8 | Пользователь воркшопа DEFCON |
| DC9 | DC9 | Пользователь воркшопа DEFCON |
| DC10 | DC10 | Пользователь воркшопа DEFCON |
| DC11 | DC11 | Пользователь воркшопа DEFCON |
| DC12 | DC12 | Пользователь воркшопа DEFCON |
| DC13 | DC13 | Пользователь воркшопа DEFCON |
| DC14 | DC14 | Пользователь воркшопа DEFCON |
| DC15 | DC15 | Пользователь воркшопа DEFCON |
| DC16 | DC16 | Пользователь воркшопа DEFCON |
| DC17 | DC17 | Пользователь воркшопа DEFCON |
| DC18 | DC18 | Пользователь воркшопа DEFCON |
| DC19 | DC19 | Пользователь воркшопа DEFCON |
| DC20 | DC20 | Пользователь воркшопа DEFCON |
| DC21 | DC21 | Пользователь воркшопа DEFCON |
| DC22 | DC22 | Пользователь воркшопа DEFCON |
| DC23 | DC23 | Пользователь воркшопа DEFCON |
⚠️ При текущей настройке максимальное количество одновременных пользователей — 24. Если войдёт 25-й пользователь, вы получите следующее сообщение об ошибке 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: cat upload.jcl|ncat --send-only -w1 127.0.0.1 3505https://github.com/mvslovers/rdrprep на вашей Linux-машинеhttps://github.com/mvslovers/jcc в эту папкуsudo 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 в ./GETSPLOIT: cp hello.load GETSPLOIT./usersjcl.pyrdrprep и отправляйте их по одному:
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, чтобы увидеть, что каждое задание завершеноweb3270.ini соответствующим образомpython3 -u ./server.py --config /path/to/config --certs /path/to/certsGETSPLOIT/hello.c — уязвимая программа на C из https://github.com/jake-mainframe/GETSPLOITARBAUTH — из https://github.com/jake-mainframe/ARBAUTHoverflows/LGBT400, overflows/LOC400, overflows/WTO400Dockerfile — используется для сборки docker-образаMACLFTPD.jcl: JCL-файл для установки MACLIBS и FTPD-сервера с помощью MVPlogon_screen.ans/jcl/logon_screen.jcl: ANSI/JCL для замены экрана входа NETSOLupload.py создаёт JCL, используемый для подготовки наборов данных, копирования файлов и приведения системы в готовностьjcl/terminals.jcl добавляет 32 новых терминальных интерфейса и обновляет конфигурацию VTAMusersjcl.py создаёт файлы DC00.jcl – DC23.jcl в папке ./usersautomation.py — python-скрипт автоматизации MVS, используемый для развёртывания в dockermatrix.txt — следуй за белым кроликомrexx/DEBRUIJN.rex: REXX-скрипт для генерации паттерна де Брёйнаrexx/decodei.rex: декодирует hex-инструкции MVS в удобочитаемый видmotd.txt — CLIST, запускаемый при входе в TSOmvs.sh — скрипт запуска контейнера для запуска web3270 и hercules