Sicherheitssoftware: CTXtra

Started by Nordin, April 09, 2007, 11:43:54 AM

Previous topic - Next topic

Christian Land

Irgendwann müssen wir doch mal was zusammen auf die Beine stellen, medi ;D

@Nordin: Sorry, aber da ich momentan kein SMF am Laufen habe und mich auch nicht mehr wirklich fürs SMF-Modding interessiere, kann medi Dir vermutlich besser helfen.

Nordin

@mediman
Super!
...es gibt ein update für plesk? *gleichmal nachguck*

@SnowCrash
ok ich dank dir trotzdem
CTXtra v1.5
Schutz vor Exploits wie SQL Injections, Wurmattacken und SPAM
www.ctxtra.de

mediman

Quote from: Nordin on April 11, 2007, 07:27:28 AM
@mediman
Super!
...es gibt ein update für plesk? *gleichmal nachguck*

@SnowCrash
ok ich dank dir trotzdem

[offtopic]Jo, aber unbedingt per Console installen, also per /usr/local/psa/admin/bin und dort die ./autoinstaller starten, sonst gibts Aua, da die inf3 Müll ist.
Unbedingt auch mal bei Atomicturtle reinschauen und gucken wie der die PHP 5.2.1 eingebaut hat, auf keinen Fall die 5.1.2 oder noch älter weiter nutzen (Sessionbugs siehe MOPB).

Bei mir läuft jetzt Plesk 8.1.1 (neues Release) mit PHP 5.2.1 und MySQL5 (Suhosin Patch und Module) zuzüglich ffmepg-php (phpize) und ffmpeg sowie der Flashmetainjector als RubyonRails-Version und Apache2 mit modsecurity2 mit Console (Lizenz für 3 kostenfreie Sensoren sind grad erhältlich).[/offtopic]
My Projects: http://ticker-oase.de 
Please do not PM me with support requests.

Nordin

[offtopic]ffmpeg-php? na das rockt doch bin auf der suche nach nen guten Provider der das erlaubt... und optional FSK18 (man weiß ja nie was man für filme bekommt *g*) hab da schon ne verdammt gute seite gestrickt (is noch nicht online) und dafür such ich nen guten provider der FSK18 und ffmpeg unterstützt.[/offtopic]
CTXtra v1.5
Schutz vor Exploits wie SQL Injections, Wurmattacken und SPAM
www.ctxtra.de

mediman

Quote from: Nordin on April 11, 2007, 09:41:37 AM
[offtopic]ffmpeg-php? na das rockt doch bin auf der suche nach nen guten Provider der das erlaubt... und optional FSK18 (man weiß ja nie was man für filme bekommt *g*) hab da schon ne verdammt gute seite gestrickt (is noch nicht online) und dafür such ich nen guten provider der FSK18 und ffmpeg unterstützt.[/offtopic]

ich hab eigene server, da erlaub ich mir sowas. ;)
so du plesk hast, kannste doch ffmpeg einschrauben ???
ffmpeg-php ist ja nur der oop-zugriff auf ffmpeg.
fmmpeg ist ja auch ned das problem, was du brauchst ist ein vernünftiger upload und wenns geht red5 oder sowas fürs streamen der flv´s.
My Projects: http://ticker-oase.de 
Please do not PM me with support requests.

Nordin

hmm richtig... ich komm später mal wieder drauf zurück...

was ich aber erstmal fertig machen will ist mein Mod *g* brauch ich eine vernünftige navi ;)
CTXtra v1.5
Schutz vor Exploits wie SQL Injections, Wurmattacken und SPAM
www.ctxtra.de

aalfred

Hy erstmal Coole Sache was ihr hier macht. Der SMF Cracker Tracker Xtra ist auf mein SMF 1.1.2 und Tiny Portal am laufen, nur wie mache ich einen htaccess - Passwortschutz. Bitte um Hilfe

Gruss Andreas

Nordin

Also der .htaccess ist wichtig! Da sonst die ct_log.txt aufgerufen werden kann und alle logs sichtbar sind.

Hier ist ein guter htaccess generator:
http://www.ekiwi.de/tools/htaccess/index.php

Ich werde aber mal gucken ob ich was passendes mit einbauen kann... damit das einfacher wird.
CTXtra v1.5
Schutz vor Exploits wie SQL Injections, Wurmattacken und SPAM
www.ctxtra.de

aalfred

 ??? wuff cooler generator aber was muss darein ?

Nicht Lachen bin A

Gruss Andreas

mediman

wir sollten, nachdem template problem die loggerei in die db verlagern.

mediman
My Projects: http://ticker-oase.de 
Please do not PM me with support requests.


Nordin

nee der meinung bin ich nicht...

eine DB Anbindung würde die Funktion töten, denn dann erzeugst bei einer Attacke ja wieder DB Last, und gerade das soll der smfCTracker ja vermeiden.

