Kreistagssitzung

Gestern war die Kreistagssitzung des neuen Kreises Mecklenburgische Seenplatte. Es gab auch ein paar interessante Entscheidungen. So wurde das Kennzeichen auf MSG (oder MST, so genau hat man das nicht verstanden) festgelegt. Auch der Antrag auf Live Streaming (im Antrag in Direktübertragung umbenannt) des Kreistages wurde genehmigt.

Die gestrige Kreistagssitzung

Die Barrierefreiheit war zu Teilen gesichert, so kam man mit einem Rollstuhl et cetera in die Mensa der Hochschule. Was mir gefehlt hat war ein Gebärdendolmetscher (wenn das Thema interessiert der sollte http://meinaugenschmaus.blogspot.de/ besuchen), aber hier kann man ja noch nachbessern. Beim Live tweeten kam ich auch irgendwann an die Limitation der Twitter API, deshalb ging es dann auf dem Account der Seenpiraten weiter. Zu Ende war die Veranstaltung gegen 21:45 Uhr.

Konsolenfenster unter Mono schließen

Möchte man unter .NET/Mono das Schließen einer Konsolenanwendung abfangen so kann man dies mit einigen Methoden lösen, wie zum Beispiel die Anwendung bestimmten pInvoke Techniken unter Windows. Allgemeiner kann man das ganze mit dem „CancelKeyPress“ Event gestalten was dann so aussieht:

Console.CancelKeyPress+=new ConsoleCancelEventHandler(Console_CancelKeyPress);
...
static void Console_CancelKeyPress(object sender, ConsoleCancelEventArgs e)
{
  WriteErrorToConsole("Programm wird abgebrochen...");
  e.Cancel=true; // Event abbrechen
}

PHP/CGI Sicherheitsproblem

Wie Heise gestern berichtete (http://www.heise.de/newsticker/meldung/Gefahr-durch-offene-PHP-Luecke-1567433.html) gibt es eine wunderschöne Sicherheitslücke im Bezug auf CGI und PHP. So führt der Aufruf:

http://localhost/index.php?-s

dazu das der Quellcode der Webseite ausgegeben wird. Das ist natürlich unpraktisch wenn dort Konfigurationsvariablen enthalten z.B. die Zugangsdaten für eine Datenbankverbindung. Zur Lösung des Problems gibt es drei Varianten:

  • PHP Version mit dem Bugfix einspielen
  • Rewrite Anweisung in die .htaccess
  • Wrapper welcher vor dem PHP-CGI aufgerufen wird

Die erste Variante scheidet aus, da der aktuelle Bugfix leicht umgangen werden kann. Die zweite Variante (einzutragen in eine „.htaccess“) sieht so aus:

RewriteEngine on
RewriteCond %{QUERY_STRING} ^[^=]*$
RewriteCond %{QUERY_STRING} %2d|\- [NC]
RewriteRule .? - [F,L]

Die dritte Variante setzt einen Wrapper vor den eigentlich Aufruf und filtert die entsprechenden Anweisungen heraus. Dazu ändert man in der „httpd.conf“ die Zeile:

Action  application/x-httpd-php /cgi-bin/php-cgi.exe

in

Action  application/x-httpd-php /cgi-bin/php-cgi-wrapper.exe

und startet den Apache Server neu. Der Quelltext des Wrappers sieht dabei so aus:

#include <process.h>

#define PHP_ORIG "php-cgi.exe"

int main(int argc, char **argv)
{
    if(argc>1) argv[1]=0;
    _execv(PHP_ORIG, argv);
}

Das ganze kann hier auch als fertiges Visual Studio Projekt oder gleich als ausführbare Datei heruntergeladen werden.

Weitere Informationen gibt es unter:
http://www.kb.cert.org/vuls/id/520827
http://eindbazen.net/2012/05/php-cgi-advisory-cve-2012-1823/
http://www.heise.de/newsticker/meldung/PHP-patcht-schnell-aber-nicht-gruendlich-1567906.html