
kali-linux-docker
Cette image Docker Kali Linux fournit une installation de base minimale de la dernière version de la distribution Rolling Kali Linux. Aucun outil n'est ajouté à cette image, vous devrez donc les installer vous-même. Pour plus de détails sur les métapaquets Kali Linux, consultez https://www.kali.org/news/kali-linux-metapackages/
Docker Hub : https://hub.docker.com/r/nu11secur1ty/kali-linux-docker
En raison du passage de --squash au démon Docker, si les fonctionnalités expérimentales
ne sont pas activées dans votre démon, le script build.sh échouera.
Sur Kali, cela se fait via /etc/docker/daemon.json avec le contenu suivant :
{
"experimental": true
}
Remarque : Ceci n'est une exigence que pour nous chez Offensive Security afin de réduire la taille de l'image lorsque nous poussons une nouvelle image sur Docker Hub.
Si vous construisez pour un usage personnel, vous pouvez supprimer l'option --squash dans build.sh
Tue May 21 13:59:06 EDT 2019
Évidemment, pour que cela fonctionne, vous devez installer Docker. Pour Docker sur OSX, vous pouvez utiliser brew, tandis que pour la plupart des autres distributions, vous pouvez l'installer avec votre gestionnaire de paquets local. Une fois installé et configuré, il suffit de récupérer notre image depuis le dépôt Docker :
nu11secur1ty:~ # docker pull nu11secur1ty/kali-linux-docker
nu11secur1ty:~ # docker run -t -i nu11secur1ty/kali-linux-docker /bin/bash
root@7e2a35940eff:/# apt update
root@7e2a35940eff:/# apt dist-update
root@7e2a35940eff:/# apt update && apt install metasploit-framework
root@7e2a35940eff:/# apt update && apt install git
root@7e2a35940eff:/# apt update && apt install vim
root@7e2a35940eff:/# service postgresql start
root@7e2a35940eff:/# ss -ant
root@7e2a35940eff:/# msfdb init
root@7e2a35940eff:/# msfconsole
git clone https://github.com/nu11secur1ty/sqliv2.git
cd sqliv2
. utilisation lien : sqliv2
. Obtenir :
git clone https://github.com/nu11secur1ty/nu11secur1ty.git
lien : nu11secur1ty
Si vous souhaitez construire vos propres images Kali plutôt que d'utiliser nos images préfabriquées, nous avons facilité la tâche avec le script suivant hébergé sur Kali Linux Docker sur Github. Ces images sont mieux construites sur un système Linux ou tout autre OS pouvant utiliser debootstrap.
#!/bin/bash
# Install dependencies (debootstrap)
sudo apt-get install debootstrap
# Fetch the latest Kali debootstrap script from git
curl "https://gitlab.com/kalilinux/packages/debootstrap.git;a=blob_plain;f=scripts/kali;hb=HEAD" > kali-debootstrap &&\
sudo debootstrap kali ./kali-root http://http.kali.org/kali ./kali-debootstrap &&\
# Import the Kali image into Docker
sudo tar -C kali-root -c . | sudo docker import - kalilinux/kali &&\
sudo rm -rf ./kali-root &&\
# Test the Kali Docker Image
docker run -t -i kalilinux/kali cat /etc/debian_version &&\
echo "Build OK" || echo "Build failed!"