Könnte ich sicher in wenigen minuten scripten + autoinstaller.... aber das ist ja nicht sinn und zweck der sache ;)

Ich werd mir als nächstes mal die registrierung unter die lupe nehmen warum (wie hier: http://www.simplemachines.org/community/index.php?topic=163991.0) sich angeblich bots reggen können.. sofern sie es nicht wirklich über eine sql injection passiert ist...
CTXtra v1.5
Schutz vor Exploits wie SQL Injections, Wurmattacken und SPAM
www.ctxtra.de

mediman

Quote from: Nordin on April 11, 2007, 09:22:12 PM
nee der meinung bin ich nicht...

eine DB Anbindung würde die Funktion töten, denn dann erzeugst bei einer Attacke ja wieder DB Last, und gerade das soll der smfCTracker ja vermeiden.

Könnte ich sicher in wenigen minuten scripten + autoinstaller.... aber das ist ja nicht sinn und zweck der sache ;)

Ich werd mir als nächstes mal die registrierung unter die lupe nehmen warum (wie hier: http://www.simplemachines.org/community/index.php?topic=163991.0) sich angeblich bots reggen können.. sofern sie es nicht wirklich über eine sql injection passiert ist...

Das Schreiben in Files erzeugt um Klassen mehr Last. Wo verhindertst du mit Files einen DoS, denn du mit DB hättest? Angriffe laufen i.d.R. über 3000 - 5000 Abfragen, das tut jede DB locker weg. 3000-5000 Dateischreiberein dagegen töten jeden Server.

Der Angriff, den du meinst ist wohl über eine Backdoorscript (c99-Shell oder ähnliches) passiert.

Die Registrierung ist, so man ein sicheres PHP verwendet, zunächst sicher.
My Projects: http://ticker-oase.de 
Please do not PM me with support requests.

Nordin

Auf cback.de hat der admin zum stand alone Ctracker folgendes geschrieben:
QuoteIch habe hier gemerkt das einfache Dateizugriffe zum verarbeiten der Logfiles für den Server sogar bei gravierenden Attacken die effizienteste und schnellste Variante sind.

was soll ich jetzt glauben *g* ??

Ich bin gern bereit die logs in eine DB schreiben zu lassen - kein Problem. Nur muss ich wissen was ist wirklich besser ist.
CTXtra v1.5
Schutz vor Exploits wie SQL Injections, Wurmattacken und SPAM
www.ctxtra.de

mediman

Quote from: Nordin on April 12, 2007, 07:24:04 AM
Auf cback.de hat der admin zum stand alone Ctracker folgendes geschrieben:
QuoteIch habe hier gemerkt das einfache Dateizugriffe zum verarbeiten der Logfiles für den Server sogar bei gravierenden Attacken die effizienteste und schnellste Variante sind.

was soll ich jetzt glauben *g* ??

Ich bin gern bereit die logs in eine DB schreiben zu lassen - kein Problem. Nur muss ich wissen was ist wirklich besser ist.

Was macht denn ein RDBMS? Genau, es schreibt Daten in Files, genau wie dein Flatfile Dingens.
Nur ist das RDBMS optimiert auf konkurrierende Zugriffe, ein Flatfilesystem muss dass erst durch gute Programmierung erhalten.
Über ein Dateiverriegelungsverfahren (flock() http://de2.php.net/manual/de/function.flock.php ) kann man ein bisschen das Handling bei extrem vielen gleichzeitigen Zugriffen auf eine Datei abfedern, aber es kommt nicht annähnernd an die Möglichkeiten einer DB ran.
Wenn ein Angriff über ein Script erfolgt, dann kann das u.U. mehrere tausende Zugriffe pro Sekunde bedeuten.
I.d.R. flockt dein Skript dann wie blöd und du hast 'ne Serverlast jenseits von Gut und Böse. D.h. du crackst dich selber. Aus dem u.U. verkraftbaren URL-Injectionsversuchen wird ein mittelprächtiger DoS.

mediman
My Projects: http://ticker-oase.de 
Please do not PM me with support requests.

Nordin

Ok das ist ein Argument *g* soweit hab ich nicht gedacht  :-[

ok dann werd ich mir mal gedanken machen wie ich es in die DB integrieren kann.
CTXtra v1.5
Schutz vor Exploits wie SQL Injections, Wurmattacken und SPAM
www.ctxtra.de

Nordin

So alles wird jetzt säuberlich in die DB geloggt ;)
Zum nächsten Update wird auch die Installation und das Update vereinfacht sein.

Und zum Thema SPAM hab ich auch schon was gestrickt! (grund dafür war das ich ein besuch hatte siehe screen im anhang)

Ich hab eine Art Badwordfilter eingebaut... der einen Beitrag für Mitglieder und Gäste nicht anzeigt sofern er von einem Gast erstellt wurde und ein böses wort oder eine unerwünschte url beinhält.

Für Admins und GlobalMods ist der SPAM Beitrag mit einen roten Rahmen gekenzeichnet.

Die Badwords können im Adminbereich unter dem SMF CTracker eingetragen werden. Die Beiträge können auch bei bedarf freigegeben werden.

Ach ja optional versuch ich noch den Post des BOTS vorher abzufangen und zuloggen... mal gucken.

Das ganze wird ca. in einer Woche zum download bereitstehen. Je nachdem wie ich zeit habe.
CTXtra v1.5
Schutz vor Exploits wie SQL Injections, Wurmattacken und SPAM
www.ctxtra.de

mediman

ich schau es mir mal an.

im moment werden die aktuellen angriffe auf smf foren mit deinem script weder geloggt noch verhindert.

ich habe alle mir bekannten backdoorphp (im moment 8 an der zahl) scripte auf dein script angesetzt. jedesmal mit vollen erfolg.

das liegt vornehmlich daran, dass dein script war smf dateien schüzt, aber reguläre aufrufe von z.b. headergefakten jpgs links liegen lässt.

der schutz scheint als includete php version vollkommen ins leere zu laufen.

sinn macht wohl nur eine .htaccess der global alle verzeichnisse des smf abdeckt und auch die header + extensions prüft.

hast du extra queries angelegt für die dbloggerei? wie schützt du die queries? werden die angriffe in ein array geschmissen oder jeder einzelne per insert abgesetzt?

mediman
My Projects: http://ticker-oase.de 
Please do not PM me with support requests.

Nordin

Also momentan Sieht das Script, welches die logs vornimmt un die SQL Injects abwehren soll so aus:

Geschützt hab ich das query mit mysql_escape_string() und addslashes()

Ich hoffe das ist soweit in ordnung? Ich bin dir aber für jede Hilfe verdammt dankbar!

Quote<?php

// Cracker Tracker Protection System
// Created by: Christian Knerr - www.cback.de
// phpBB Users: Please use our complete phpBB2 Mod!
// Version: 2.0.0
//
// License: GPL
//

//
// optimized by Nordin
// http://www.wupmedia.de/ctracker
//

   $wormprotector = array('chr(', 'chr=', 'chr%20', '%20chr', 'wget%20', '%20wget', 'wget(',
                'cmd=', '%20cmd', 'cmd%20', 'rush=', '%20rush', 'rush%20',
                   'union%20', '%20union', 'union(', 'union=', 'echr(', '%20echr', 'echr%20', 'echr=',
                   'esystem(', 'esystem%20', 'cp%20', '%20cp', 'cp(', 'mdir%20', '%20mdir', 'mdir(',
                   'mcd%20', 'mrd%20', 'rm%20', '%20mcd', '%20mrd', '%20rm',
                   'mcd(', 'mrd(', 'rm(', 'mcd=', 'mrd=', 'mv%20', 'rmdir%20', 'mv(', 'rmdir(',
                   'chmod(', 'chmod%20', '%20chmod', 'chmod(', 'chmod=', 'chown%20', 'chgrp%20', 'chown(', 'chgrp(',
                   'locate%20', 'grep%20', 'locate(', 'grep(', 'diff%20', 'kill%20', 'kill(', 'killall',
                   'passwd%20', '%20passwd', 'passwd(', 'telnet%20', 'vi(', 'vi%20',
                   'insert%20into', 'select%20', 'nigga(', '%20nigga', 'nigga%20', 'fopen', 'fwrite', '%20like', 'like%20',
                   '$_request', '$_get', '$request', '$get', '.system', 'HTTP_PHP', '&aim', '%20getenv', 'getenv%20',
                   'new_password', '&icq','/etc/password','/etc/shadow', '/etc/groups', '/etc/gshadow',
                   'HTTP_USER_AGENT', 'HTTP_HOST', '/bin/ps', 'wget%20', 'uname\x20-a', '/usr/bin/id',
                   '/bin/echo', '/bin/kill', '/bin/', '/chgrp', '/chown', '/usr/bin', 'g\+\+', 'bin/python',
                   'bin/tclsh', 'bin/nasm', 'perl%20', 'traceroute%20', 'ping%20', '.pl', '/usr/X11R6/bin/xterm', 'lsof%20',
                   '/bin/mail', '.conf', 'motd%20', 'HTTP/1.', '.inc.php', 'config.php', 'cgi-', '.eml',
                   'file\://', 'window.open', '<SCRIPT>', 'javascript\://','img src', 'img%20src','.jsp','ftp.exe',
                   'xp_enumdsn', 'xp_availablemedia', 'xp_filelist', 'xp_cmdshell', 'nc.exe', '.htpasswd',
                   'servlet', '/etc/passwd', 'wwwacl', '~root', '~ftp', '.js', '.jsp', 'admin_', '.history',
                   'bash_history', '.bash_history', '~nobody', 'server-info', 'server-status', 'reboot%20', 'halt%20',
                   'powerdown%20', '/home/ftp', '/home/www', 'secure_site, ok', 'chunked', 'org.apache', '/servlet/con',
                   '<script', '/robot.txt' ,'/perl' ,'mod_gzip_status', 'db_mysql.inc', '.inc', 'select%20from',
                   'select from', 'drop%20', '.system', 'getenv', 'http_', '_php', 'php_', 'phpinfo()', '<?php', '?>', 'sql=');

   $cracktrack   = $_SERVER['QUERY_STRING'];

   // Thanks at SnowCrash from SMF (german)
   while (rawurldecode($cracktrack) != $cracktrack)
      $cracktrack   = rawurldecode($cracktrack);

   $dummy      = strtolower($cracktrack);
   $cracktrack   = $dummy;
   // ---

   $checkworm  = str_replace($wormprotector, '*', $cracktrack);

     if ($checkworm != $dummy) {
       $ct_remote_addr     = $_SERVER['REMOTE_ADDR'];
      $ct_user_agent      = $_SERVER['HTTP_USER_AGENT'];
      $ct_http_reffrer    = $_SERVER['HTTP_REFERER'];
      $ct_content_type    = $_SERVER['CONTENT_TYPE'];
      $ct_http_cookie     = urldecode($_SERVER['HTTP_COOKIE']);
      $ct_server_rpotocol = $_SERVER['SERVER_PROTOCOL'];
      $ct_request_method  = $_SERVER['REQUEST_METHOD'];
      $ct_query_string    = urldecode($_SERVER['QUERY_STRING']);
      $ct_request_uri     = $_SERVER['REQUEST_URI'];

      ######################
      ### Angriff loggen ###
      ######################
      include("Settings.php");
      // DB Connection
      $db_server = mysql_connect($db_server, $db_user, $db_passwd);
      mysql_select_db($db_name, $db_server);

      mysql_query("INSERT INTO ".$db_prefix."ctxtra_log_url_attacks (
         id, timestamp, remote_addr, user_agent, http_reffrer, content_type, http_cookie, server_rpotocol, request_method, query_string, request_uri) VALUES (
         '', '".addslashes((int)time())."', '".mysql_escape_string(addslashes($ct_remote_addr))."', '".mysql_escape_string(addslashes($ct_user_agent))."', '".mysql_escape_string(addslashes($ct_http_reffrer))."', '".mysql_escape_string(addslashes($ct_content_type))."', '".mysql_escape_string(($ct_http_cookie))."', '".mysql_escape_string(addslashes($ct_server_rpotocol))."', '".mysql_escape_string(addslashes($ct_request_method))."', '".mysql_escape_string(addslashes($ct_query_string))."', '".mysql_escape_string(addslashes($ct_request_uri))."'
      );", $db_server) or die(mysql_error());
      ######################
      ### Angriff loggen ###
      ######################

      $ct_counter = mysql_query("SELECT * FROM `".$db_prefix."ctxtra_log_url_attacks`");
      $ct_counter = mysql_num_rows($ct_counter);
      mysql_close ($db_server);

      // Script abbrechen und Meldung ausgeben
      die( '<center>
         <table style="width:600px; height:200px; border:1px solid #999999; background-color:#E7E7E7" cellspacing="0" cellpadding="0">
           <tr>
             <td valign="middle" align="left">
                 <table width="98%">
                   <tr>         
                     <td style="text-align:center; height:150px; width:150px; vertical-align:top; background-image: url(./ctracker/images/achtung.jpg); background-repeat:no-repeat;">
                 </td>
                     <td style="text-align:middel; height:150px; vertical-align:middle;">
                      <span style="font-size:15px; color:#ff0000; font-weight:bold; font-family:verdana,arial">
                         '.$ct_counter.'. Angriff geblockt!<br />
                         <br />
                     Du hast versucht unsere Seite zu cracken!<br />
                         Deine Daten wurden geloggt und gemeldet!
                 </td>
                   </tr>
                 </table>
               </td>
             </tr>
           </table>
         </center>');
    }

?>
CTXtra v1.5
Schutz vor Exploits wie SQL Injections, Wurmattacken und SPAM
www.ctxtra.de

mediman

Lass uns heute abend mal evalueiren, wie wir den schutz etwas aufpäppeln können.
ich geb dir mal per pn eine chatadresse, wo wir die sache mal ausführlich bereden können.
dort kann ich dir auch zu testzwecken aktuelle backdoorscripte geben.

medi
My Projects: http://ticker-oase.de 
Please do not PM me with support requests.

Advertisement: