first commit

This commit is contained in:
Paul Schneider 2026-09-24 17:50:43 +01:00
commit 2e22667181
Signed by: notazof
GPG key ID: AD4B9B545FBD7D12
17 changed files with 889 additions and 5 deletions

74
targets.example.env Normal file
View file

@ -0,0 +1,74 @@
# targets.example.env — copiez ce fichier en targets.env et renseignez
# vos valeurs. targets.env est ignoré par git (.gitignore) : il ne doit
# JAMAIS être committé (il contient votre cible et vos jetons).
#
# cp targets.example.env targets.env
# --- Autorisation (OBLIGATOIRE) ----------------------------------------
# Confirmez que la cible vous appartient et que ce test est autorisé.
# Les outils refusent de tourner tant que cette valeur n'est pas "yes".
# Voir docs/scope.md pour le périmètre exact.
TARGET_SCOPE_ACK="no"
# --- Cible -------------------------------------------------------------
# URL de base de la preprod. Tous les outils restent dans ce domaine
# (assert_in_scope rejette tout ce qui en dérive).
# Preprod Yavsc — host Yavsc.Org (MVC + IdentityServer, porte l'auth).
TARGET_BASE_URL="https://preprod-yavsc.pschneider.fr"
# Hôtes additionnels du périmètre (séparés par espaces). La preprod
# Yavsc est multi-hôtes :
# Yavsc.Org → preprod-yavsc.pschneider.fr (auth, MVC)
# Yavsc.Api → preprod-api.pschneider.fr (API business, JSON)
# Yavsc.Blogs → preprod-blogs.pschneider.fr (blogs + stockage perso)
# assert_in_scope autorise ces hôtes en plus de TARGET_BASE_URL.
TARGET_ALLOWED_HOSTS="preprod-yavsc.pschneider.fr preprod-api.pschneider.fr preprod-blogs.pschneider.fr"
# Timeout curl (secondes)
CURL_TIMEOUT=10
CURL_MAX_TIME=30
# Délai entre requêtes (secondes). 0 = aucune pause. Gardez un délai
# raisonnable pour ne pas saturer la preprod.
REQUEST_DELAY=0.2
# Verbeux : 1 = affiche chaque requête + début du corps
VERBOSE=0
# Dossier de sortie (journaux, résultats). Ignoré par git.
OUTPUT_DIR="./output"
# --- brute-login -------------------------------------------------------
# Endpoint de connexion (relatif à TARGET_BASE_URL ou URL absolue dans
# le périmètre). Yavsc.Org expose l'auth via IdentityServer4 — la page
# de login MVC (POST /account/login) et le endpoint token OAuth/OIDC
# (POST /connect/token). Ciblez le endpoint que vous voulez éprouver.
# Exemples :
# LOGIN_PATH="/account/login" # formulaire MVC (HTML)
# LOGIN_PATH="/connect/token" # token OAuth2 (form-urlencoded)
LOGIN_PATH="/connect/token"
# Champ du nom d'utilisateur dans le corps JSON de la requête.
LOGIN_USER_FIELD="username"
# Champ du mot de passe.
LOGIN_PASS_FIELD="password"
# Utilisateur ciblé (le bruteforceur fait varier le mot de passe).
LOGIN_USERNAME="test"
# Wordlist de mots de passe (un par ligne). Ne PAS committer la vôtre ;
# utilisez le dossier wordlists/ (ignoré) ou un chemin absolu hors dépôt.
LOGIN_WORDLIST="./wordlists/passwords.txt"
# Nombre maximum de tentatives (0 = illimité, déconseillé).
LOGIN_MAX_ATTEMPTS=0
# Indice de succès : code HTTP renvoyé en cas de connexion réussie
# (typiquement 200). Les autres codes sont considérés comme échec.
LOGIN_SUCCESS_CODE=200
# Type de corps de la requête de connexion :
# "json" → application/json (API JSON)
# "form" → application/x-www-form-urlencoded (OAuth2 /connect/token,
# formulaire MVC)
# IdentityServer /connect/token attend "form" avec grant_type=password.
LOGIN_CONTENT_TYPE="form"
# Pour OAuth2 password grant, le corps form doit inclure grant_type.
# Si LOGIN_BODY_FORM est défini, il est utilisé tel quel (placeholders
# {{USER}} / {{PASS}}) ; sinon le script construit le form à partir
# des champs ci-dessus + grant_type=password.
#LOGIN_BODY_FORM='grant_type=password&username={{USER}}&password={{PASS}}&client_id=ro_client&scope=api'