Missions publiques et directives

Le codage sécurisé rendu pratique

Explorez les directives de codage sécurisé pour comprendre et atténuer les vulnérabilités logicielles, comme le Top 10 de l'OWASP, et plongez dans des missions de formation guidées pour vous entraîner à des simulations d'applications réelles.

BG lernen

Parcourez toutes les missions

Mehr anzeigen
Steigern Sie die Produktivität
Injection SQL
Un utilisateur nous a signalé avoir été en mesure d'exploiter une vulnérabilité d'injection SQL dans la fonction de recherche de transactions de la solution de banque en ligne. Ils ont déclaré qu'ils étaient en mesure de visualiser les transactions appartenant à d'autres utilisateurs et ont souligné que cette vulnérabilité pouvait permettre à un attaquant de faire toutes sortes de choses malveillantes dans la base de données, comme supprimer des tables, consulter des données provenant d'autres tables, insérer des données, etc. Essayez de reproduire ce que l'utilisateur a fait lors de cette mission.
Steigern Sie die Produktivität
Spring MVC RequestMatchers
En mars 2023, Spring a publié un correctif pour une vulnérabilité découverte en interne, appelée CVE-2023-20860, dans laquelle l'utilisation d'un double caractère générique ** dans MvcRequestMatchers pouvait provoquer une incompatibilité de modèle entre Spring Security et Spring MVC. Cela pourrait finalement conduire les utilisateurs à accéder sans autorisation à certains terminaux. Nous avons mis en place une application bancaire très simplifiée avec quelques points de terminaison. Suivez les instructions et essayez de reproduire l'impact de cette faille de contrôle d'accès.
Steigern Sie die Produktivität
Signatures psychiques - Utilisation de composants vulnérables connus
CVE-04-21449 possède l'alias le plus cool pour une vulnérabilité, Psychic Signatures en Java. Comment a-t-il obtenu ce nom ? C'est une référence aux articles psychiques de Doctor Who. Quand on les montrait à quelqu'un, ces feuilles de papier vierges étaient remplies avec ce qu'il s'attendait à voir. Quelque chose de similaire s'est produit dans l'implémentation Java (versions 15 à 18) de l'algorithme ECDSA, qui a un effet sur la vérification de la signature des JWT. Nous pouvons soumettre une signature non valide, mais Java pensera qu'elle est valide. Vous voulez voir comment cela fonctionne ? Allons-y.
Steigern Sie die Produktivität
Apache Path Traversal : utilisation de composants vulnérables connus
Le 4 octobre 2021, l'équipe Apache a publié la version 2.4.49 d'Apache pour corriger une vulnérabilité de traversée de chemin et d'exécution de code à distance dans Apache 2.4.48, également connue sous le nom de CVE-2021-41773. Le 7 octobre 2021, ils ont publié la version 2.4.51 car le correctif du correctif 2.4.50 n'était pas complet. Cette vulnérabilité a été détectée sous le nom CVE-2021-42013. Essayez cette mission pour voir par vous-même comment cette vulnérabilité peut être exploitée.
Steigern Sie die Produktivität
Log4j - Connue Vulnérable Component Usage
L'annonce début décembre 2021 d'un exploit de 0 jour (CVE-2021-44228) dans la très populaire bibliothèque de journalisation Log4j a fait l'effet d'une bombe dans la communauté Java. L'exploit, baptisé Log4Shell, affecte les versions 2.0-beta9 à 2.14.1 de Log4j v2 et pourrait entraîner l'exécution de code à distance. Nous avons mis en place un environnement pour simuler l'exploit, afin que vous puissiez en constater l'impact de première main. Essayez-le dès maintenant.
Steigern Sie die Produktivität
Trojan Source - Utilisation de composants provenant de sources non fiables
L'un de nos développeurs de Viking Bank a naïvement copié du code provenant d'une source non fiable sur Internet, qui contient potentiellement des composants vulnérables, pour aider à rédiger un contrôle d'autorisation administratif pour gérer les cartes de crédit. Nous avons remarqué que les utilisateurs modifiaient la limite de leur carte de crédit, alors que seuls les administrateurs devraient bénéficier de ce privilège. Nous pensons qu'il y a un problème avec ce code. Essayez la mission d'étudier le code.
Steigern Sie die Produktivität
Codestashbin - Fonction de réinitialisation de mot de passe non sécurisée
CodeStashbin est l'une des plus grandes sociétés d'hébergement de contrôle de version de code au monde. Selon la rumeur, le processus de mot de passe oublié serait défectueux en raison d'une vulnérabilité liée à une fonction de réinitialisation de mot de passe non sécurisée. Il est peut-être possible de modifier le mot de passe d'un utilisateur privilégié et d'accéder à son compte. Participez à cette mission pour étudier le problème.
Steigern Sie die Produktivität
Scripting intersite (XSS) dans « ChatterGPT »
Cette mission révèle l'interface familière d'un LLM populaire et utilise un véritable extrait de code généré fin novembre 2023. Les utilisateurs peuvent interpréter cet extrait et étudier les éventuelles failles de sécurité s'il devait être utilisé aux fins prévues.

