Posts Tagged ‘ SQL

Problem in PHPMyAdmin

Tja, wie sage ich immer so schön "nobody is perfect". Dieses mal hat´s die Jungs von PHPMyAdmin erwischt. Durch einen Programmierfehler ist das MySQL-Administrationsfrontend in der Lage via Directory Traversal auf Dateien außerhalb der Webserverroot zuzugreifen. Ein Demo-Exploit wurde von SecurityReason bereits in einem Advisory veröffentlicht.

Betroffen sind die Versionen 2.6.4-rc1 – 2.6.4-pl1. Ein Update/Patch ist noch nicht verfügbar, aber die heute erscheinenen Version 2.6.4-pl2 soll den Fehler nicht mehr enthalten.

Defend Your Code

Habe ich gerade auf der Microsoft Homepage gefunden: Zehn Sicherheitstipps für Entwickler.

Ok, zugegeben, eigentlich nix neues, aber vielleicht für den einen oder anderen Leser doch interessant :)

MySQL Root-Passwort zurücksetzen

oder in 4 Schritten zu einem neuen Passwort:

  1. MySQL beenden

    /etc/init.d/mysql stop

  2. MySQL mit deaktivierter Passwort-Überprüfung und ohne Netzwerkunterstützung starten

    mysqld –user=mysql –pid-file=/var/lib/mysql/mysqld.pid \
    –socket=/var/lib/mysql/mysql.sock –datadir=/var/lib/mysql \
    –skip-grant-tables –skip-networking

  3. Das Root-Passwort neu setzen

    mysqladmin -u root password "mynewpassword"

  4. MySQL beenden und neu starten

    kill `cat /var/lib/mysql/mysqld.pid`
    /etc/init.d/mysql start

Update:
Von Isotopp gab´s ne nette Anregung wie man das Obige noch optimieren kann -> siehe Kommentare

CSV-File in MySQL DB importieren

Tja, man lernt doch nie aus. Wollte gerade ne CSV-File nach MySQL importieren und dachte zunächst, das ich mir dafür wohl ein kleines "Helperscript" schreiben müßte. Weit gefehlt, MySQL kann dieses auch allein ;)

Mit der Anweisung LOAD DATA INFILE bringt man MySQL dazu, eine CSV-File in eine bestehende (leere!?!) Tabelle zu importieren. Klappt ausgezeichnet und wenn man wie ich nen Exel Export als Basis hat, reicht sogar ne leere Anfangsspalte in der Exel bzw. CSV-File, die entsprechende MySQL Spalte mit "auto_increment" und PRIMARY KEY vorbereitet und schon hat die ganze Tabelle nach dem Import sogar ne eineindeutige ID (für den Fall das der Export aus Exel diese nicht hat *sfg*)

Hier mal ein kleines Beispiel:

LOAD DATA LOCAL
        INFILE ‘/home/www/servers/www.servername.de/tmp/import.csv’
        REPLACE
        INTO TABLE tabellenname
        FIELDS
                TERMINATED BY ‘;’
                OPTIONALLY ENCLOSED BY ‘"’;

 

 Mehr Infos gibt es unter mysql.com

Webserver unter Mac OS X

Zum Thema Webentwicklung unter Mac OS X hat Pixelgraphix.de zwei interessante Tutorials veröffentlicht!

Das eine Beschreibt, wie MySQL, PHP und Movable Type unter Mac OS X installiert wird, das andere befaßt sich mit dem MySQL-Web-Administrationstool PhpMyAdmin unter Mac OS X!

via www.pixelgraphix.de

Wurm verbreitet sich per MySQL

Vor einem neuen Wurm, der sich per MySQL verbreitet, warnt seit heute das SANS Internet Storm Center (ISC) . Der Wurm befällt nur Windows Systeme die einen nach aussen offene 3306 Port (Standart MySQL Port) vorweisen können. Hat der Wurm einmal eine Opfer infiziert veruscht er sich mit einem IRC-Server zu verbinden von dem er weiter Instruktionen erhält.Gleichzeitig hält der Wurm ausschau nach weiteren potenziellen Opfern.

Laut SANS ISC nutzt der Wurm den “MySQL UDF Dynamic Library Exploit”. Um sein Ziel zu erreichen versucht der Wurm sich an der Datenbank als User “root” anzumelden. Hat er diese Hürde erst einmal genommen, legt er in der Datenbank “mysql” die Tabelle “bla” an und füllt diese mit einem BLOB-Feld namens “line”.

Ist die Tabelle erst einmal angelegt schreibt sich der Wurm selber in das Feld line und dann wieder aus Ihr als app_result.dll heraus (‘select * from bla into dumpfile “app_result.dll”‘) und führt sich aus. Anschließend wird die Tabelle “bla” wieder gelöscht.

Nun ja, nach einer wirklichen schwachstelle sieht das nicht gerade aus, vielmehr nutzt der Wurm die Nachlässigkeit der User / Administratoren in Bezug auf das Rootpasswort aus. Laut SANS ISC erkennen aber schon viele Anti-Viren-Scanner die Binary des Wurmes, doch auch ohne laufenden Scanner kann man sich schützen!

  • Ein sicheres Passwort für den Root Account wählen
  • Nur sichere Vebindungen zu der MySQL Datenbank zulassen (bekannte Hosts, nur “localhost” oder die MySQL eigene SSL Connection
  • Die Firewall so einstellen, das niemand von außen (O-Ton “wild outside”) auf den MySQL Port 3306 zugreifen können

Quelle: Golem | SANS ISC

Möglichkeit, um doppelte Datensätze zu identifizieren

Doppelte Datensätze sind ein typisches Problem in vielen Datenbanken. Mit einem kleinen Sql-Befehl lassen sich aber alle Datensätze ermitteln, die ,mit Ausnahme der Identitätsspalte, doppelte Datensätze enthalten. Praktisch z.B., wenn man in einem Online-Shop alle die Kategorien ausgeben will, die auch wirklich Produkte enthalten.

SELECT
     P_Category
FROM
     Products
GROUP BY
     P_Category
HAVING
     COUNT(*) > 1

Zugegeben, die Query ist sehr simpel gehalten, aber ich denke sie verdeutlicht die Funktion des SQL-Befehls.