zzurc
02.05.2016, 00:29
Hallo erstmal.
Ich hatte heute beim morgendlichem Urinieren eine Idee:
Ein 'simples' kleines Quiz.
Ich werde hier ein Paar Codestückelchen(Lulz ;D) die vulnerable sind reinstellen. Aber auch URLs und alles Andere.
Ich bitte die Antworten/Ideen/Whatever´se(ich wieder ._.) nur per PM an mich zu senden. UND NICHT HIER REIN ZU SCHREIBEN!!!
Falls ihr Ideen habt für weitere Aufgaben, vielleicht etwas schwerere ;), dann PM an mich. Werde das hier so gut wie möglich up to date halten.
Fangen wir mal simple an :D
Antwortet einfach mit den Angriffen die möglich sein könnten. Wenn dir das zu leicht ist kannst du versuchen noch einen Fix zu finden ;).
Aufgabe 1:
<?php
if (isset($_GET['page'])){
include("pages/{$_GET['page']}");
}
?>
Aufgabe 2:
<?php
if (isset($_GET['file'])){
echo "<h3>Inhalt der Datei 'pages/{$_GET['file']}.txt'</h3>";
include("pages/{$_GET['file']}.txt");
}
?>
Aufgabe 3:
<script>
function prot() {
pass = prompt("Passwort eingeben", "password");
document.location.href="http://gesichert_durch_javascript.com/user/"+pass+".html";
}
</script>
Aufgabe 4:
http://example.com/foobar.html?arg=ROFLROFLROFL
So ... mehr (und möglichst schwerere)werden kommen, wahrscheinlich schon morgen :D, ...Habe jetzt grade keine Lust weiter zu schreiben da es schon recht spät ist. Falls ihr Typos bemerkt dann mir bitte melden ZzZzZz.
Nett wäre ein Feedback was ihr von meiner Idee hier haltet. ;)
Möglicherweise verpacke ich das dann später in eine kleine Website.
EDIT:
Erstmal danke für das Feedback. Da es aber ziemlich negativ war, habe ich mich entschlossen das Ganze lieber privat zu basteln und dann später hier zu updaten.
Ich persönlich finde meine Idee ganz nett, nur bin ich zu dumm richtig Fragen bzw. Aufgaben zu stellen.
Wer sich trotzdem für die Lücken interessiert. Hier sind 1 und 2 mit möglichem Fix:
1: File inclusion vulnerability
Hier sieht mal gleich: Alles lässt sich includen.
Beispielsweise mit ?page=/../../../../../../etc/passwd lassen sich Informationen des Servers aus der passwd datei auslesen.
Aber nicht nur das, es lässt sich auch beliebiger PHP-Code ausführen. Dazu muss der PHP-Code einfach als parameter
übergeben werden: ?page=<?php phpinfo(); ?> Da die meisten Server eine Log-File besitzen. Und in diese
auch die URL keinplan.de/fuckoff.php?page=<?php phpinfo(); ?> geschrieben wurde, kann der Angreifer durch
'includen' der Log-File diesen php-code ausführen. Die Log-File kann dabei vollgestopft mit anderem Müll sein, spielt
ja keine Rolle :)
Hier mal ein möglicher Fix:
<?php
$pages = scandir('pages');
unset($pages[0], $pages[1]);
if (isset($_GET['page']) && in_array($_GET['page'], $pages)){
include("pages/{$_GET['page']}");
}else{
echo 'Die Seite konnte nicht gefunden werden!'
?>
2: Null-Byte vulnerability
Diesmal könnte man denken es sei sicher, da nur TXT-Files included werden. Das täuscht.
Durch anhängen eines Nullbytes lässt sich das leicht umgehen.
Warum? ... Da wir alle wissen ist der PHP-Compiler in c geschrieben. Dort wird das
Ende eines Strings mit einem Nullbyte markiert.
Das hat zufolge das der PHP-Code die Endung '.txt' ganz einfach weglässt. FAIL!
Fix: Genau wie bei 1. adden wir eine Whitelist:
<?php
$pages = scandir('pages');
unset($pages[0], $pages[1]);
if (isset($_GET['file']) && in_array("{$_GET['file']).txt", $files)){
echo "<h3>Inhalt der Datei 'pages/{$_GET['file']}.txt'</h3>";
include("pages/{$_GET['file']}.txt");
}
?>
Ich hatte heute beim morgendlichem Urinieren eine Idee:
Ein 'simples' kleines Quiz.
Ich werde hier ein Paar Codestückelchen(Lulz ;D) die vulnerable sind reinstellen. Aber auch URLs und alles Andere.
Ich bitte die Antworten/Ideen/Whatever´se(ich wieder ._.) nur per PM an mich zu senden. UND NICHT HIER REIN ZU SCHREIBEN!!!
Falls ihr Ideen habt für weitere Aufgaben, vielleicht etwas schwerere ;), dann PM an mich. Werde das hier so gut wie möglich up to date halten.
Fangen wir mal simple an :D
Antwortet einfach mit den Angriffen die möglich sein könnten. Wenn dir das zu leicht ist kannst du versuchen noch einen Fix zu finden ;).
Aufgabe 1:
<?php
if (isset($_GET['page'])){
include("pages/{$_GET['page']}");
}
?>
Aufgabe 2:
<?php
if (isset($_GET['file'])){
echo "<h3>Inhalt der Datei 'pages/{$_GET['file']}.txt'</h3>";
include("pages/{$_GET['file']}.txt");
}
?>
Aufgabe 3:
<script>
function prot() {
pass = prompt("Passwort eingeben", "password");
document.location.href="http://gesichert_durch_javascript.com/user/"+pass+".html";
}
</script>
Aufgabe 4:
http://example.com/foobar.html?arg=ROFLROFLROFL
So ... mehr (und möglichst schwerere)werden kommen, wahrscheinlich schon morgen :D, ...Habe jetzt grade keine Lust weiter zu schreiben da es schon recht spät ist. Falls ihr Typos bemerkt dann mir bitte melden ZzZzZz.
Nett wäre ein Feedback was ihr von meiner Idee hier haltet. ;)
Möglicherweise verpacke ich das dann später in eine kleine Website.
EDIT:
Erstmal danke für das Feedback. Da es aber ziemlich negativ war, habe ich mich entschlossen das Ganze lieber privat zu basteln und dann später hier zu updaten.
Ich persönlich finde meine Idee ganz nett, nur bin ich zu dumm richtig Fragen bzw. Aufgaben zu stellen.
Wer sich trotzdem für die Lücken interessiert. Hier sind 1 und 2 mit möglichem Fix:
1: File inclusion vulnerability
Hier sieht mal gleich: Alles lässt sich includen.
Beispielsweise mit ?page=/../../../../../../etc/passwd lassen sich Informationen des Servers aus der passwd datei auslesen.
Aber nicht nur das, es lässt sich auch beliebiger PHP-Code ausführen. Dazu muss der PHP-Code einfach als parameter
übergeben werden: ?page=<?php phpinfo(); ?> Da die meisten Server eine Log-File besitzen. Und in diese
auch die URL keinplan.de/fuckoff.php?page=<?php phpinfo(); ?> geschrieben wurde, kann der Angreifer durch
'includen' der Log-File diesen php-code ausführen. Die Log-File kann dabei vollgestopft mit anderem Müll sein, spielt
ja keine Rolle :)
Hier mal ein möglicher Fix:
<?php
$pages = scandir('pages');
unset($pages[0], $pages[1]);
if (isset($_GET['page']) && in_array($_GET['page'], $pages)){
include("pages/{$_GET['page']}");
}else{
echo 'Die Seite konnte nicht gefunden werden!'
?>
2: Null-Byte vulnerability
Diesmal könnte man denken es sei sicher, da nur TXT-Files included werden. Das täuscht.
Durch anhängen eines Nullbytes lässt sich das leicht umgehen.
Warum? ... Da wir alle wissen ist der PHP-Compiler in c geschrieben. Dort wird das
Ende eines Strings mit einem Nullbyte markiert.
Das hat zufolge das der PHP-Code die Endung '.txt' ganz einfach weglässt. FAIL!
Fix: Genau wie bei 1. adden wir eine Whitelist:
<?php
$pages = scandir('pages');
unset($pages[0], $pages[1]);
if (isset($_GET['file']) && in_array("{$_GET['file']).txt", $files)){
echo "<h3>Inhalt der Datei 'pages/{$_GET['file']}.txt'</h3>";
include("pages/{$_GET['file']}.txt");
}
?>