kali-linux-docker
Questa immagine Docker di Kali Linux fornisce un'installazione di base minima dell'ultima versione della distribuzione rolling di Kali Linux. Non ci sono strumenti aggiunti a questa immagine, quindi dovrai installarli tu stesso. Per i dettagli sui metapacchetti di Kali Linux, consulta https://www.kali.org/news/kali-linux-metapackages/
Docker Hub: https://hub.docker.com/r/nu11secur1ty/kali-linux-docker
Poiché --squash viene passato al daemon Docker, se le funzionalità sperimentali non sono attive nel tuo daemon, lo script build.sh fallirà.
Su Kali, questa operazione si esegue tramite /etc/docker/daemon.json con il seguente contenuto:
{
"experimental": true
}
Nota: questo è un requisito solo per noi di Offensive Security per ridurre le dimensioni dell'immagine quando pubblichiamo una nuova immagine su Docker Hub.
Se stai creando l'immagine per uso personale, puoi rimuovere l'opzione --squash in build.sh
Tue May 21 13:59:06 EDT 2019
Ovviamente, per farlo funzionare, devi installare Docker. Per Docker su OSX puoi usare brew, mentre per la maggior parte delle altre distribuzioni puoi installarlo tramite il tuo gestore di pacchetti locale. Una volta installato e configurato, basta scaricare la nostra immagine dal repository 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
. uso link:sqliv2
. Ottieni:
git clone https://github.com/nu11secur1ty/nu11secur1ty.git
link:nu11secur1ty
Se vuoi creare le tue immagini Kali invece di usare le nostre preconfigurate, abbiamo semplificato il tutto con il seguente script ospitato su Kali Linux Docker su Github. Queste immagini sono costruite al meglio su un sistema Linux o su qualsiasi altro sistema operativo che supporti 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!"


