Expérimentation Partie 2/2 [1h30]



Contexte (Travail demandé page 5) :

Dans cette deuxième partie de l’expérimentation on considère une deuxième application web vulnérable ‘’Bodgeit’’, c’est une petite application de shopping vulnérable à l’injection SQL et au Cross site scripting.  Le but est le même, choisir le bon ensemble de patrons de sécurité afin de protéger l’application contre l’injection SQL et Cross site scripting puis écrire des tests afin de détecter la présence des vulnérabilités dans l’application ainsi que les patrons de sécurité.

Sur l’application ‘’Bodgeit’’, l’attaque SQL injection peut être effectuée comme suit

Une attaque de type Cross site scripting peut être effectuée comme suit

Ou encore :







Pour cette partie, deux éléments sont introduits afin de vous aider dans votre travail :

  1. Les arbres d’attaque et de défense des deux attaques

La documentation des deux attaques (CAPEC-66 SQL injection et CAPEC-244 Cross site scripting) peut se résumer de façon synthétique par des arbres d’attaque et de défense. Ils donnent le fonctionnement de l’attaque (nœuds rouges ) et comment s’en protéger par des patrons (nœud verts).

Le flux d’exécution des deux attaques est présenté avec les deux arbres d’attaques et de défense ci-dessous (Lire Qu'est-ce qu'un arbre d’attaque et de défense ?).

  1. Ensemble de cas de test génériques

Nous vous fournissons 2 cas de test génériques (1 par attaque) permettant d'executer les deux arbres précédentes utilisant un ensemble d’outils de test sécurité (ZAP Proxy, Selenium, Cucumber) afin d’offrir la capacité de tester la sécurité d’une application. Les cas de test sont écrits avec cucumber en reflétant l’arbre de l’attaque. Le projet est disponible en suivant le lien :

http://hina/~loregain/experiment.zip





Cucumber permet de définir les étapes d’un test avec la logique Given, When et Then. C’est-à-dire,

Ci-dessous un exemple de login a un compte github sans login password.

Feature: github login


Scenario: login without username and password

Given user is on github homepage

When user clicks on Sign in button

Then user is displayed login screen



Dans les cas de test donnés, chacune de ces étapes des attaques (que l’on trouve dans les arbres précédents) est implémentée dans le package ‘’Steps’’

Avec le plugin eclipse cucumber, un Ctrl+click permet de se déplacer vers l’implémentation depuis l’éditeur cucumber. Une étape (Step) et implémentée comme suit :

@Given("^user is on github homepage$")

public void user_is_on_github_homepage() throws Throwable {

// Write code here that turns the phrase above into concrete actions

throw new PendingException();

}

Ces cas de test sont appelés via un test JUnit qui a la forme

@RunWith(Cucumber.class)

@CucumberOptions(

features = {"src/test/resources/features/"},

glue = {"net.continuumsecurity.steps"}

)

public class SecurityTest {


@AfterClass

public static void tearDown() {

}

}

C’est lancé en tant que test JUnit.

Où :

Pour cette expérimentation, on vous fournit les deux cas de test génériques pour les deux attaques (Injection SQL et XSS) écrits avec cucumber et qui reflètent les deux arbres d’attaques. Dans le projet Experiment, les features sont dans le package « src/test/resources/features ».

Afin de compléter les cas de test pour les rendre exécutables, on distingue deux types d’étapes :



Travail demandé :

On vous demande de donner :

  1. Le choix du bon ensemble des patrons de sécurité afin de protéger l’application contre les attaques SQL injection et Cross site scripting

  1. Lire et comprendre (Qu'est-ce qu'un arbre d’attaque et de défense ?)

  2. Lire et comprendre (Qu'est-ce qu'un patron de sécurité ?)

  3. Choisir l’ensemble de patrons de sécurité liés au deux attaques (SQL injection et cross site scripting) en vous aidant des 2 arbres.

  1. Noter la durée nécessaire à votre choix.

  1. Compléter les tests génériques pour les CAPEC 66 attaques SQL injection, et CAPEC 244 cross site scripting.

  1. Lire et comprendre l’implémentation des attaques sous cucumber.

  2. Completer les cas de test pour SQL injection et Cross site scripting.

    1. Importer le projet : http://hina/~loregain/experiment.zip dans eclipse et faire maven build avec l'option « compile » (click droit sur le projet ->run as-> maven build et mettre dans goals la valeur : « compile » )

    2. Installer cucumber depuis Eclipse Marketplace



















    1. Lancer zap en tapant « zap » en ligne de commandes

    2. Ouvrir les features (fichiers.feature) qui se trouvent dans le repertoire « src/test/resources/features ».

    3. Ctrl + Click sur les étapes précédés de #Context

    4. Compléter les cas de tests avec sélénium en suivant les indications

  1. Noter la durée pour l’écriture des tests.

  1. Remplir le questionnaire en suivant le lien :

https://goo.gl/forms/TvKNdcs0XAyljroO2



5