Jump to content
powie.de Tech Forum
Sign in to follow this  
imara

Sicherheitslücke in pSys 0.3.0 alpha

Recommended Posts

Hallo Leute,


ich habe noch eine alte Version (pSys 0.3.0 Alpha) im Einsatz, weil ich diese damals ins englische übersetzt hatte und sehr viele Änderungen gemacht hatte. Es ist quasi unmöglich, ein Update einzuspielen.


Heute wurde die Website durch SQL-Injection gehackt !!


Der Hacker war zwar so freundlich keinen Schaden anzurichten (zumindest kein ersichtlicher!!) und hat mir sogar mitgeteilt, dass er mit SQL-Injection Zugang bekommen hat, aber in der Zukunft vermeiden möchte ich das doch.


Wenn sich also jemand mit SQL-Injection auskennt und eventuell erkennen kann, wo die Sicherheitslücke ist, wäre ich für Hinweise dankbar.


Ausserdem wäre es schön, wenn mir jemand sagen kann, ob die Sicherheitslücke in der Zwischenzeit (bei der aktuellen Version von pSys) behoben ist.

Share this post


Link to post
Share on other sites

Hallo,


ich habe das mal verschoben. Betreffend der Sicherheitslücke kann ich dir nichts genau sagen. Welche PHP-Version läuft bei dir? Ich habe da ein paar Vermutungen, aber dazu bräuchte ich auch einen Link auf deine phpinfo.



Grüße

Share this post


Link to post
Share on other sites
Wenn sich also jemand mit SQL-Injection auskennt und eventuell erkennen kann, wo die Sicherheitslücke ist, wäre ich für Hinweise dankbar.

Am besten schaust du in die Logs deines Servers. Dort erhälst du u. U. Hinweise zur "Einstiegsseite" des Hackers.

Share this post


Link to post
Share on other sites
Guest

Vorteilhaft wäre es, wenn du genau beschreibst, was passiert ist.

Share this post


Link to post
Share on other sites

es wurde versehentlich in einen Bereich verschoben, wo ich / wir keinen Zugriff haben ;-)


Tja, was genau passiert ist, kann ich euch nicht sagen. Ich weis nur, dass der Hacker es geschafft hat, sich mit einem bestehenden Useraccount (mit admin-rechten) einzuloggen. Ich habe anhand seiner IP Adresse gesehen, dass er sich auch mit dem User-Account "Admin" eingeloggt hatte, aber offensichtlich hat ihm das Andere besser gefallen (hatte ja auch admin-rechte).


Er hat mir dann diverse PMs geschickt, ich möchte mich melden, anderen User PMs geschickt, ich solle mich melden, etc. Eigentlich nix Tragisches.


Da er ein Useraccount nutzte, war mir erst gar nicht klar, dass es ein Hacker ist, sondern dachte der eigentliche User will mich dringend sprechen. Erst später hat er sich als Hacker zu erkennen gegeben und wollte dann 10$ von mir :-)


Wir haben dann diverse Spielchen gespielt, wie IP-Adresse sperren und Rechte entziehen, Passwörter ändern, aber das hatte ihn immer nur wenige Minuten abhalten können.


Zum Schluss konnte ich ihn dann überreden, dass es sich um keine kommerzielle Seite handelt und ich nicht in der Position bin, Gelder zu zahlen oder sonstige Forderungen zu erfüllen. Sollte er nicht einsichtig sein, werde ich die Site einfach offline nehmen was zwar schade wäre aber kein finanzieller Verlust.


Zum Glück sah er dies ein und erklärte mir abschließend, dass ich dringend eine sicherere Platform wählen sollte. Er hätte sich mit SQL Injection Zugriff zu allen Daten verschaffen können und mich sogar noch darum gebeten, alle Passwörter zu ändern.


Ich habe mal in der Datenbank gestöbert, aber konnte dort keine Veränderungen finden. Zur Sicherheit habe ich jedoch eine Datensicherung eingespielt und alle Passwörter geändert.


Interessant ist auch, dass der Hacker eine andere, themenrelevante Website gehackt hat. Dies hab ich zufällig erfahren. Da ich weder deren Admin kenne noch dort pSys im Einsatz ist, vermute ich, dass sich der Typ auf dieses Thema fokussiert hat, statt auf bestimmte Platformen.


An technischen Details kann ich leider nicht mehr liefern, bin aber gerne bereit weitere Einzelheiten heraus zu finden sofern mir möglich (evtl. bräuchte ich Anleitungen was ich tun soll).

Share this post


Link to post
Share on other sites
Wir haben dann diverse Spielchen gespielt, wie IP-Adresse sperren und Rechte entziehen, Passwörter ändern, aber das hatte ihn immer nur wenige Minuten abhalten können.

Wien habt ihr denn die IP Adresse gesperrt, und wie habt ihr dessen IP Adresse ermittelt?


Das alles hört sich recht nach theatralisch an, aber so recht Sinn macht die ganze Sache nicht.


1. Wer war er? E-Mail / Kontaktdaten?

2. Wie hat er sich denn Adminrechte geholt? Wieso hat er dies nicht erklärt?

3. Ist das ADMIN Passwort "sicher" ?


Ich habe mal in der Datenbank gestöbert, aber konnte dort keine Veränderungen finden.

Wie hast du nach Änderungen gesucht?

Share this post


Link to post
Share on other sites

Ich hab per MySQL Admin nachgesehen, welche zuletzt verwendete IP Adresse der Benutzer hatte und habe die per htaccess datei gesperrt. Damit war er erstmal weg vom Fenster bis er die Addresse geändert hatte.


Als ich in MySQL Admin nach der IP-Addresse des Benutzers suchte, viel mir auf, dass auch der Benutzer "Admin" zuletzt die gleiche IP-Addresse hatte. Also war er auch als Admin eingeloggt. Ausserdem zeigte das Forum unter "Benutzer heute online" den Admin an obwohl ich den sonst nie nutze.


Das Admin Kennwort ist natürlich etwas nicht nachvollziehbares. Ebenso, das Passwort welches der Benutzer hatte.


Die Fragen: " Wer war er? E-mail / Kontaktdaten" und "Wieso hat er dies nicht erklärt?" machen mich ein wenig stutzig. Äh, das war ein ernst zu nehmender Hacker!! Der wird sich doch wohl nicht zu erkennen geben bzw. seine Vorgehensweise bekannt geben!! Er macht sich strafbar und das weis er.


Letztendlich ist nix passiert, bzw. ich kann keinen Schaden erkennen, aber ich darf mich natürlich bei meinen Usern entschuldigen und die Sicherheit der Daten auf meiner Website ist in Frage gestellt inkl. der Passwörter. Ich darf Rechenschaft ablegen und Erklärungen abgeben und die Leute aus gegebenem Anlass darauf hinweisen, dass Ihre Daten auf meiner Website nicht sicher sind weil ich nicht weis wie der Hacker rein gekommen ist und ich daher die Sicherheitslücke auch nicht schließen kann.


Keine sehr erfreuliche Situation.


Die Datenbank habe ich nach ungewöhnlichen Einträgen durchstöbert (Zufallsprinzip) und zusätzlich per Suchfunktion nach Skripten und externen Links gesucht.

Share this post


Link to post
Share on other sites

Alle Zugriffe auf den Webserver die mit "seiner" IP gemacht wurden aus dem LOG File filtern und mir senden.

Damit kommen wir eventuell der Variante auf die Spur wie er es gemacht hat.

Share this post


Link to post
Share on other sites
Guest

Ich bin auch an den Logfiles interessiert. Vielleicht kannst du ja die IP-Adressen entfernen und mir den Log per E-Mail schicken.

Share this post


Link to post
Share on other sites

Auf unseren Webseiten benutzen wir grundsätzlich zwei voneinander unabhängige Log-Scripte. Dadurch haben wir schon so manchen Eindringling erkannt bevor der richtig zuschlagen konnte.


Die PScripte sind seit langem als unsicher bekannt und werden gerne zu Trainingszwecken benutzt.


Christoph hat oft genug auf die Schwächen hingewiesen.


Allerdings sind andere Scripte nicht unbedingt soooo viel sicherer.

Share this post


Link to post
Share on other sites
Guest
Auf unseren Webseiten benutzen wir grundsätzlich zwei voneinander unabhängige Log-Scripte. Dadurch haben wir schon so manchen Eindringling erkannt bevor der richtig zuschlagen konnte.

Das interessiert mich: Wie genau macht ihr das? Habt ihr ein IDS?

Share this post


Link to post
Share on other sites

Laut Google-Statistik wurde an diesem Tag nach verschiedenen Varianten hierfür gesucht:


inurl:index.php?shownews

inurl:/news/index.php?shownews=

news/index.php?shownews=


etc. etc.

Share this post


Link to post
Share on other sites
Guest

Ich interpretiere die Logs so, dass der Angreifer so gezielt nach Powie-Installationen gesucht hat.


Interessant finde ich, dass der Angreifer seine Sicherheitslücke verkaufen wollte. Was genau hat er denn geschrieben?

Share this post


Link to post
Share on other sites

Ich vermute eher, dass er sich die url-gestaltung angesehen hat und dann nach einer Session (bzw. Informationen daraus) in Google gesucht hat.


Er hat ja auch eine themenrelevante gehackt obwohl die eine ganz andere Platform benutzen.


In seiner letzten PM schrieb er:




you is very cleaver))) i think you must change you platform, because it\'s very bad site. you must install Joomla - it\'s good platform for your site. i must leave now... i think you don\'t hear about me... you must change password for this account (Nico = carsten) and i know all other passwords from your database.


it will very good if you change your platform, i did SQL INJ when i know all passwords and accounts from your site.




