
Metarget est un framework fournissant la construction automatique d'infrastructures vulnérables.
Metarget = meta- + target, un framework fournissant des constructions automatiques d'infrastructures vulnérables, utilisé pour déployer rapidement et automatiquement des cibles cloud native simples ou complexes.
Lors des recherches en sécurité, on constate souvent que le déploiement d'environnements vulnérables prend beaucoup de temps, alors que le temps passé à tester les PoC ou ExP est comparativement court. Dans le domaine de la sécurité cloud native, en raison de la complexité des systèmes cloud native, ce problème est encore plus critique.
Il existe déjà d'excellents projets de sécurité comme Vulhub, VulApps dans la communauté open-source, qui empaquettent des scènes vulnérables dans des images conteneur, permettant aux chercheurs de les utiliser et de déployer rapidement des scénarios.
Cependant, ces projets se concentrent principalement sur les vulnérabilités dans les applications. Que faire si nous avons besoin d'étudier les vulnérabilités dans les infrastructures comme Docker, Kubernetes, voire le noyau Linux ?
C'est pourquoi nous développons Metarget et espérons résoudre dans une certaine mesure le problème de déploiement ci-dessus. De plus, nous espérons également que Metarget pourra aider à construire multicouche des scènes cloud native vulnérables automatiquement.
Dans ce projet, nous introduisons des concepts comme installer des vulnérabilités et installer des scènes vulnérables. Pourquoi ne pas installer des vulnérabilités comme on installe des logiciels ? C'est possible, car nos objectifs sont la recherche en sécurité et la sécurité offensive.
Pour être précis, nous attendons :
metarget cnv install cve-2019-5736 installera Docker avec CVE-2019-5736 sur le serveur.metarget cnv install cve-2018-1002105 installera Kubernetes avec CVE-2018-1002105 sur le serveur.metarget cnv install kata-escape-2020 installera Kata-containers avec CVE-2020-2023/2025/2026 sur le serveur.metarget cnv install cve-2016-5195 installera un noyau avec DirtyCoW dans le serveur.C'est cool, non ? Plus d'étapes. Pas besoin de RTFM. Exécutez une commande et savourez votre café.
De plus, nous attendons :
metarget appv install dvwa installera une cible DVWA sur notre infrastructure vulnérable.metarget appv install thinkphp-5-0-23-rce --external installera une vulnérabilité ThinkPHP RCE avec un service NodePort sur notre infrastructure vulnérable.Vous pouvez simplement exécuter les 5 commandes ci-dessous après avoir installé une nouvelle Ubuntu et obtenir une scène vulnérable multicouche :```bash ./metarget cnv install cve-2016-5195 # container escape with dirtyCoW ./metarget cnv install cve-2019-5736 # container escape with docker ./metarget cnv install cve-2018-1002105 # kubernetes single-node cluster with cve-2018-1002105 ./metarget cnv install privileged-container # deploy a privileged container ./metarget appv install dvwa --external # deploy dvwa target
RCE, évasion de conteneur, mouvement latéral, persistance, ils sont à vous maintenant.
D'autres fonctions géniales arrivent ! Restez à l'écoute :)
Remarque :
Ce projet vise à fournir des scénarios vulnérables pour la recherche en sécurité. La sécurité des scénarios générés n'est pas garantie. Il est **DÉCONSEILLÉ** de déployer des composants ou des scénarios avec Metarget sur Internet.
## 2 Installation
### 2.1 Prérequis
- Ubuntu **20.04 / 22.04 / 24.04 (recommandé)**, 18.04 également pris en charge
- pour certains cas (par exemple, nouvelles vulnérabilités du noyau) des distributions Ubuntu spécifiques sont nécessaires
- vous pouvez lire la note pour les vulnérabilités spécifiques (indiquées par un astérisque (\*)) pour plus de détails
- **Python >= 3.7** (Python 2.x n'est pas pris en charge !)
- pip3
### 2.2 Depuis les sources
Clonez le dépôt et installez les dépendances :```bash
git clone https://github.com/Metarget/metarget.git
cd metarget/
pip3 install -r requirements.txt
Commencez à utiliser Metarget et construisez des scènes vulnérables. Par exemple :```bash ./metarget cnv install cve-2019-5736
### 2.3 Depuis PyPI
Actuellement non pris en charge.
## 3 Utilisation
Metarget doit être exécuté en tant que **root**.
Il est recommandé d'ajouter l'option `--verbose` lors du débogage.
### 3.1 Utilisation de base```
usage: metarget [-h] [-v] subcommand ...
automatic constructions of vulnerable infrastructures
positional arguments:
subcommand description
gadget cloud native gadgets (docker/k8s/...) management
cnv cloud native vulnerabilities management
appv application vulnerabilities management
optional arguments:
-h, --help show this help message and exit
-v, --version show program's version number and exit
Exécutez ./metarget gadget list pour voir les composants cloud natifs actuellement pris en charge.
usage: metarget gadget [-h] subcommand ...
positional arguments: subcommand description list list supported gadgets install install gadgets remove uninstall gadgets
optional arguments: -h, --help show this help message and exit
> Exécutez`./metarget gadget list docker/k8s/containerd/runc/kernel`pour voir les versions actuellement prises en charge des composants cloud natifs.
#### 3.2.1 Cas : Installer Docker avec une version spécifiée
Exécutez :```bash
./metarget gadget install docker --version 18.03.1
Si la commande ci-dessus s'exécute avec succès, Docker 18.03.1 sera installé.
Exécutez :```bash ./metarget gadget install k8s --version 1.28.4
Si la commande ci-dessus se termine avec succès, un cluster Kubernetes à nœud unique 1.28.4 sera installé.
Plage de versions Kubernetes prises en charge : **1.9 – 1.33**.
Remarque :
Metarget offre les options suivantes pour l'installation de Kubernetes :```
-v VERSION, --version VERSION
gadget version
--runtime {auto,docker,containerd}
container runtime for k8s (auto: containerd for k8s>=1.24, docker otherwise)
--runtime-version RUNTIME_VERSION
version of the container runtime to install alongside k8s.
For --runtime containerd: containerd.io apt version (e.g. 1.6.28).
For --runtime docker with k8s>=1.24: cri-dockerd version (e.g. 0.3.15).
Omit to install the latest/default version.
--cni-plugin CNI_PLUGIN
cni plugin, flannel by default
--pod-network-cidr POD_NETWORK_CIDR
pod network cidr, default cidr for each plugin by default
--taint-master taint master node or not
--domestic use domestic (Aliyun) mirrors for k8s images
Sélection du runtime de conteneur :