Il existe une commande docker exec qui peut être utilisée pour se connecter à un conteneur déjà en cours d'exécution.
docker exec -it <nom du conteneur> /bin/bash pour obtenir un shell bash dans le conteneurdocker exec -it <nom du conteneur> <commande> pour exécuter n'importe quelle commande que vous spécifiez dans le conteneur.La manière appropriée d'exécuter une commande dans un conteneur est : docker-compose run <nom du conteneur> <commande>. Par exemple, pour obtenir un shell dans votre conteneur web, vous pouvez exécuter docker-compose run web /bin/bash
Pour exécuter une série de commandes, vous devez les encapsuler dans une seule commande en utilisant un shell. Par exemple : docker-compose run <nom dans yml> sh -c '<commande 1> && <commande 2> && <commande 3>'
Dans certains cas, vous pouvez vouloir exécuter un conteneur qui n'est pas défini par un fichier docker-compose.yml, par exemple pour tester une nouvelle configuration de conteneur. Utilisez docker run pour démarrer un nouveau conteneur avec une image donnée : docker run -it <nom de l'image> <commande>
La commande docker run accepte des options en ligne de commande pour spécifier les montages de volumes, les variables d'environnement, le répertoire de travail, etc.
Obtenir un shell dans un conteneur de construction pour exécuter n'importe quelle opération est l'approche la plus simple. Vous voulez simplement accéder au conteneur cli que nous avons défini dans le fichier compose. La commande docker-compose -f build.yml run cli démarrera une instance de l'image phase2/devtools-build et exécutera un shell bash pour vous. À partir de là, vous êtes libre d'utiliser drush, grunt ou tout ce que votre petit cœur désire.
Un autre concept dans le monde Docker est de démarrer un conteneur pour exécuter une seule commande et permettre au conteneur de s'arrêter lorsque la commande est terminée. C'est idéal si vous exécutez des commandes rarement, ou si vous ne voulez pas avoir un autre conteneur constamment en cours d'exécution. Exécuter vos commandes sur des conteneurs de cette manière est également bien adapté aux commandes qui ne génèrent pas de fichiers sur le système de fichiers ou, si elles le font, elles écrivent ces fichiers sur des volumes montés dans le conteneur.
Le conteneur drush défini dans le fichier exemple build.yml est un conteneur conçu spécifiquement pour exécuter drush dans un seul répertoire de travail en prenant uniquement les commandes comme arguments. Cette approche nous permet de fournir un mécanisme rapide et facile pour exécuter n'importe quelle commande drush, comme sqlc, cache-rebuild, et d'autres, dans votre site Drupal rapidement et facilement.
Il existe également d'autres exemples d'un conteneur de commande grunt similaire à drush et un conteneur de commande encore plus spécifique autour de l'exécution d'une seule commande, drush make pour construire le site à partir d'un fichier make/dépendance.
Le dossier webapp sur l'hôte sera monté dans la racine Apache du conteneur
docker system prune
docker system prune -a
Utilisez la commande docker images avec l'option -a pour localiser l'ID des images que vous souhaitez supprimer. Cela vous montrera chaque image, y compris les couches d'image intermédiaires. Lorsque vous avez localisé les images à supprimer, vous pouvez passer leur ID ou tag à docker rmi :
docker images -a
docker rmi Image Image
Les images Docker sont composées de plusieurs couches. Les images dangling sont des couches qui n'ont aucune relation avec des images taguées. Elles ne servent plus à rien et consomment de l'espace disque. Elles peuvent être localisées en ajoutant le flag de filtre, -f avec une valeur de dangling=true à la commande docker images. Lorsque vous êtes sûr de vouloir les supprimer, vous pouvez utiliser la commande docker images purge :
REMARQUE
Si vous construisez une image sans la taguer, l'image apparaîtra dans la liste des images dangling car elle n'a aucune association avec une image taguée. Vous pouvez éviter cette situation en fournissant un tag lors de la construction, et vous pouvez taguer rétroactivement une image avec la commande docker tag.
docker images -f dangling=true
docker images purge
Vous pouvez trouver toutes les images correspondant à un motif en utilisant une combinaison de docker images et grep. Une fois satisfait, vous pouvez les supprimer en utilisant awk pour passer les IDs à docker rmi. Notez que ces utilitaires ne sont pas fournis par Docker et ne sont pas nécessairement disponibles sur tous les systèmes :
docker images -a | grep "pattern"
docker images -a | grep "pattern" | awk '{print $3}' | xargs docker rmi
Toutes les images Docker sur un système peuvent être listées en ajoutant -a à la commande docker images. Une fois sûr de vouloir toutes les supprimer, vous pouvez ajouter l'option -q pour passer l'ID de l'image à docker rmi :
docker images -a
docker rmi $(docker images -a -q)
Si vous savez lors de la création d'un conteneur que vous ne voudrez pas le conserver une fois terminé, vous pouvez exécuter docker run --rm pour le supprimer automatiquement lorsqu'il se termine.
docker run --rm image_name
Vous pouvez localiser les conteneurs en utilisant docker ps -a et les filtrer par leur statut : created, restarting, running, paused ou exited. Pour examiner la liste des conteneurs arrêtés, utilisez l'option -f pour filtrer sur le statut. Lorsque vous avez vérifié que vous voulez supprimer ces conteneurs, utilisez -q pour passer les IDs à la commande docker rm.
docker ps -a -f status=exited
docker rm $(docker ps -a -f status=exited -q)
Les filtres Docker peuvent être combinés en répétant le flag de filtre avec une valeur supplémentaire. Cela donne une liste de conteneurs qui répondent à l'une ou l'autre condition. Par exemple, si vous voulez supprimer tous les conteneurs marqués comme Created (un état qui peut résulter de l'exécution d'un conteneur avec une commande invalide) ou Exited, vous pouvez utiliser deux filtres :
docker ps -a -f status=exited -f status=created
docker rm $(docker ps -a -f status=exited -f status=created -q)
Vous pouvez trouver tous les conteneurs correspondant à un motif en utilisant une combinaison de docker ps et grep. Lorsque vous êtes satisfait d'avoir la liste à supprimer, vous pouvez utiliser awk et xargs pour fournir l'ID à docker rmi. Notez que ces utilitaires ne sont pas fournis par Docker et ne sont pas nécessairement disponibles sur tous les systèmes :
docker ps -a | grep "pattern”
docker ps -a | grep "pattern" | awk '{print $3}' | xargs docker rmi
Vous pouvez examiner les conteneurs sur votre système avec docker ps. L'ajout de l'option -a affichera tous les conteneurs. Lorsque vous êtes sûr de vouloir les supprimer, vous pouvez ajouter l'option -q pour fournir les IDs aux commandes docker stop et docker rm :
docker ps -a
docker stop $(docker ps -a -q)
docker rm $(docker ps -a -q)
Supprimer un ou plusieurs volumes spécifiques - Docker 1.9 et ultérieur
Utilisez la commande docker volume ls pour localiser le ou les noms de volumes que vous souhaitez supprimer. Ensuite, vous pouvez supprimer un ou plusieurs volumes avec la commande docker volume rm :
docker volume ls
docker volume rm volume_name volume_name
Étant donné que le but des volumes est d'exister indépendamment des conteneurs, lorsqu'un conteneur est supprimé, un volume n'est pas automatiquement supprimé en même temps. Lorsqu'un volume existe et n'est plus connecté à aucun conteneur, on l'appelle un volume dangling. Pour les localiser et confirmer que vous voulez les supprimer, vous pouvez utiliser la commande docker volume ls avec un filtre pour limiter les résultats aux volumes dangling. Lorsque vous êtes satisfait de la liste, vous pouvez les supprimer tous avec docker volume prune :
docker volume ls -f dangling=true
docker volume prune
Si vous avez créé un volume sans nom, il peut être supprimé en même temps que le conteneur avec l'option -v. Notez que cela ne fonctionne qu'avec les volumes sans nom. Lorsque le conteneur est correctement supprimé, son ID est affiché. Notez qu'aucune référence n'est faite à la suppression du volume. S'il est sans nom, il est silencieusement supprimé du système. S'il est nommé, il reste silencieusement présent.
docker rm -v container_name
Ce guide couvre certaines des commandes courantes utilisées pour supprimer des images, des conteneurs et des volumes avec Docker. Il existe de nombreuses autres combinaisons et options qui peuvent être utilisées avec chacune. Pour un guide complet de ce qui est disponible, consultez la documentation Docker pour docker system prune, docker rmi, docker rm et docker volume rm. Si vous avez des tâches de nettoyage courantes que vous souhaitez voir dans le guide, n'hésitez pas à demander ou à faire des suggestions dans les commentaires.

