{"id":15266393,"url":"https://github.com/qtc-de/container-arsenal","last_synced_at":"2025-04-12T04:44:10.567Z","repository":{"id":35405327,"uuid":"215465770","full_name":"qtc-de/container-arsenal","owner":"qtc-de","description":"Collection of docker containers for security assessments and CTFs. Commandline tool for starting, stopping and managing them.","archived":false,"fork":false,"pushed_at":"2022-04-29T05:59:41.000Z","size":1026,"stargazers_count":24,"open_issues_count":0,"forks_count":5,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-26T00:12:53.844Z","etag":null,"topics":["ajp","ajp-proxy","car","container-arsenal","ctf","docker","docker-containers","jserv","neo4j","samba","samba-share","ssh"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/qtc-de.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-10-16T05:39:38.000Z","updated_at":"2024-05-14T13:20:38.000Z","dependencies_parsed_at":"2022-07-27T20:09:57.735Z","dependency_job_id":null,"html_url":"https://github.com/qtc-de/container-arsenal","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/qtc-de%2Fcontainer-arsenal","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/qtc-de%2Fcontainer-arsenal/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/qtc-de%2Fcontainer-arsenal/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/qtc-de%2Fcontainer-arsenal/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/qtc-de","download_url":"https://codeload.github.com/qtc-de/container-arsenal/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248519468,"owners_count":21117757,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ajp","ajp-proxy","car","container-arsenal","ctf","docker","docker-containers","jserv","neo4j","samba","samba-share","ssh"],"created_at":"2024-09-30T05:08:56.259Z","updated_at":"2025-04-12T04:44:10.528Z","avatar_url":"https://github.com/qtc-de.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"### Container Arsenal\n\n----\n\n*container-arsenal* (*car*) is a collection of *docker containers* that have been proven to be useful during\nsecurity assessments and *CTFs*. Each container is represented by a *docker-compose* file and its corresponding\nresources. Additionally, *container-arsenal* ships a *python* script that can be used to manage the containers.\n\n![](https://github.com/qtc-de/container-arsenal/workflows/master%20Python%20CI/badge.svg?branch=master)\n![](https://github.com/qtc-de/container-arsenal/workflows/develop%20Python%20CI/badge.svg?branch=develop)\n[![](https://img.shields.io/badge/version-2.2.0-blue)](https://github.com/qtc-de/container-arsenal/releases)\n[![](https://img.shields.io/badge/build%20system-pip-blue)](https://pypi.org/project/pip/)\n![](https://img.shields.io/badge/python-9%2b-blue)\n[![](https://img.shields.io/badge/license-GPL%20v3.0-blue)](https://github.com/qtc-de/container-arsenal/blob/master/LICENSE)\n\n\n\nhttps://user-images.githubusercontent.com/49147108/163109100-3da4697b-05e2-43a5-a7f0-c0005e64c326.mp4\n\n\n\n### Installation\n\n-----\n\n*container-arsenal* can be build and installed using *pip*. The following command installs *container-arsenal*\nfor your current user profile:\n\n```console\n[qtc@devbox ~]$ pip3 install --user container-arsenal\n```\n\nYou can also build *container-arsenal* from source by running the following commands:\n\n```console\n[qtc@devbox ~]$ git clone https://github.com/qtc-de/container-arsenal\n[qtc@devbox ~]$ cd container-arsenal\n[qtc@devbox ~]$ python3 setup.py sdist\n[qtc@devbox ~]$ pip3 install dist/*\n```\n\n*container-arsenal* ships an [autocompletion script](car/resources/bash_completion.d/car) for bash. With the\n[completion-helpers](https://github.com/qtc-de/completion-helpers) project installed, the completion script is\nsetup automatically during the installation of *container-arsenal*. You can also install the *completion-helpers*\nproject later on and copy the [completion script](car/resources/bash_completion.d/car) to your `~/.bash_completion.d`\nfolder manually.\n\n\n### Available Containers\n\n----\n\nThe following list provides an overview on the currently available containers. Notice that each container folder contains a\ndedicated ``README.md`` where you can find more specific information about the corresponding container. Just click on the\nlinks listed below to get more details:\n\n**File Transfer Containers**\n\n* [ftp](car/resources/containers/ftp) - *vsftpd* server configured for authenticated and anonymous access\n* [tftp](car/resources/containers/tftp) - A simple *tftp* server for *UDP* based file exchange\n* [nginx](car/resources/containers/nginx) - *nginx* server with *WebDAV* enabled. Supports *HTTP* and *HTTPS*\n* [samba](car/resources/containers/samba) - *Samba* share configured for authenticated and anonymous access\n* [ssh](car/resources/containers/ssh) - *SSH* server that allows *remote port-forwarding* and *scp*\n\n**Proxy Containers**\n\n* [ajp](car/resources/containers/ajp) - *AJP* proxy server to access *JSERV* ports via *HTTP*\n* [h2b](car/resources/containers/h2b) - A *http-to-binary* proxy that allows accessing *non-HTTP* services using *HTTP* focused tools\n\n**Utils Containers**\n\n* [mysql](car/resources/containers/mysql) - Plain *MySQL* server with randomly generated password protected user accounts\n* [neo4j](car/resources/containers/neo4j) - Plain *Neo4j* database. Useful for tools like *BloodHound*\n* [php](car/resources/containers/php) - *nginx* server with *PHP* enabled. Can be used to quickly test some *PHP* stuff\n\n\n### Getting and Updating Containers\n\n----\n\n*container-arsenal* provides a prebuild version for all available containers within the [repository packages](https://github.com/qtc-de?tab=packages\u0026repo_name=container-arsenal)\nYou can pull these images using the following commands:\n\n```console\n[qtc@devbox ~]$ car pull ssh          # Just pulls the ssh container\n[qtc@devbox ~]$ car pull all          # Pulls all containers\n```\n\nInstead of pulling prebuild containers, you can also build them locally by using the *build* action:\n\n```console\n[qtc@devbox ~]$ car build ssh         # Just builds the ssh container\n[qtc@devbox ~]$ car build all         # Builds all containers\n```\n\nBuilding the containers locally has the advantage that the corresponding software is installed from scratch\nand associated files and resources are not publicly available, as it is the case for the prebuild containers.\nMoreover, building locally installs the most recent version of the corresponding software, while prebuild\ncontainers use the most recent software version that was available on their build date. Therefore, using\nlocally build containers may be preferred in security critical contexts.\n\n\n### Configuration\n\n----\n\nAfter installing *container-arsenal*, a configuration file will be placed at ``~/.config/car/car.toml``.\nThis configuration file contains some global variables and default mappings for the provided containers.\nThe first few lines look like this:\n\n```toml\n[containers]\n  sudo_required = true\n  volume_base_path = \"~/arsenal\"\n```\n\nThe `[containers]` section contains parameters that apply to all available containers. The `sudo_required`\nsetting determines whether *docker commands* have to be prefixed with `sudo`, whereas the `volume_base_path`\nspecifies the default local directory where *docker volumes* will be stored.\n\nApart from global configuration options, the ``car.toml`` file also contains container specific options.\nThe following snipped shows the configuration for the *samba* container:\n\n```toml\n[containers.samba]\nsamba_folder = \"\u003c@:BASE:@\u003e/samba\"\npublic_folder = \"\u003c@:BASE:@\u003e/samba/public\"\nprivate_folder = \"\u003c@:BASE:@\u003e/samba/private\"\nsmb_port = \"445\"\n```\n\nThis configuration shows, that the *samba* container runs with two volumes that will be mapped to\n``~/arsenal/samba/public`` and ``~/arsenal/samba/private``. The top level folder ``~/arsenal/samba``\nis also included in the configuration file, but will not be mapped into the container. \n\n\n### Acknowledgements\n\n-----\n\nWhen creating the containers for this project I searched many different repositories for useful *Dockerfiles*. Certain parts of the *Dockerfiles*\nprovided inside this repository are probably very similar to others that can be found on *GitHub*. I did not wrote down all the references,\nbut if you think that your name should be listed here, feel free to contact me :)\n\nFor all others: thank you for working on open source projects \u003c3\n\n*Copyright 2022, Tobias Neitzel and the container-arsenal contributors.*\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fqtc-de%2Fcontainer-arsenal","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fqtc-de%2Fcontainer-arsenal","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fqtc-de%2Fcontainer-arsenal/lists"}