Archiv

Archiv für die Kategorie ‘PHP’

Enjoy FloodBot based on OverKill… not in my house!

13. Dezember 2009

Vor kurzem war die Auslastung eines Web-Servers extrem hoch, so auch heute den ganzen Tag. Also machte ich mich auf die Suche nach der Ursache und stolperte über eine lustige Sicherheitslücke im “phpMyAdmin” worüber sich ein FloodBot einschlich. Er nutze eine Datei worüber er schön den Bot mit passender Berechtigung herunterlud und ausführte. Ich war doch ein wenig verwundert und probierte das gleich an einem Testsystem aus.

Jo! Dickes Ding…

Schwupps, war der Bot drauf und startete. Das sah dann per “ps aux” so aus:

bot1Den genauen Befehl gebe ich hier mal nicht Preis. Wer weiß wer was damit bei anderen anrichten möchte.

 

Wow!… immer noch erstaunt :-) .

Die Datei udp.pl mithilfe der Lücke und “sh -c perl” über die config.inc.php von phpMyAdmin einfach gestartet.

Irre!

Die Lücke ist so riesig, dass man über ein paar witzige Handgriffe den Server darüber so gut wie steuern kann (Vorausgesetzt man hat bei der Rechtevergabe geschlampt!). Mit Aufruf: 
http://…/php_my_admin/config/config.inc.php?p=phpinfo(); kann man sich schön die Komplettinfo zum Server holen oder mit http://…/php_my_admin/config/config.inc.php?c=ps%20aux den Inhalt des tmp-Ordners. Dieser war in diesem Fall angefüllt mit dem BOT.

bot2

Mehr poste ich nicht, animiert nur zu wilden Gedanken :-) . Habs aber gleich auf befreundeten Systemen mal ausgetestet und siehe da, viele haben die Lücke nicht geschlossen. Denjenigen habe ich mal schnell ne Mail geschrieben.

 

Schnell mal mit “last -i” nach komischen Logins gefahndet, dann noch known_hosts und ssh-key’s überprüft und die /etc/passwd nach lustigen neuen Usern mit UIDs “0″ durchsucht. War aber nix ungewöhnliches. Glück gehabt. Schnell phpMyAdmin aktualisiert, die tmp-Verzeichnisse geleert, und restliche Komponenten wie php, apache usw. aktualisiert und Server neu gestartet (Windows angewohnheit :-) ).
Nun noch mit “apt-get rkhunter install” nen RootKitHunter installiert und das System durchgecheckt und mit “netstat -nap” und “netstat -tulpe” die Ports gecheckt … Und auch alles in Ordnung.
Anschließend den eaccelerator neu kompiliert und schwupps… Livesystem nach 3 Stunden wieder clean. Downtime… summiert ca. 5 min… klasse Job! Blog schreiben 30 min :-) . Schöner Sonntagabend.

Anschließend Serverseitig noch weitere Möglichkeiten mit ein paar Tricks unterbunden. Alles soll man nicht verraten :-) .

Was ich daraus gelernt habe:

  1. Öfters mal ins Error und Accesslog vom Apachen schauen,
  2. apt-get upgrade/update/install sollte ein Freund werden,
  3. … meine Linux-Kenntnisse sind noch gut :-)

Wollen wir mal schauen, ob das alles war. Der Server bleibt die Tage unter Beobachtung.

Linux, PHP , , , ,

Sommerzeit/Winterzeit in Wordpress

30. Mai 2009

… echt schwach, dass man die Zeitumstellung in den älteren und in der aktuellen 2.7.1 WP Version von Hand eintragen muss.
Dank Wordpress 2.8 soll das nun aber automatisch gehen!

SUPER!

Allgemein, PHP, Projekte ,

SEO-freundliche URL’s version 2

6. Oktober 2008

vor einigen Monaten habe ich eine Version gepostet, die für die ersten Zwecke ganz gut war, nun hier die zweite Version, die noch ein paar Sonderzeichen mehr umsetzt und auch ein wenig schneller ist.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
/** 
 * Wandelt einen String in einen SEO-freundlichen String um 
 * 
 * @copyright 2008 
 * @version 0.2 
 * 
 * @param string $string 
 * @return string 
 */ 
