monpremierctf / mon_premier_ctf

CTF Challenges pour débutants
GNU General Public License v3.0
37 stars 8 forks source link

Problème avec l'outil challenge-box-provider #5

Open xoxopeter opened 3 years ago

xoxopeter commented 3 years ago

Bonjour,

Le repo étant en francais, j'ouvre donc cette issue en francais,

Tout d'abords un grand merci pour ce repo que j'ai trouvé vraiment intéressant et bien construit.

Après avoir testé l'installation from scratch sur un serveur ubuntu, je me suis aperçu qu'il y avait des erreurs lors du lancement de l'outil challenge-box-provider.

Lorsque l'on fait un "docker build ." depuis %PATH%/tools/challenge-box-provider il y a les erreurs suivantes:

challenge-box-provider

./main.go:295:44: not enough arguments in call to dockerClient.ContainerCreate have (context.Context, container.Config, container.HostConfig, nil, string) want (context.Context, container.Config, container.HostConfig, network.NetworkingConfig, v1.Platform, string)

Si nous regardons à cet endroit au niveau du main.go (%PATH%/tools/challenge-box-provider) voici le code:

if (challID == "") {

    resp, err := dockerClient.ContainerCreate(ctx,
        &container.Config{
            Image:    box,
            Labels:   labels,
            Hostname: box,
            Env:      env,
        },
        &container.HostConfig{
            AutoRemove:      (box != "ctf-tool-xterm"),
            PublishAllPorts: false,
            //--storage-opt size=120G
            //StorageOpt: storageOpt,
            // Error response from daemon: --storage-opt is supported only for overlay over xfs with 'pquota' mount option
            Resources: container.Resources{
                Memory:   200e+6, // in bytes, 200 000 000, 200Mb
                NanoCPUs: 1e+8,   // 0.1 CPU max per container
            },
            //PortBindings: portBinding,

            //"SecurityOpt": [],
            //SecurityOpt: []string{ "apparmor:unconfined", "seccomp=unconfined"},
            SecurityOpt: secopt,
        },
        nil,
        /*
            &container.NetworkingConfig{
                EndpointsConfig ep,
            },*/

        fmt.Sprintf("%s_%s", box, uid))
    if err != nil {
        panic(err)
    }
    challID = resp.ID

J'ai constaté cela car j'ai voulu modifier les labels à partir de la ligne 241 (main.go) en rajoutant de nouveau labels ou même simplement en modifiant le PathPrefix en Path:

// Labels
labels := map[string]string{
    "ctf-uid":               fmt.Sprintf("CTF_UID_%s", uid),
    "ctf-start-time":        time.Now().Format("2006-01-02 15:04:05"),
    "ctf-duration":          duration,
    "traefik.enable":        "true",                                      //traefik.enable=true
    "traefik.frontend.rule": fmt.Sprintf("PathPrefix:/%s_%s/", box, uid), //traefik.frontend.rule=Path:/yoloboard
    "traefik.port":          fmt.Sprintf("%s", traefik_port),
}

Après avoir fait cela on voit sur le container "ctf-tool-xterm_xxxxxxxx" que les labels ne sont pas modifiées et je suspecte que la cause de cela est la mauvaise exécution de l'outil challenge-box-provider. Auriez-vous une idée pour débloquer cette outils? j'ai essayé différentes actions, mais sans succès,

En attendant, je vous souhaite une bonne journée,

jossets commented 3 years ago

Bonjour,

Après avoir compilé, avec pas mal de problèmes, pendant plusieurs mois, nous ne somme plus arrivés à recompiler l'outil. De mémoire, c'était des problèmes d'ordre de dépendance entre docker et les sockets. Du coup, nous nous sommes contenté d'ajouter le binaire au repo.

Pour la suite de la plateforme, nous avons recodé l'outil en python. Il faudrait, si nous avions le temps, mettre à jour avec le code python. Mais comme le binaire en go fonctionne pas si mal, on ne touche à rien sur ce repo :)