Esiste un comando docker exec che può essere usato per connettersi a un container già in esecuzione.
docker exec -it <container name> /bin/bash per ottenere una shell bash nel containerdocker exec -it <container name> <command> per eseguire qualsiasi comando tu specifici nel container.Il modo corretto per eseguire un comando in un container è: docker-compose run <container name> <command>. Ad esempio, per ottenere una shell nel tuo container web potresti eseguire docker-compose run web /bin/bash
Per eseguire una serie di comandi, devi racchiuderli in un unico comando usando una shell. Ad esempio: docker-compose run <name in yml> sh -c '<command 1> && <command 2> && <command 3>'
In alcuni casi potresti voler eseguire un container non definito da un file docker-compose.yml, ad esempio per testare una nuova configurazione del container. Usa docker run per avviare un nuovo container con un'immagine specifica: docker run -it <image name> <command>
Il comando docker run accetta opzioni da riga di comando per specificare montaggi di volumi, variabili d'ambiente, la directory di lavoro e altro.
Ottenere una shell in un container di build per eseguire qualsiasi operazione è l'approccio più semplice. Devi semplicemente ottenere l'accesso al container cli che abbiamo definito nel file compose. Il comando docker-compose -f build.yml run cli avvierà un'istanza dell'immagine phase2/devtools-build e aprirà una shell bash per te. Da lì sei libero di usare drush, grunt o qualunque cosa il tuo cuore desideri.
Un altro concetto nel mondo Docker è avviare un container per eseguire un singolo comando e consentire al container di fermarsi quando il comando è completato. È ottimo se esegui comandi di rado o se non vuoi avere un altro container costantemente in esecuzione. Eseguire i comandi sui container in questo modo è anche adatto a comandi che non generano file sul filesystem o che, se li generano, scrivono tali file su volumi montati nel container.
Il container drush definito nel file build.yml di esempio è un container progettato specificamente per eseguire drush in una singola directory di lavoro accettando solo i comandi come argomenti. Questo approccio ci consente di fornire un meccanismo rapido e semplice per eseguire qualsiasi comando drush, come sqlc, cache-rebuild e altri, nel tuo sito Drupal in modo rapido e semplice.
Ci sono anche altri esempi di un container per il comando grunt simile a drush e un container di comando ancora più specifico per eseguire un singolo comando, drush make, per costruire il sito da un file make/dependency.
La cartella webapp sull'host verrà montata nella root apache del container
docker system prune
docker system prune -a
Usa il comando docker images con il flag -a per individuare l'ID delle immagini che vuoi rimuovere. Questo mostrerà ogni immagine, inclusi i layer di immagine intermedi. Una volta individuate le immagini da eliminare, puoi passare il loro ID o tag a docker rmi:
docker images -a
docker rmi Image Image
Le immagini Docker sono costituite da più layer. Le immagini dangling sono layer senza alcuna relazione con immagini taggate. Non servono più a uno scopo e consumano spazio su disco. Possono essere individuate aggiungendo il flag di filtro, -f con valore dangling=true, al comando docker images. Quando sei sicuro di volerle eliminare, puoi usare il comando docker images purge:
NOTA
If you build an image without tagging it, the image will appear on the list of dangling images because it has no association with a tagged image. You can avoid this situation by providing a tag when you build, and you can retroactively tag an images with the docker tag command.
docker images -f dangling=true
docker images purge
Puoi trovare tutte le immagini che corrispondono a un pattern usando una combinazione di docker images e grep. Una volta soddisfatto, puoi eliminarle usando awk per passare gli ID a docker rmi. Nota che queste utility non sono fornite da Docker e potrebbero non essere disponibili su tutti i sistemi:
docker images -a | grep "pattern"
docker images -a | grep "pattern" | awk '{print $3}' | xargs docker rmi
Tutte le immagini Docker su un sistema possono essere elencate aggiungendo -a al comando docker images. Quando sei sicuro di volerle eliminare tutte, puoi aggiungere il flag -q per passare l'ID dell'immagine a docker rmi:
docker images -a
docker rmi $(docker images -a -q)
Se sai mentre stai creando un container che non vorrai tenerlo una volta terminato, puoi eseguire docker run --rm per eliminarlo automaticamente quando esce.
docker run --rm image_name
Puoi individuare i container usando docker ps -a e filtrarli in base al loro stato: created, restarting, running, paused o exited. Per rivedere l'elenco dei container terminati, usa il flag -f per filtrare in base allo stato. Quando hai verificato di voler rimuovere quei container, usa -q per passare gli ID al comando docker rm.
docker ps -a -f status=exited
docker rm $(docker ps -a -f status=exited -q)
I filtri Docker possono essere combinati ripetendo il flag di filtro con un valore aggiuntivo. Ciò risulta in un elenco di container che soddisfano una delle due condizioni. Ad esempio, se vuoi eliminare tutti i container contrassegnati come Created (uno stato che può verificarsi quando esegui un container con un comando non valido) o Exited, puoi usare due filtri:
docker ps -a -f status=exited -f status=created
docker rm $(docker ps -a -f status=exited -f status=created -q)
Puoi trovare tutti i container che corrispondono a un pattern usando una combinazione di docker ps e grep. Quando sei soddisfatto di avere l'elenco da eliminare, puoi usare awk e xargs per fornire l'ID a docker rmi. Nota che queste utility non sono fornite da Docker e potrebbero non essere disponibili su tutti i sistemi:
docker ps -a | grep "pattern”
docker ps -a | grep "pattern" | awk '{print $3}' | xargs docker rmi
Puoi rivedere i container sul tuo sistema con docker ps. L'aggiunta del flag -a mostrerà tutti i container. Quando sei sicuro di volerli eliminare, puoi aggiungere il flag -q per fornire gli ID ai comandi docker stop e docker rm:
docker ps -a
docker stop $(docker ps -a -q)
docker rm $(docker ps -a -q)
Rimuovere uno o più volumi specifici - Docker 1.9 e successive versioni
Usa il comando docker volume ls per individuare il nome o i nomi dei volumi che desideri eliminare. Poi puoi rimuovere uno o più volumi con il comando docker volume rm:
docker volume ls
docker volume rm volume_name volume_name
Poiché lo scopo dei volumi è esistere indipendentemente dai container, quando un container viene rimosso, un volume non viene rimosso automaticamente nello stesso momento. Quando un volume esiste e non è più collegato a nessun container, viene chiamato volume dangling. Per individuarli e confermare di volerli rimuovere, puoi usare il comando docker volume ls con un filtro per limitare i risultati ai volumi dangling. Quando sei soddisfatto dell'elenco, puoi rimuoverli tutti con docker volume prune:
docker volume ls -f dangling=true
docker volume prune
Se hai creato un volume senza nome, può essere eliminato contemporaneamente al container con il flag -v. Nota che funziona solo con volumi senza nome. Quando il container viene rimosso con successo, viene mostrato il suo ID. Nota che non viene fatto alcun riferimento alla rimozione del volume. Se è senza nome, viene rimosso silenziosamente dal sistema. Se ha un nome, rimane silenziosamente presente.
docker rm -v container_name
Questa guida copre alcuni dei comuni comandi usati per rimuovere immagini, container e volumi con Docker. Ci sono molte altre combinazioni e flag che possono essere usati con ciascuno. Per una guida completa su ciò che è disponibile, consulta la documentazione Docker per docker system prune, docker rmi, docker rm e docker volume rm. Se ci sono attività di pulizia comuni che vorresti vedere nella guida, chiedi o fornisci suggerimenti nei commenti.

