2011-05-03T08:11:04 GwenDragonIch weiß nicht wie andere das Problem mit der Sicherheit sehen.
2011-05-03T08:11:04 GwenDragonWenn die Ausgabe von kseach.cgi so als PHP weiter gereicht werden, ist zu beachten, dass ksearch über Parameter und seltsame Ausgaben im HTML kein Einschleusen von Schadcode zulässt, der dann als PHP interpretiert werden könnte!
2011-05-03T09:10:36 clmsAber wenn ich es richtig verstanden habe, soll kseach.cgi ohnehin so
konfiguriert werden, dass es in den Suchergebnissen - und damit dem
Inhalt, den es selbst liefert - potentiellen PHP-Code rausfiltert.
Der PHP-Code wird nur für das Template und damit für den Rahmen um
den eigentlichen ksearch.cgi Output verwendet, wo man volle Kontrolle hat.
2011-05-03T10:08:53 biancaHab ich anders verstanden. ksearch.cgi ist - soweit ich das sehe - so gebaut, dass das Ergebnistemplate sofort an den Browser geht. Der Fragesteller möchte aber, dass es vor dem Browser noch durch den PHP Parser läuft, weil es PHP Code enthält.
Und GwenDragon gibt zu bedenken, dass möglicherweise die Ausgabe von ksearch.cgi ungewollt von diesem Parser als Code interpretiert und damit ausgeführt werden könnte.
<meta http-equiv="refresh" content="0; url=$redirect_url">
1
2
3
4
5
<?php
header("HTTP/1.1 301 Moved Permanently");
header("Location:/index.php");
exit;
?>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
# print $html; # finally print the HTML page # php-Template { use Digest::MD5 qw(md5_hex); my $t = time; my $dig = md5_hex($t . $html . $$); if (!-e "$ENV{DOCUMENT_ROOT}/kresult/") { mkdir("$ENV{DOCUMENT_ROOT}/kresult/"); } my $php_fname = "ks-$dig-$t.php"; my $outfh; open ($outfh, ">", "$ENV{DOCUMENT_ROOT}/kresult/$php_fname"); print $outfh $html; # finally print the HTML page # --- PHP-Datei löschen nach Anzeige? Dann Kommentar entfernen! print $outfh '<?php @unlink("$ENV{DOCUMENT_ROOT}/kresult/$php_fname"); ?>'; # --- close ($outfh); my $redirect_url = "/kresult/$php_fname"; print <<"HTML"; <html> <head> <meta http-equiv="refresh" content="0; url=$redirect_url"> </head> <body> <p>Suchergebnis unter <a href="$redirect_url">$redirect_url</a></p> </body> </html> HTML exit; } # /php-Template
2011-05-03T10:15:04 newperlerMuss ich jetzt doch mal selbst auf dem lokalen Server mit einem Testskript testen.Probleme:
1.
Auch nach Entfernung des Kommentars für die 'Löschzeile' werden die MD5.php-Dateien nicht gelöscht.
QuoteDummerweise schickt ksearch.cgi schon den HTTP-Header für die Webseite, dann kann nicht noch ein Redirect (wie du in PHP beschreibst) ausgegeben werden.3.
Durch die Weiterleitung via
blitzt die übergebende leere HTML-Seite kurz auf und bricht kurz das Layout. Gibt es da für Perl keine direkte Weitergabe? Für PHP nutzte ich so etwas:Code: (dl )<meta http-equiv="refresh" content="0; url=$redirect_url">Code: (dl )1
2
3
4
5<?php
header("HTTP/1.1 301 Moved Permanently");
header("Location:/index.php");
exit;
?>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
{ use Digest::MD5 qw(md5_hex); my $t = time; my $dig = md5_hex($t . $html . $$); if (!-e "$ENV{DOCUMENT_ROOT}/kresult/") { mkdir("$ENV{DOCUMENT_ROOT}/kresult/"); } my $php_fname = "ks-$dig-$t.php"; my $outfh; open ($outfh, ">", "$ENV{DOCUMENT_ROOT}/kresult/$php_fname"); print $outfh $html; # finally print the HTML page # --- PHP-Datei löschen nach Anzeige? Dann Kommentar entfernen! print $outfh q|<?php @unlink("| . qq|$ENV{DOCUMENT_ROOT}/kresult/$php_fname| . q|"); ?>|; # --- close ($outfh); my $redirect_url = "/kresult/$php_fname"; print <<"HTML"; <html> <head> <meta http-equiv="refresh" content="0; url=$redirect_url"> </head> </html> HTML exit; }
Guest werDa ist was Wahres dran, habe gerade mal nachJemand könnte ja mal nach <?PHP echo("HACKER")?> oder ähnliches suchen...
<?php echo 'test'; ?>
1
2
<table border="0" cellpadding="5" cellspacing="2" bgcolor="#00B852" width="80%" align="center">
<tr><td> Ergebnisse <strong>1-10</strong> von <strong>13 (1267KB)</strong> für die Suche nach "<strong><?php echo 'test'; ?></strong>" mit insgesamt <strong>21</strong> Treffern <br />
<script>alert('BOOOOOO! Hijacked!')</script>
<script>window.location='http://example.org'</script>
1 2
$html =~ s/<!--\s*cgi:\s*(\S+?)\s*-->/$h{$1}/gis; print $html; # finally print the HTML page
<input type="text" size="35" name="<!--cgi: input_name-->" value="<!--cgi: query_str-->" onfocus="select(this);" />
2011-05-03T12:50:24 GwenDragon//EDIT: Habe dem Autor per Mail das Problem geschildert.
Quotebedeutet schließlich dass David Kim alle Recht innehat!# KSearch v1.6
# Copyright (C) 2011 David Kim (www.kscripts.com)
# All Rights Reserved.
2011-05-03T12:50:24 GwenDragon//EDIT: Habe dem Autor per Mail das Problem geschildert.
1
2
3
4
5
6
Version 1.6 Added feature to prevent searching of text between <!--nosearch--> tags.
Changed recommended default file permissions for database folder and files.
Changed default setting for Use DBM module to "0".
Changed default Show Matches to "10" in configuration.pl
Removed image links at bottom of Ksearch HTML pages.
Added script filters to reduce the risk of XSS.