Verkaufen wollte er nix, und auch seine anfängliche Geldforderung halte ich für eine Ausrede. Ich denke er hat sich einen schlechten Scherz gemacht, oder aber, hat es gezielt auf Webseiten mit solchem Content abgesehen (Wildtierschutz in Afrika).

Share this post


Link to post
Share on other sites
Guest
Ich vermute eher, dass er sich die url-gestaltung angesehen hat und dann nach einer Session (bzw. Informationen daraus) in Google gesucht hat.

Er hat einerseits nach einer bestimmten Kombination aus Ressource und Parameter gesucht, andererseits hat er an mehreren Stellen SQL Injections getestet und war an einer Stelle auch erfolgreich.


Er hat ja auch eine themenrelevante gehackt obwohl die eine ganz andere Platform benutzen.

Welche denn?

Share this post


Link to post
Share on other sites

ups, ich muss das korrigieren. Habe eben mit dem Web-master der anderen Website Kontakt aufgenommen und der hat nur aus Sicherheitsgründen seine Benutzer gebeten Ihre Passwörter zu ändern weil er mitbekommen hat, dass meine Site gehackt wurde.


Bleibt also Alles offen ...

Share this post


Link to post
Share on other sites

Danke für das LOG Carsten. Der Angreifer hat eine alte Lücke in der /user/showprofil.php benutzt, die schon seid der 0.5.0 alpha geschlossen ist, um einfach Daten ausspähen zu können. Dies kannst du gut im Log nachvollziehen, er hat da hundete Zugriffe drauf gemacht, da das im Sekundenraster passiert kann man davon ausgehen das er ein Script benutzt und dies nicht händisch tut. Er ist dadurch nicht an Passwörter gekommen wie er dir weiss machen will, das geht ja garnicht da diese nur als Hash in der DB stehen, aber er konnte die Hash Daten lesen. Dann hat er vermutlich irgendwo eine Hash Datenbank genutzt und schon konnte er sich einloggen, auch das kannst du noch nachvollziehen, er hatte einige Versuche nötig, er hat sich vorher mindestens 50 mal erfolglos versucht einzuloggen.

Share this post


Link to post
Share on other sites

Bitte auch mal in Erwägung ziehen, das Skript zu aktualisieren. Zwischen der 0.3 und 0.7 liegen Äonen. Das hat hier zwar jetzt nur noch bedingt was mit zu tun, aber wenn man eine veraltete Version einsetzt, dann kann dies schon vorkommen.


Die PScripte sind seit langem als unsicher bekannt und werden gerne zu Trainingszwecken benutzt.


Wo steht sowas? Ich weiß nur, dass die Skripte ohne die automatische Maskierung offen wären wie ein Scheuentor, da keine Typprüfung der Parameter etc. .


Auf unseren Webseiten benutzen wir grundsätzlich zwei voneinander unabhängige Log-Scripte. Dadurch haben wir schon so manchen Eindringling erkannt bevor der richtig zuschlagen konnte.


Das interessiert mich: Wie genau macht ihr das? Habt ihr ein IDS?



Interessiert mich auch.



Grüße

Share this post


Link to post
Share on other sites
Guest
Wo steht sowas?

Naja, es ist ja u.A. hier im Forum dokumentiert.


Ich weiß nur, dass die Skripte ohne die automatische Maskierung offen wären wie ein Scheuentor, da keine Typprüfung der Parameter etc.

PSys ist außerdem massiv von CSRF-Sicherheitsproblemen betroffen. Diese sind prinzipiell auch ohne automatisches Escaping relevant. Übrigens wird es in PHP6 die magic_quotes_*-Funktionalität überhaupt nicht mehr geben.

Share this post


Link to post
Share on other sites

Schön, dass es eine Lücke ist, die bereits geschlossen ist da ich pSys ja noch anderweitig einsetze ;-)


Auf dieser Website nutze ich noch die alte Version weil ich dort sooo viele Änderungen gemacht habe (inkl. Übersetzung ins Englische), dass es ein immenser Zeitaufwand wäre diese zu aktualisieren.


Wie bereits geschrieben, habe ich von der Website tatsächlich kein Einkommen und kann es mir leider im Moment nicht leisten, Wochen damit zu verbringen diese zu aktualisieren.


Wäre es möglich nur diesen Teil zu beheben? Liegt es ausschließlich an der showprofil.php?

Share this post


Link to post
Share on other sites
Original von Powie

Er ist dadurch nicht an Passwörter gekommen wie er dir weiss machen will, das geht ja garnicht da diese nur als Hash in der DB stehen, aber er konnte die Hash Daten lesen.



Er kann sehr wohl die Passwörter einsehen, er hat mir ja als Beweis das Passwort für den Benutzer mitgeteilt und mich gebeten dies zu ändern.

Share this post


Link to post
Share on other sites
Guest
You are commenting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

×