SQL-Injection: SELECT ... INTO OUTFILE
Verfasst: Mo 27. Dez 2010, 14:06
Über den SQL Befehl "select ... into outfile ..." ist es unter bestimmten Umständen möglich Dateien im Webspace zu erzeugen.
Jeder sollte daher prüfen welche Rechte sein Datenbank User auf der MySQL Datenbank hat. Wichtig ist hierbei das er keine Datei-Berechtigungen besitzt. Über den Befehl "show grants;" kann man sich die Rechte anzeigen.
Er scheint nun ein
oder
Diese Ergebnisse wären z.B. OK, da zwischen GRANT und TO kein "FILE" vorkommt:
Wenn eine der folgenden Inhalte auftaucht sollte man das Recht file_priv für den user deaktivieren:
Wenn man selbst die "GRANT OPTION" besitzt - was man nicht haben sollte (ebenfalls SQL Injection Gefahr)!! - so führt man folgenden Befehl aus:
Den "IDENTIFIED BY PASSWORD" kann man dabei weglassen wenn er beim SHOW GRANTS nicht angezeigt wurde.
Jeder sollte daher prüfen welche Rechte sein Datenbank User auf der MySQL Datenbank hat. Wichtig ist hierbei das er keine Datei-Berechtigungen besitzt. Über den Befehl "show grants;" kann man sich die Rechte anzeigen.
Er scheint nun ein
Code: Alles auswählen
GRANT ALL PRIVILEGES ... TO ...
Code: Alles auswählen
GRANT [..,]FILE[,..] TO
Code: Alles auswählen
GRANT USAGE ON *.* TO 'dbUser'@'%' IDENTIFIED BY PASSWORD '...'
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, LOCK TABLES, EXECUTE, CREATE ROUTINE, ALTER ROUTINE ON *.* TO 'dbUser'@'%'
Code: Alles auswählen
GRANT FILE ON *.* TO 'dbUser'@'%' IDENTIFIED BY PASSWORD '...'
GRANT ALL PRIVILEGES TO ...
GRANT ALL PRIVILEGES ON *.* TO ...
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, LOCK TABLES, EXECUTE, FILE ON *.* TO
Code: Alles auswählen
revoke FILE ON ... TO ... IDENTIFIED BY PASSWORD ...