Parcourez toutes les directives

Durchsuchen nach:
Filter ausblenden
Auswahl
Filter anzeigen
Auswahl
Filter löschen
Balise
Super-Symbol [★]
Thema
Mehr anzeigen

Enregistrement et surveillance insuffisants

Meilleures pratiques :

Journalisation des audits pour les fonctions sensibles
Enregistrement des erreurs
Stockage des journaux dans un emplacement centralisé
Conserver les journaux pendant une durée définie
Auditez régulièrement les journaux pour les informations personnelles

L'enregistrement et la surveillance sont souvent relégués au second plan lorsque quelque chose s'est déjà mal passé, mais en réalité, ne pas s'assurer d'une journalisation et d'une surveillance appropriées peut s'avérer très coûteux. D'un côté, lorsqu'un incident survient (qu'il soit lié à la sécurité ou non), le fait d'avoir peu ou pas de journaux rend impossible de comprendre ce qui s'est réellement passé. À l'autre extrême, l'enregistrement d'une trop grande quantité de données peut entraîner des problèmes de confidentialité, qui peuvent ensuite entraîner des problèmes avec les régulateurs. Lisez notre guide pour connaître les meilleures pratiques afin d'éviter une journalisation et une surveillance insuffisantes.

Afficher les directives

Verwendung von Komponenten mit bekannten Schwachstellen

{
« dépendances » : {
« foo » : « 1.0.0 - 2.9999.9999",
« barre » : « >=1,0.2 <2.1.2 »
}
}

La plupart des applications utilisent de grandes quantités de composants tiers. Ces composants fournissent tout, de la journalisation à la création de modèles, en passant par l'accès à la base de données, etc. Cela facilite grandement le développement de logiciels et permet de gagner beaucoup de temps. Mais ils sont également fabriqués par des personnes, ce qui signifie que certains contiendront inévitablement des vulnérabilités. Lisez le guide pour en savoir plus.

Afficher les directives

Injection SQL

importer mysql.connector
base de données = mysql.connector.connect
Pratique #Bad. Evite ça ! C'est juste pour apprendre.
(host="localhost », user="newuser », passwd="pass », db="sample »)
cur = db.cursor ()
name = raw_input ('Entrez le nom : ')
cur.execute (« SELECT * FROM sample_data WHERE Name = '%s' ; » % name) pour la ligne dans cur.fetchall () : print (row)
db.fermer ()

L'injection SQL (SQLi) injecte du code dans des instructions SQL pour attaquer et collecter des informations importantes à partir d'une application. Il s'agit d'une faille de sécurité Web. Il s'agit de la technique de piratage la plus courante qui manipule la base de données et en extrait des informations cruciales.

Afficher les directives

Mauvaise configuration de la sécurité

De nombreux frameworks disposent également d'un ensemble de points de terminaison qui peuvent être activés, ce qui permet de surveiller l'application, que ce soit dans un environnement de production ou de test/développement. Il peut s'agir notamment des éléments suivants :

Métriques (Prometheus)
Journaux
Informations sur l'environnement
Mappages chemin/URL

La mauvaise configuration de sécurité est en quelque sorte un terme générique qui couvre les vulnérabilités courantes qui apparaissent en raison des paramètres de configuration d'une application, plutôt que d'un code incorrect. Il s'agit d'un sujet très varié qui dépend fortement de facteurs tels que votre infrastructure technologique. La résolution de ces problèmes semble souvent simple, comme la modification d'un fichier de configuration ou même d'une seule ligne de code, mais l'impact et les conséquences de ces vulnérabilités peuvent être graves. Lisez notre guide pour en savoir plus sur cette vulnérabilité et sur la manière de l'atténuer.

Afficher les directives

Falsification des demandes de serveur

ts
let url = request.params.url ;

let response = http.get (url) ;
let render = response.render () ;

renvoie render.export () ;

Les vulnérabilités liées à la falsification des requêtes côté serveur se produisent lorsqu'un utilisateur parvient à demander à une application d'envoyer des requêtes HTTP à un domaine déterminé par l'attaquant. Si une application a accès à des réseaux privés/internes, un attaquant peut également amener l'application à envoyer des requêtes à des serveurs internes. Nous examinerons cela de plus près à l'aide de quelques exemples pour mieux comprendre à quoi cela ressemble en action dans cette directive.

Afficher les directives

Stockage des mots de passe

Merkmal Kryptographischer Hash Passwort-Hash Geschwindigkeit Sehr schnell Absichtlich langsam Arbeitsfaktor kann angepasst werden Nein Ja

Si votre application authentifie les utilisateurs, il y a de fortes chances qu'elle traite également des mots de passe. La gestion des mots de passe des utilisateurs est très importante et leur gestion appropriée l'est encore plus. Il est difficile d'imaginer un scénario pire que celui d'une application attaquée et de la fuite des mots de passe des utilisateurs sur Internet à la vue de tous. Comment les mots de passe peuvent-ils être stockés en toute sécurité et conformément aux meilleures pratiques ? Jetons un coup d'œil à quelques méthodes.

Afficher les directives

Mass Affectation

html
<form method="POST">
<input name="Id" type="hidden" value="666">
<input name="Name" type="text" value="Bad guy">
<input name="EmailAddress" type="text" value="hacker@attacker.com">
<input name="IsAdmin" type="hidden" value="true">
<input type="submit">
</form>

Mass Assignment est une vulnérabilité dans laquelle les points de terminaison de l'API ne limitent pas les propriétés de leur objet associé qui peuvent être modifiées par un utilisateur. Cette vulnérabilité peut survenir lors de l'utilisation d'une bibliothèque/framework qui permet la liaison automatique de paramètres HTTP sur un modèle qui est ensuite utilisé sans aucune validation. L'utilisation de la liaison automatique d'une requête à un objet peut parfois être extrêmement utile, mais elle peut également entraîner des problèmes de sécurité si le modèle possède des propriétés qui ne sont pas censées être accessibles à l'utilisateur. Lisez la directive pour plus de détails.

Afficher les directives

Mauvaise configuration de la sécurité - XXE détaillé

xml
< ? version xml = « 1.0 » ? >
< ! Élément extérieur DOCTYPE [
< ! ENTITY ExternalEntity SYSTEM « file : ///etc/passwd » >] >
<outerElement>&Entité externe ;</outerElement>

La classe de vulnérabilité « XML External Entities » (XXE) est une erreur de configuration de sécurité impliquant des analyseurs XML. La norme XML inclut des moyens de référencer des « entités », telles que des fichiers et des URL. Par défaut, les analyseurs résolvent entièrement les entités externes, ce qui signifie que les documents XML peuvent entraîner la divulgation de fichiers et d'autres informations sensibles à des attaquants potentiels. Lisez la directive complète pour plus d'informations.

Afficher les directives

Injection - Traversée de trajectoire

pseudo
let BaseFolder = « /var/www/api/documents/ » ;
let path = BaseFolder + request.params.filename ;

renvoie file.read (chemin) ;

Path Traversal est un autre type de vulnérabilité d'injection assez courant. Ils ont tendance à se produire lorsque la construction d'un URI (qu'il s'agisse d'une URL, d'un chemin de fichier ou autre) ne garantit pas correctement que le chemin entièrement résolu ne pointe pas en dehors de la racine du chemin prévu. L'impact d'une vulnérabilité de traversée de chemin dépend fortement du contexte dans lequel la traversée se produit et du renforcement global qui a été effectué. Lisez le guide pour en savoir plus.

Afficher les directives

Authentification et autorisation

cs

//Assurez-vous que le comportement par défaut est d'authentifier les demandes et de vérifier si elles sont d'origine administrative
[Authentifier]
[Autoriser (« Admin »)]
classe publique SecureController : Controller
{

}

classe publique MyController : SecureController
{

//Remplace l'attribut Authorize hérité pour permettre à n'importe quel utilisateur d'accéder à la page

Afficher les directives

Einschleusung - XSS

``html
<!--- UNSAFE: The htmlSnippet will get interpreted without any escaping --->
@Html .Raw (extrait HTML)
```

Le cross-site scripting, également connu sous le nom de XSS, est un autre type de vulnérabilité d'injection qui conduit à l'évaluation d'un script contrôlé par un attaquant dans le navigateur d'un autre utilisateur. XSS peut également être considéré comme une vulnérabilité d'injection HTML/JavaScript. Examinons les types de XSS que vous pouvez rencontrer.

Afficher les directives

Einspritzung 101

Parmi les types d'injection les plus courants, citons :

Injection SQL
Scripting intersite (injection HTML/JavaScript)
Traversée de chemin (injection de chemin/URL)
Injection de commandes
Injection de code

L'une des catégories de vulnérabilités les plus connues est généralement celle des vulnérabilités liées à l'injection, en particulier, et cela ne surprend personne, la référence incontestée : SQL Injection. Il est difficile d'éviter d'entendre parler de l'injection SQL dans le monde de la technologie, alors nous allons simplement en parler. Lisez la suite pour obtenir une brève introduction aux défauts d'injection.

Afficher les directives

Download of files

chaîne publique UploadProfilePicture (FormFile UploadedFile)
{
//Génère le chemin pour enregistrer le fichier téléchargé dans
var path = $ ». /uploads/avatars/ {request.user.id}/{uploadedFile.FileName} » ;

//Sauvegarde du fichier
var LocalFile = File.OpenWrite (chemin) ;
LocalFile.write (UploadedFile.readToEnd ()) ;
Fichier local .Flush () ;
LocalFile.close () ;

//Mise à jour de la photo de profil
UserProfile.UpdateUserProfilePicture (request.User, chemin)

chemin de retour ;
}

Il est très courant que les applications aient besoin, à un moment ou à un autre, de permettre aux utilisateurs de télécharger un fichier (pour l'utiliser ou simplement pour le stockage) quelque part dans l'application. Bien que cela semble assez simple, la manière dont cette fonction est implémentée peut être assez critique en raison des risques potentiels associés à la gestion des téléchargements de fichiers. Lisez la directive pour plus d'informations.

Afficher les directives

Injection de commandes

let ip = request.params.IPAddress ;

système (« ping" + ip) ;

Examinons l'injection de commandes en elle-même. Nous allons principalement nous concentrer sur quelques exemples différents afin qu'il soit plus facile de voir à quoi cela ressemble en action. Pour rappel, des vulnérabilités d'injection de commandes se produisent lorsque la saisie de l'utilisateur utilise une partie d'une commande du système d'exploitation. Lisez la directive pour plus d'informations.

Afficher les directives