function SEOfriendlyURL($string){ 
    $string = str_replace("ä", "ae", $string); 
    $string = str_replace("ö", "oe", $string); 
    $string = str_replace("ü", "ue", $string); 
    $string = str_replace("ß", "ss", $string); 
    $string = preg_replace("`[.*]`U","",$string); 
    $string = preg_replace('`&(amp;)?#?[a-z0-9]+;`i','-',$string); 
    $string = htmlentities($string, ENT_COMPAT, 'utf-8'); 
    $string = preg_replace( "`&([a-z])(acute|uml|circ|grave|ring|cedil|slash|tilde|caron|lig|quot|rsquo);`i","1", $string ); 
    $string = preg_replace( array("`[^a-z0-9]`i","`[-]+`") , "-", $string);     
 
    return strtolower(trim($string, '-'));  
 
}

Arbeit, PHP, SEO ,

Datumsvergleich in PHP superschnell und superkurz

22. Juli 2008

Man lernt nie aus…

Ich habe es mir zur Angewohnheit gemacht, dass wenn ich ein Datum vergleichen muss, dass ich dieses in das UNIXTIME-Format umwandle. Vorteil des Ganzen ist, dass man schön den Integer-Wert mit “>|<|=” (und Kombinationen daraus) vergleichen kann.
Ich habe es über Jahre recht umständlich gemacht indem ich mktime u.ä. dafür benutzt habe. Heute habe ich durch Zufall die Funktion “strtotime” ergooglet :-) .

Fazit: Toll :-) damit erspare ich mir zwar bloß 2-3 Zeilen Code ist aber bedeutend schneller das Ganze.

Link: http://de2.php.net/manual/de/function.strtotime.php

Beschreibung:
(PHP 4, PHP 5)

strtotime — Wandelt ein beliebiges Datum (englisches Format) in einen UNIX-Zeitstempel (Timestamp) um.
int strtotime ( string $time [, int $now ] )

Diese Funktion erwartet einen String mit einem Datum im englischen Format und versucht diesen in einen Unix-Timestamp umzuwandeln. Versucht wird dies relativ zu dem Timestamp, den Sie mit now angeben. Fehlt diese Angabe, wird die aktuelle Zeit angenommen. Schlägt die Umwandlung fehl, wird -1 zurückgegeben.

Die Funktion strtotime() verhält sich gemäß der Syntax von GNU Date. Daher sollten Sie einen Blick in die GNU Manual Seite » Date Input Formats werfen. Dort wird die gültige Syntax für time beschrieben.

Arbeit, PHP

generieren von SEO-freundlichen URLs in PHP

12. Juli 2007

Habe mal eine Funktion geschrieben, die es ermöglicht einen string in einen SEO-freundlichen string zu konvertieren:

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
$test[] = 'Über sieben Brücken mußt du gehen';
$test[] = 'Ich & mein Pferd - [Bei dir zu Hause]';
 
/** 
 * Wandelt einen String in einen SEO-freundlichen String um 
 * 
 * @copyright 2007 
 * @version 0.1 alpha 
 * 
 * @param string $string 
 * @return string 
 */ 
function SEOfriendlyURL ( $string ) {
    $string = strtolower($string);
 
    $search =  Array(' ', 'ß', 'ö', 'ä', 'ü', 'Ö', 'Ä', 'Ü', '&');
    $replace = Array('-','ss','oe','ae','ue','oe','ae','ue', 'und');
    $string = str_replace($search, $replace, $string);
 
    $string = preg_replace('~[^w-]~','-', $string);
    $string = preg_replace('~(-){2,}~','-', $string);
 
    $string = trim($string, '-').'.html';
 
return $string;
}
 
echo (SEOfriendlyURL($test[0]).'<br />');
echo (SEOfriendlyURL($test[1]).'<br />');

Viel Spaß damit!

PHP, SEO