{
  "groups": [
    {
      "nameDe": "Den Shop kennenlernen",
      "nameEn": "Getting to know the shop",
      "groupNr": 0,
      "exercises": [
        {
          "nameDe": "Registrieren",
          "nameEn": "Register",
          "exerciseNr": 1,
          "descriptionDe": "Erstelle einen neuen Account im Online Shop",
          "descriptionEn": "Create a new account in the online shop"
        },
        {
          "nameDe": "Profil vervollständigen",
          "nameEn": "Complete profile",
          "exerciseNr": 2,
          "descriptionDe": "Suche dir ein Event deiner Wahl und kaufe dafür ein Ticket",
          "descriptionEn": "Search for an event of choice and buy a ticket for"
        },
        {
          "nameDe": "Ein Ticket kaufen",
          "nameEn": "Buy a ticket",
          "exerciseNr": 3,
          "descriptionDe": "Suche dir ein Event deiner Wahl und kaufe dafür ein Ticket",
          "descriptionEn": "Search for an event of choice and buy a ticket for"
        }
      ]
    },
    {
      "nameDe": "Broken Access Control",
      "nameEn": "Broken Access Control",
      "groupNr": 1,
      "descriptionDe": "Eine Webseite beinhaltet oft öffentlich einsehbare und einige Seiten, die nur mit passenden Berechtigungen erreicht werden dürfen, z.B. ein Admin-Panel oder einen Account-Bereich. Jede Seite ist über einen Suffix (z.B. '/concerts') erreichbar. Der Zugriff wird oft über Cookies oder eine Authentifizierung an einem Backend-Server geregelt. Bei Broken Access Control ist dieser Sicherheits-Mechanismus nicht oder fehlerhaft implementiert. Somit lassen sich Seiten unberechtigterweise über die URL erreichen.",
      "descriptionEn": "todo",
      "exercises": [
        {
          "nameDe": "Hilfe-Seite aufrufen",
          "nameEn": "Access Help Page",
          "exerciseNr": 1,
          "descriptionDe": "Manipuliere die URL so, dass du die Hilfe-Seite erreichen kannst",
          "descriptionEn": "Manipulate the URL and access the help page"
        },
        {
          "nameDe": "Das versteckte Konzert buchen",
          "nameEn": "Book the hidden concert",
          "exerciseNr": 2,
          "descriptionDe": "Manipuliere die URL so, dass du das ausgebuchte Konzert aufrufen kannst und buche ein Ticket dafür",
          "descriptionEn": "Manipulate the URL and access the sold out concert and buy a ticket"
        }
      ]
    },
    {
      "nameDe": "SQL Injections",
      "nameEn": "SQL Injections",
      "groupNr": 2,
      "descriptionDe": "Eine Datenbank arbeitet mit SQL Befehlen um Datensätze anzulegen, abzurufen, zu verändern und löschen. Ein Server wird über API-Schnittstellen angesprochen, führt die Befehle in der Datenbank aus und liefert das Ergebnis. Der Client darf keinen direkten Zugriff auf die Datenbank haben. Bei SQL Injections wird versucht über die API-Schnittstellen direkte SQL Befehle auszuführen.",
      "descriptionEn": "todo",
      "exercises": [
        {
          "nameDe": "Alle Accounts ausspähen",
          "nameEn": "Get all accounts",
          "exerciseNr": 1,
          "descriptionDe": "Ließ alle Konten aus der Tabelle >>Accounts<< aus. Nutze hierfür das Suchfeld.",
          "descriptionEn": "Execute an SQL-Injection on the Search page to get all datasets from >>Accounts<< table."
        },
        {
          "nameDe": "Alle Berechtigungsgruppen ausspähen",
          "nameEn": "Get alls account roles",
          "exerciseNr": 2,
          "descriptionDe": "Ließ alle Berechtigungsgruppen aus der Tabelle >>AccountRoles<< aus.",
          "descriptionEn": "Execute an SQL-Injection on the Search page to get all datasets from >>AccountRoles<< table."
        },
        {
          "nameDe": "Eigene Berechtigungen erhöhen",
          "nameEn": "Upgrade your privileges",
          "exerciseNr": 3,
          "descriptionDe": "Erhöhe deine eigene Berechtigung zu >>Admin<<.",
          "descriptionEn": "Change the privileges of your account"
        },
        {
          "nameDe": "Einen fremden Account übernehmen",
          "nameEn": "Capture another account",
          "exerciseNr": 4,
          "descriptionDe": "Wir infiltrieren nun einen Account. Suche dir dafür aus der Liste der in Aufgabe 2.1 erhaltenen einen Account heraus, welcher die Rolle >>Super-Admin<< inne hat. Nur damit lässt sich die Dateiverwaltung welche wir später brauchen öffnen. Hast du den Account-Namen gefunden, gehe ins Login-Menü (logge dich aus, falls du noch angemeldet bist). Führe nun einen SQL-Injektion durch um diesen Account zu übernehmen.",
          "descriptionEn": "todo"
        }
      ]
    },
    {
      "nameDe": "Cross-Site Scripting (XSS)",
      "nameEn": "Cross-Site Scripting (XSS)",
      "groupNr": 3,
      "descriptionDe": "HTML und CSS sind für die Struktur und die Gestaltung einer Webseite verantwortlich. Um jedoch Programmcode für dynamische Inhalte auszuführen wird die Programmiersprache JavaScript verwendet, welche Programmcode direkt im Browser ausführen kann. Diese Scripts können nun aber auch Schaden anrichten, wenn sie im Rahmen eines Angriffs eingeschmuggelt werden.",
      "descriptionEn": "todo",
      "exercises": [
        {
          "nameDe": "Hallo Welt!",
          "nameEn": "Hello World!",
          "exerciseNr": 1,
          "descriptionDe": "Nimm dir eine URL des Shops und erweitere sie mit JavaScript Code so, dass beim Öffnen des Links eine 'Hallo Welt' Nachricht erscheint",
          "descriptionEn": "Take an URL of the shop and extend it with JavaScript code so that a 'Hello World' message appears whent the link is opened"
        },
        {
          "nameDe": "Ein externes Script aufrufen",
          "nameEn": "Run an external script",
          "exerciseNr": 2,
          "descriptionDe": "Bearbeite die URL des Shops so, dass du das Script ausführen kannst",
          "descriptionEn": "Create an URL of the shop, which calls the script"
        },
        {
          "nameDe": "Hacken mit eigenem Script",
          "nameEn": "Hack with your script",
          "exerciseNr": 3,
          "descriptionDe": "Schreibe eine JavaScript Datei, lade sie über das Admin Panel hoch und kreiere eine URL, welche es ausführt",
          "descriptionEn": "Write our own JavaScript file, upload it via Admin Panel and create an URL to execute it"
        }
      ]
    }
  ]
}