Django fixes

master
Paul Wagener 7 years ago
parent 30b8c224c1
commit 80dd9e0d07
  1. 43
      static/js/quiz.js
  2. 31
      templates/base.html
  3. 39
      templates/certificaten.html
  4. 4
      templates/path.html
  5. 4
      templates/vm.html
  6. 7
      templates/wachtwoorden.html
  7. 3
      templates/xss.html
  8. 6
      views.py

@ -1,17 +1,10 @@
$(function () {
var changed = false;
// Hints
function processHints() {
$('.hint').replaceWith(function () {
return '<div><a href="#" class="hintlink" onclick="$(this).next().slideToggle(); return false;">Bekijk hint</a>' + $(this).hide()[0].outerHTML + '</div>';
});
$('#difficulty').trigger('change');
}
$('#difficulty').change(function (e) {
var option = $(this).find(':selected').val();
@ -34,40 +27,4 @@ $(function () {
}).prop('selected', true);
$('#difficulty').trigger('change');
function loadPage(page) {
$('#quiz').load('/' + page + '.html?cachebuster=' + Math.random(), processHints);
}
function getPage(link) {
if (link.lastIndexOf('?') === -1) {
return '';
}
return link.substring(link.lastIndexOf('?') + 1);
}
// Dynamically load pages
$('#menu a').click(function (e, element) {
var page = getPage(e.target.href);
window.history.pushState({ page: page }, 'Security', e.target.href);
loadPage(page);
e.preventDefault();
});
window.onpopstate = function (event) {
if (event.state) {
loadPage(event.state.page);
} else {
window.location.href = '/';
}
}
// Load page
var page = getPage(window.location.href);
if (page !== '') {
loadPage(page);
} else {
loadPage('sql');
}
});

@ -2,7 +2,7 @@
<html>
<head>
<title>Security 1</title>
<title>Web Application Security</title>
<link href="/static/css/bootstrap.min.css" rel="stylesheet" type="text/css">
<link href="/static/css/bootstrap-responsive.min.css" rel="stylesheet" type="text/css">
<link href="/static/css/style.css" rel="stylesheet" type="text/css">
@ -12,13 +12,11 @@
</head>
<body>
<form method="POST" id="form-quiz">
{% csrf_token %}
<div class="row-fluid">
<div class="well span3" id="menu">
<h5>Security 1</h5>
<h5>Web Application Security</h5>
<ul>
<li>
<a href="/sql">SQL Injection</a>
@ -27,34 +25,39 @@
<a href="/xss">Cross-site Scripting</a>
</li>
<li>
<a href="/wachtwoorden">Wachtwoorden</a>
<a href="/path">Insecure Direct Object References</a>
</li>
<li>
<a href="/oauth">OAuth</a>
<a href="/wachtwoorden">Wachtwoorden</a>
</li>
<!--<li>
<a href="/oauth">OAuth</a>
</li>-->
<li>
<a href="/certificaten">Certificaten</a>
</li>
<li>
<!-- <li>
<a href="/encryptie">Encryptie</a>
</li>
</li>-->
</ul>
Moeilijkheidsgraad:
<select id="difficulty">
<option value="easy">Makkelijk (hints zichtbaar)</option>
<option value="normal">Normaal (hints optioneel)</option>
<option value="hard">Moeilijk (geen hints)</option>
<option value="easy">Hints zichtbaar</option>
<option value="normal">Hints optioneel</option>
<option value="hard">Geen hints</option>
</select>
</div>
<p>
<a href="/vm">Download VM</a>
</p>
<div id="quiz">
</div>
<div id="quiz" class="span8 offset3">
{% block content %}{% endblock %}
</div>
</div>
</form>
</body>
</html>

@ -42,10 +42,7 @@
<code class="terminal">openssl x509 -text -in certificaat.crt</code>
<div class="question">
<span class="question-string">Kopieer/plak de inhoud van certificaat.crt (inclusief begin en einde
<code>-----BEGIN CERTIFICATE-----</code>)</span>
{% include "points.html" with points=answers.answer_openssl_selfsigned_certificate.points max="10" %}
<textarea class="question-input" name="answer_openssl_selfsigned_certificate">{{ answers.answer_openssl_selfsigned_certificate.string }}</textarea>
<span class="question-string">Maak een certificaat met je eigen gegevens</span>
</div>
<p>Een certificaat heeft ook altijd een
@ -65,19 +62,16 @@
<p>
<div class="question">
<span class="question-string">Hoeveel basis verstrekkers vertrouwt jouw systeem? (je mag ook ongeveer een antwoord geven als het lastig tellen is)</span>
{% include "points.html" with points=answers.answer_openssl_number_of_issuers.points max="5" %}
<input class="question-input" name="answer_openssl_number_of_issuers" value="{{ answers.answer_openssl_number_of_issuers.string }}">
<span class="question-string">Hoeveel basis verstrekkers vertrouwt jouw systeem?</span>
</div>
<div class="question">
<span class="question-string">Bekijk het certificaat van
<a href="https://facebook.com/" target="_blank">Facebook</a>, welk bedrijf heeft dit certificaat verstrekt?</span>
{% include "points.html" with points=answers.answer_openssl_facebook_issuer.points max="5" %}
<input class="question-input" name="answer_openssl_facebook_issuer" value="{{ answers.answer_openssl_facebook_issuer.string }}">
</div>
<p class="hint">Hint: Het certificaat kan je in alle browsers bekijken door op het slot-ikoontje te klikken</p>
<p class="hint">Hint: Het certificaat kan je in de meeste browsers bekijken door op het slot-ikoontje te klikken. In Chrome moet je de
Developer Tools openen en kijken in het mapje 'Security'.</p>
<h2>Mag ik uw handtekening?</h2>
@ -97,20 +91,12 @@
<p>Zo'n verzoekje kan je vervolgens bij een certificaat autoriteit zoals Thawte of VeriSign inleveren. Voor een paar honderd
euro zijn ze dan bereid om hun handtekening eronder te zetten.</p>
<p>Om deze les relatief goedkoop te houden heeft deze site ook een certificaat autoriteit waar je certificaten kan laten ondertekenen:
<p>Om deze cursus relatief goedkoop te houden heeft deze site ook een certificaat autoriteit waar je certificaten kan laten
ondertekenen:
<a href="/sign" target="signen">Certificaat Autoriteit</a>. Gebruik deze site om jouw certificaat te laten ondertekenen</p>
<div class="question">
<span class="question-string">Bekijk het certificaat wat je hebt teruggekregen. Welke persoon heeft dit certificaat aan jou verstrekt?</span>
{% include "points.html" with points=answers.answer_openssl_site_issuer.points max="5" %}
<input class="question-input" name="answer_openssl_site_issuer" value="{{ answers.answer_openssl_site_issuer.string }}">
</div>
<div class="question">
<span class="question-string">Plak jouw ondertekende certificaat in onderstaand tekstveld (inclusief begin en einde
<code>-----BEGIN CERTIFICATE-----</code>)</span>
{% include "points.html" with points=answers.answer_openssl_signed_cert.points max="10" %}
<textarea class="question-input" name="answer_openssl_signed_cert">{{ answers.answer_openssl_signed_cert.string }}</textarea>
</div>
<h2>Zelf verstrekken</h2>
@ -118,20 +104,17 @@
<blockquote>Sometimes, the only one you can trust is yourself.</blockquote>
<p>Om zelf verstrekker te spelen heb je helemaal geen speciale certificaten nodig. Je kan namelijk gewoon je eigen certificaat
en sleutel gebruiken die je aan het begin van de les hebt gemaakt. Vraag een medestudent om een Certificate Signing Request
van zijn certificaat te geven en onderteken dat met je eigen certificaat. Zoek op internet het commando op waarmee je
dat kan doen.</p>
en sleutel gebruiken die je aan het begin van de les hebt gemaakt.</p>
<div class="question">
<span class="question-string">Plak de inhoud van het certificaat van een medestudent, waar je zelf verstrekker van bent. (inclusief begin en einde
<code>-----BEGIN CERTIFICATE-----</code>)</span>
{% include "points.html" with points=answers.answer_openssl_sign_other.points max="10" %}
<textarea class="question-input" name="answer_openssl_sign_other">{{ answers.answer_openssl_sign_other.string }}</textarea>
<span class="question-string">Vraag een medecursist om een Certificate Signing Request van zijn certificaat te geven en onderteken dat met je eigen
certificaat. Zoek op internet het commando op waarmee je dat kan doen.</span>
</div>
<p>Tip: zorg ervoor dat jouw certificaat standaard wordt geinstalleerd op alle besturingsystemen. Dan kan je goud geld verdienen
met het ondertekenen van andere certificaten ;)</p>
<!--
<h2>Websites beveiligen</h2>
<p>Leuk die certificaten, maar laten we niet vergeten dat we er ook nog wat nuttigs mee kunnen doen. Namelijk onze internetverbindingen
@ -320,5 +303,5 @@ sudo service apache2 reload</code>
{% include "points.html" with points=answers.answer_openssl_letsencrypt_screenshot.points max="0" %}
<input class="question-input" name="answer_openssl_letsencrypt_screenshot" type="url" value="{{ answers.answer_openssl_letsencrypt_screenshot.string }}">
</div>
-->
{% endblock %}

@ -1,3 +1,5 @@
{% extends 'base.html' %} {% block content %}
<h1>Insecure Direct Object References</h1>
<img src="/static/img/imgr.png">
@ -76,3 +78,5 @@
<div class="question">
<span class="question-string">Beschrijf hoe je met deze site de inhoud van /etc/geheim.txt kan achterhalen</span>
</div>
{% endblock %}

@ -1,3 +1,5 @@
{% extends 'base.html' %}{% block content %}
<h1>Virtuele machine</h1>
<p>Tijdens deze cursus gaan we hacken leren door het te doen. Helaas voor ons zijn de meeste bedrijfsnetwerken zeer pinnig op
@ -26,3 +28,5 @@
<li>Maak een
<a href="https://www.ubuntu.com/download/desktop" target="_blank">Ubuntu</a> VM en ga in deze VM met Firefox naar het IP adres</li>
</ul>
{% endblock %}

@ -1,3 +1,5 @@
{% extends 'base.html' %} {% block content %}
<h1>Wachtwoorden</h1>
<img src="/static/img/password.png" class="center-block">
@ -35,7 +37,8 @@
</i>. Aanvallers hebben de hashes van alle veel gebruikte wachtwoorden, korte lettercombinaties en woordenboekwoorden al berekend
en opgeslagen in zogenaamde rainbow tables. Terug opzoeken wat de originele waarde van een hash was wordt dan zo simpel
als een simpele query uitvoeren. Mits de waarde in de tabel zit natuurlijk, en dat is meteen ook de verdediging tegen deze
aanval:</p>
aanval:
</p>
<h3>Salt</h3>
<p>Om te voorkomen dat zwakke veelvoorkomende kunnen worden teruggevonden in een rainbow table kan je er een salt achter plakken
@ -386,4 +389,4 @@
return temp.toLowerCase();
}
</script>
</script> {% endblock %}

@ -1,3 +1,4 @@
{% extends 'base.html' %} {% block content %}
<style>
.screenshot {
box-shadow: 0 0 15px #888;
@ -242,3 +243,5 @@
<div class="question">
<span class="question-string">Met welke URL kan je 'XSS' in een alert printen?</span>
</div>
{% endblock %}

@ -25,9 +25,15 @@ def home(request, url):
template = 'bonus.html'
elif url == 'oauth':
template = 'oauth.html'
elif url == 'vm':
template = 'vm.html'
else:
return HttpResponseNotFound('404')
# Temp
if 'vm' in request.GET:
template = 'vm.html'
return render(request, template)

Loading…
Cancel
Save