Scipio
24.10.2007, 02:27
Ну это не совсем CMS, так что не совсем в тему... (хотя тут про phpMyAdmin даже тема закрепленная есть)
вобщем нашел sql-inj в этом движке рейтинга сайтов
уязвимость в файле index.php в переменной opted пердающейся методом POST. Инъекция происходит после конструкции order by, что при наличии на сервере Mysql 4.1 и выше дает возможность получить данные при помощи подзапросов
dork: intitle: powered by utopsite
пример:
сайт:www.extreem.ru (к сожалению версия Mysql 4.0)
путь до уязвимого скрипта:http://www.extreem.ru/rating/index.php
послав скрипту пост-переменную opted со значением
-hits*(substring(version(),1,1)=4)
(при этом пост переменная way должна принимать значение desc)
мы видим, что сортировка идет по возрастанию значения "Хитов:", значит подзапрос правильный (значение True или 1), если подзапрос принимает значение FALSE, в нашем случае:
-hits*(substring(version(),3,1)=1)
такого не происходит
т.о. для весии mysql>=4.1 мы можем получать данные из БД c помощью подзапросов (не буду описывать как, знающие синтаксис Mysql сами все понимают)
для версии mysql<4.1 можно получить определенную информацию (user(),version(),database(),host) как я и показал в примере...
PS также после order by можно использовать конструкцию select if например в переменную opted послать:
(select+if(ascii(substring(version(),1,1))=52,hits ,vote))если подзапрос вернет true, то сортировка будет по значению "Хитов:"(hits), в противном случае по значению "Голосов:"(vote)
вобщем нашел sql-inj в этом движке рейтинга сайтов
уязвимость в файле index.php в переменной opted пердающейся методом POST. Инъекция происходит после конструкции order by, что при наличии на сервере Mysql 4.1 и выше дает возможность получить данные при помощи подзапросов
dork: intitle: powered by utopsite
пример:
сайт:www.extreem.ru (к сожалению версия Mysql 4.0)
путь до уязвимого скрипта:http://www.extreem.ru/rating/index.php
послав скрипту пост-переменную opted со значением
-hits*(substring(version(),1,1)=4)
(при этом пост переменная way должна принимать значение desc)
мы видим, что сортировка идет по возрастанию значения "Хитов:", значит подзапрос правильный (значение True или 1), если подзапрос принимает значение FALSE, в нашем случае:
-hits*(substring(version(),3,1)=1)
такого не происходит
т.о. для весии mysql>=4.1 мы можем получать данные из БД c помощью подзапросов (не буду описывать как, знающие синтаксис Mysql сами все понимают)
для версии mysql<4.1 можно получить определенную информацию (user(),version(),database(),host) как я и показал в примере...
PS также после order by можно использовать конструкцию select if например в переменную opted послать:
(select+if(ascii(substring(version(),1,1))=52,hits ,vote))если подзапрос вернет true, то сортировка будет по значению "Хитов:"(hits), в противном случае по значению "Голосов:"(vote)