Improved phrasing, hints and assignments for directory traversal attacks

Paul Wagener 11 years ago
parent f08a99806e
commit 3a6e8682df
  1. BIN
      static/img/imgr.png
  2. BIN
      static/img/parent_dir.png
  3. 5
      static/js/quiz.js
  4. 41
      templates/path.html

Binary file not shown.

After

Width:  |  Height:  |  Size: 232 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

@ -29,5 +29,8 @@ $(function() {
}
}
// Hints
$('.hint').replaceWith(function() {
return '<div><a href="#" onclick="$(this).next().slideToggle(); return false;">Bekijk hint</a>'+$(this).hide()[0].outerHTML+'</div>';
});
});

@ -3,17 +3,22 @@
{% block content %}
<h1>Insecure Direct Object References</h1>
<img src="/static/img/imgr.png">
<h2>Image site</h2>
<p>Ons nieuwe doelwit is de site "imgr", een populaire website waar vaak meme plaatjes naar worden geupload. Er is geen database dus we kunnen geen SQL injection uitvoeren, en cross-site scripting is ook geen mogelijkheid meer op deze site (...toch?).</p>
<p>Voor deze opdracht moet je je virtual machine <b>twee keer</b> opnieuw opstarten! Het is belangrijk dat je dit twee keer doet (1x zodat de VM met git zichzelf kan updaten en 1x zodat de VM het nieuwe boot script kan uit te voeren). Anders heb je niet het geheime bestandje op de VM staan... Je kan ook een geüpdatete VM van BlackBoard downloaden.</p>
<p>Ons nieuwe doelwit is de site "imgr", een populaire website waar vaak meme plaatjes naar worden geüpload. Er is geen database dus we kunnen geen SQL injection uitvoeren, en cross-site scripting is ook geen mogelijkheid meer op deze site (...toch?).</p>
<p>We zijn geïnteresseerd in de inhoud van een bestandje wat staat in de VM: "/etc/geheim.txt". Hack de website en vind uit wat de inhoud van dit bestandje is.</p>
<p><strong>Hint:</strong> het lijkt er op dat je niet alleen plaatjes kan uploaden...</p>
<p class="hint"><strong>Hint:</strong> het lijkt er op dat je niet alleen plaatjes kan uploaden...</p>
<p><strong>Hint:</strong> Zoek een manier om een eigen php script te uploaden</p>
<p class="hint"><strong>Hint:</strong> Zoek een manier om een eigen php script te uploaden en te runnen</p>
<div class="question">
<span class="question-string">Wat staat er in /etc/geheim.txt?</span>
<span class="question-string">Wat staat er in /etc/geheim.txt? (Het is een supersecret TODO item)</span>
<div class="points"><span class="question-points">5</span> punten</div>
<input class="question-input" name="answer_path_secret" value="{{ answers.answer_path_secret }}"></input>
</div>
@ -26,8 +31,10 @@
<h2>Image site 2</h2>
<p>Ga naar image site 2. De site heeft het probleem opgelost door de bestanden niet meer naar een publieke map te schrijven.</p>
<h2>Image 2</h2>
<p>Ga naar "Image 2". De site heeft het probleem opgelost door de upload map te verplaatsen naar een map die niet via de webserver bereikbaar is. De plaatjes worden nu via een speciaal image.php (<a href="https://github.com/Avans/Security-Workshop/blob/master/image/image.php">source</a>) bestandje geinclude. Daarmee heeft de site ook weer een enorm security probleem geïntroduceerd! </p>
<p class="hint">Met een paar extra <code>../</code> kan je file_get_contents() een hele hoop bestanden laten uitlezen!</p>
<div class="question">
<span class="question-string">Met welke URL kan je nu rechtstreeks de inhoud van /etc/geheim.txt uitlezen?</span>
@ -35,7 +42,7 @@
<input class="question-input" name="answer_path_image_url" value="{{ answers.answer_path_image_url }}">
</div>
<p>Verander image.php in image_check_prefix.php. In dit bestand is een extra beveiliging die checkt of het pad begint met de map 'uploads'</p>
<p>Verander image.php in image_check_prefix.php (<a href="https://github.com/Avans/Security-Workshop/blob/master/image/image_check_prefix.php">source</a>) . In dit bestand is een extra beveiliging die checkt of het pad begint met de map 'uploads'</p>
<div class="question">
<span class="question-string">Met welke URL kan je met dit meer 'beveiligde' script de inhoud van /etc/geheim.txt uitlezen?</span>
@ -43,23 +50,33 @@
<input class="question-input" name="answer_path_image_url_prefix" value="{{ answers.answer_path_image_url_prefix }}">
</div>
<p>Verander de bestandsnaam in image_remove_traversal.php, dit script heeft nu een beveiliging die alle '../' uit de string verwijderd.</p>
<p>Verander de bestandsnaam in image_remove_traversal.php (<a href="https://github.com/Avans/Security-Workshop/blob/master/image/image_remove_traversal.php">source</a>) , dit script heeft nu een beveiliging die alle '../' uit de string verwijderd zodat je niet meer ../ in de URL kan gebruiken.</p>
<p class="hint">Weet je nog hoe je deze beveiliging ongedaan hebt gemaakt bij die website die alle SELECT en UNION uit de URL filterde?</p>
<div class="question">
<span class="question-string">Met welke URL kan je met het image_remove_traversal.php script de inhoud van /etc/geheim.txt uitlezen?</span>
<span class="question-string">Met welke URL kan je via het image_remove_traversal.php script de inhoud van /etc/geheim.txt uitlezen?</span>
<div class="points"><span class="question-points">10</span> punten</div>
<input class="question-input" name="answer_path_image_url_remove_traversal" value="{{ answers.answer_path_image_url_remove_traversal }}">
</div>
<p>Zoek op internet naar 'Directory traversal' en zoek uit wat voor technieken er nog meer mogelijk zijn.</p>
<div class="question">
<span class="question-string">Verbeter het image.php script zodat dit soort aanvallen niet meer mogelijk zijn</span>
<span class="question-string">Beschrijf hoe jij de site zou programmeren zodat alle directory traversal aanvallen niet meer mogelijk zijn.</span>
<div class="points"><span class="question-points">15</span> punten</div>
<textarea class="question-input" name="answer_path_image_fix">{{ answers.answer_path_image_fix }}</textarea>
</div>
<h2>Image site 3</h2>
<img src="/static/img/parent_dir.png" class="center-block">
<h2>Image 3</h2>
<p>Ga naar "Image 3". imgr heeft hun site uitgebreid met extra pagina's (<a href="https://github.com/Avans/Security-Workshop/blob/master/image/index_more_pages.php">source</a>). De afbeeldingen hebben ze maar weggehaald omdat daar teveel security problemen mee waren.</p>
<p class="hint">imgr zijn bezig met het maken van een inlogpagina en een registreren pagina.</p>
<p>Ga naar image site 3. imgr heeft hun site uitgebreid met extra pagina's. De afbeeldingen hebben ze maar weggehaald omdat er teveel security problemen mee waren.</p>
<p class="hint">Heb je de broncode al bekeken? Die regel met <code>include()</code> ziet er interessant uit...</p>
<div class="question">
<span class="question-string">Beschrijf hoe je met deze site de inhoud van /etc/geheim.txt kan achterhalen</span>

Loading…
Cancel
Save