КомпютриПрограмиране

Какво е инжектирането на SQL?

Броят на сайтове и страници в интернет, непрекъснато нараства. Взети за развитието на всички онези, които могат. И начинаещите уеб разработчиците често използват опасни и стари код. И това създава много вратички за престъпници и хакери. Отколкото са. Един от най-класическите уязвимости - SQL-инжекция.

Малко теория

Много хора знаят, че по-голямата част от сайтове и услуги в мрежата използвате за съхранение на SQL база данни. Това е структуриран език за заявки , който ви позволява да се контролира и управлява съхранението на данни. Има много различни версии на базата данни за управление на бази данни система - Oracle, MySQL, Postgre. Независимо от името и вида, те използват едни и същи данни на заявката. Той е тук, че се крие потенциална уязвимост. Ако предприемачът не успя да се справи добре и сигурно да поиска, атакуващият може да се възползва от това и да използва специални тактики, за да получат достъп до базата данни, а след това - и на всички, ръководството на строителния обект.

За да се избегнат такива ситуации, трябва правилно да се оптимизира кода и да се следи отблизо по начин, по който се обработва искане.

Проверка за SQL-инжекция

За да се установи наличието на уязвимост в мрежата е с тегло завършени автоматизирани софтуерни системи. Но е възможно да се извърши проста проверка ръчно. За да направите това, отидете в един от сайтовете за изпитване и в адресната лента, за да се опита да доведе до грешка при база данни. Например, един скрипт на сайта не може да се справи по искане и не ги отрежете.

Например, има nekiy_sayt / index.php? Id = 25

Най-лесният начин - да се сложи 25 след цитата и изпращане на искането. Ако не възникнала грешка, било то на сайта и филтър на всички заявки се обработват правилно, или е деактивиран в настройките на своята продукция. Ако страницата се презарежда с проблемите, а след това на уязвимостта към SQL-инжекция е.

След като тя разбра, можете да опитате да се отървете от него.

За изпълнение на тази уязвимост необходимост да се знае малко за SQL-заявки отбори. Един от тях - съюз. Тя обединява няколко резултатите от заявката в една. Така че можем да се изчисли броят на полетата в таблицата. Пример първата заявка е:

  • nekiy_sayt / index.php? ID = 25 ЮНИОН SELECT 1.

В повечето случаи този запис трябва да генерира грешка. Това означава, че броят на полетата не е равно на 1. Така, че избрахте опциите на 1 или по-голямо, то е възможно да се установи точният им брой:

  • nekiy_sayt / index.php? ID = 25 UNION SELECT 1,2,3,4,5,6.

Това означава, че когато грешката няма да се показва, това означава, че броят на полетата за отгатване.

Има и алтернативно решение на този проблем. Например, когато голям брой полета - 30, 60 или 100. Тази команда GROUP BY. Той групира резултатите от запитването на каквито и да било причини, например номер:

  • nekiy_sayt / index.php? ID = 25 ГРУПА ОТ 5.

Ако грешката не е получена, а след това на полето повече от 5. По този начин, като се замести опции от един доста широк диапазон, то е възможно да се изчисли колко от тях всъщност.

Този пример SQL-инжекция - за начинаещи, които искат да се опитам в тестването на своя сайт. Важно е да се помни, че за неоторизиран достъп до друга налична статия от Наказателния кодекс.

Основните видове инжектиране

Прилагане уязвимост чрез SQL инжектиране в няколко изпълнения. Следваща са най-популярните методи:

  • Съюза на заявката за SQL инжекция. Един прост пример на този тип вече е разгледано по-горе. Той се реализира поради грешка при проверка на постъпващите данни, които не са филтрирани.

  • Грешка на базата на SQL инжектиране. Както подсказва името, този тип също използва грешка, изпращайки изрази съставени синтактично неправилен. Тогава там е прихващането на заглавията на отговор, анализ, които могат да се извършват по-късно SQL-инжекция.

  • Stacked запитва SQL инжекция. Тази уязвимост се определя чрез извършване на последователни искания. Тя се характеризира чрез добавяне в края на знака ";". Този подход се прилага често, за да получите достъп до изпълнението на четене и запис на данни или на операционната система функции, ако привилегии го позволяват.

Софтуер за търсене на SQL-уязвимости

Има ли за SQL-инжекция, програмата обикновено имат два компонента - сайт сканира за възможни уязвимости и да ги използвате, за да получат достъп до данните. Има някои инструменти за почти всички известни платформи. Тяхната функционалност значително улеснява проверката на сайт, за да се справи вашата SQL-инжекция.

Sqlmap

Много мощен скенер, който работи с повечето бази данни. Той поддържа различни методи за изпълнение на SQL-инжекция. Той има способността да разпознава автоматично вида на парола хеш крекинг и речник. Присъства и функционален за качване на файлове и изтегляне от сървъра.

Инсталиране на Linux се извършва с помощта на командите:

  • Git клонинг https://github.com/sqlmapproject/sqlmap.git sqlmap-версия за програмисти
  • cdsqlmap-сътрудничество /,
  • ./sqlmap.py --wizard.

За Windows се предлага като опция с командния ред и графичен потребителски интерфейс.

jSQL инжектиране

jSQL Injection - средство за по-платформа за тестване на използването на SQL уязвимости. Написан на Java, така че системата трябва да бъде инсталиран JRE. Има възможност да се справят GET заявки, POST, хедър, бисквитка. Той разполага с удобен графичен интерфейс.

Монтирането на този софтуерен пакет е както следва:

Wget https://github.com/`curl -s HTTPS: //github.com/ron190/jsql-injection/releases | Впиши-E -о "/ron190/jsql-injection/releases/download/v[0-9]{1,2}.[0-9]{1,2}/jsql-injection-v[0-9] . {1,2} [0-9] {1,2} .jar "| глава-п 1`

Лансирането е с помощта на команда Java -jar ./jsql-injection-v*.jar

За да започнете да тестовата площадка на SQL-уязвимост, ще трябва да въведете адреса в горното поле. Те са отделни за GET и POST. С положителен резултат, списък с наличните маси ще се появи в левия прозорец. Можете да ги видите и да научите някои поверителна информация.

раздела «Admin страница» използва, за да намерите най-административни панели. На него с помощта на специални шаблони автоматично търси системата отчита привилегировани потребители. От тях можете да получите само хеш на паролата. Но той има в кутията с инструменти на програмата.

След намирането на всички уязвимости и инжекционни необходимите разследвания, за, инструментът ще позволите на сървъра да попълните вашия файл или, обратно, да го изтеглите от тук.

SQLi Dumper v.7

Тази програма - лесен за използване инструмент за намиране и прилагане на SQL уязвимости. Тя произвежда ООН се основава на т.нар Сърна. Техният списък може да се намери в Интернет. Dorca за SQL-инжекция - това са специални шаблони на заявки за търсене. С тяхна помощ, можете да намерите потенциално уязвими чрез търсеща машина.

Инструменти за обучение

Itsecgames.com на място има специален набор от инструменти, който позволява на пример показва как да се направи SQL инжекция и да го тестваме. За да се възползва, че е необходимо да изтеглите и инсталирате. Архивът съдържа набор от файлове, която е в структурата на сайта. За да го инсталирате, ще трябва в съществуващата система на набор от Apache уеб сървър, MySQL и PHP.

Разопаковайте архива в уеб сървър папка, трябва да отидете на адреса, вписан при инсталирането на този софтуер. Страница с регистрация на потребителя. Тук трябва да въведете данните си и натиснете «Създай». Преместването на потребителя да нов екран, системата ще ви подкани да изберете един от тестовете. Сред тях има както е описано, чрез инжектиране, както и много други елементи за изпитване.

Струва си да разгледаме един пример от тип SQL-инжекция GET / Search. Тук трябва да го изберете и натиснете «Hack». Преди потребителят да се появи, и търсене на низ имитация на един филм на сайтове. За да сортирате филми могат да бъдат дълги. Но само 10. Така например има, можете да опитате да влезете в Iron Man. Тя ще покаже филма, а след това, че сайтът работи и таблиците, които съдържа. Сега ние трябва да се провери, ако специални символи скрипт филтри, по-специално цитат. За да направите това, добавете "в адресната лента." Нещо повече, това трябва да се направи, след като заглавието на филма. Сайтът ще даде грешка грешка: Имате грешка в SQL синтаксис; справка в ръководството, който съответства на вашия сървър версия на MySQL за правилния синтаксис за използване в близост до '%' 'в ред 1, който гласи, че героите все още не се обработват правилно. Така че можете да се опитате да замени вашата заявка. Но първо трябва да се изчисли броят на полетата. Той се използва за тази цел от, която се въвежда след кавичките: http://testsites.com/sqli_1.php?title=Iron+Man "ред от 2 - и действие = търсене.

Тази команда показва само информация за филма, който е броят на полета е по-голямо от 2. двойно тире казва на сървъра, който другите искания трябва да се изхвърлят. Сега ние трябва да се оправи, поставяйки по-голямо значение, докато грешката не се отпечатва. В крайна сметка, се оказва, че областта ще бъдат седем.

Сега е време да се получи нещо полезно от основата. Ще леко модифициране на искането в адресната лента, го доведе до форма: http://testsites.com/sqli_1.php?title=Iron+Man "съюз изберете 1, база данни (), потребител (), 4, парола, 6, 7 от потребители - и действие = търсене. В резултат на изпълнението му ще се покаже низ с хешове за пароли, които лесно могат да бъдат превърнати в разбираеми символи с помощта на един от онлайн услугите. А напомняли малко и взе име на поле с вход, можете да получите достъп до влизане на някой друг, като администратор на сайта.

Продуктът е с тегло видове видове инжекционни, върху която да се практикуват. Трябва да се помни, че прилагането на тези умения в мрежата на реални обекти може да се смята за престъпление.

Инжектиране и PHP

Като правило, за PHP-кодът и отговаря за необходимите искания за обработка, идващи от страна на потребителя. Ето защо, на това ниво, което трябва да се изгради защита срещу SQL-инжекция в PHP.

Първо, нека да дадем няколко прости правила, въз основа на които е необходимо да се направи това.

  • Данните винаги трябва да се обработват преди да бъдат пуснати в базата данни. Това може да стане или чрез използване на съществуващите изрази, или чрез организиране на заявки ръчно. Тук също трябва да се вземе предвид, че числовите стойности се преобразуват в вида, което е необходимо;
  • Избягва подканени различните контролни структури.

Сега малко за правилата за съставяне на заявки в MySQL за защита срещу SQL-инжекция.

При съставянето на каквито и да било прояви, да намират, че е важно да се разделят на данни от SQL ключови думи.

  • SELECT * FROM таблица, където име = Zerg.

В тази конфигурация, системата може да мисли, че зергите - името на всяка област, така че трябва да е поставен в кавички.

  • SELECT * FROM таблица, в която името = 'Zerg ".

Въпреки това, има моменти, когато самата стойност съдържа кавички.

  • SELECT * FROM таблица, в която името = 'Кот д'Ивоар.

Тук само се справят с част от Кот, а останалата част може да се възприема като екип, който, разбира се, че не. Следователно, възниква грешка. След това е необходимо този вид данни за скрининг. За да направите това, използвайте наклонена черта - \.

  • SELECT * FROM таблица, в която името = 'котка-г \ д'Ивоар.

Всички по-горе се отнася до редовете. Ако действието се развива с много, тогава той не се нуждае от никакви кавички или наклонени черти. Въпреки това, те следва да се изисква да насилствено да доведе до желания тип данни.

Има препоръки, които името на полето, трябва да бъдат затворени в backquotes. Този символ е в лявата част на клавиатурата, заедно с тилда "~". Това е да се гарантира, че MySQL можеше точно да се разграничат от името на областта от самите думи.

Динамична работа с данни

Много често, за да получавате данни от базата данни с помощта на заявки, генерирани динамично. Например:

  • SELECT * FROM таблица, където номер = '$ номер ".

Тук променлив брой от $ се предава като определяне на стойността на полето. Какво ще се случи, ако това стане "Кот д'Ивоар"? Грешка.

За да се избегне този проблем, разбира се, можете да включите настройките "магически кавички". Но сега данните ще бъдат проверени, когато е необходимо и не е необходимо. Освен това, ако кодът е написана на ръка, можете да прекарате малко повече време, за да се създаде устойчива на напукване на самата система.

За независимия добавяне на наклонена черта да използвате mysql_real_escape_string.

$ Номер = mysql_real_escape_string ($ номер);

$ Година = mysql_real_escape_string ($ годишно);

$ Query = "INSERT INTO маса (брой, година и клас) стойности (" $ номер "," $ годишно ", 11)".

Въпреки, че кода и по-голяма по обем, но потенциално ще работи много по-безопасно.

контейнери

Placeholders - един вид маркери, за които системата признава, че това е мястото, което трябва да замени специална функция. Например:

$ Сейт = $ mysqli-> подготви ( "Област изберете от номер, на който Наименование =?");

$ Sate-> bind_param ( "S", $ номер);

$ Sate-> изпълнение ();

Тази част от кода се шаблон за обучение искане и след това се свързва с променлив брой, и да го изпълнява. Този подход позволява да се раздели обработката на заявки и нейното прилагане. По този начин, той може да бъде спасен от използването на зловреден код са SQL-.

Какво може да атакуващият

Система за защита - много важен фактор, който не може да бъде пренебрегната. Разбира се, един прост сайт визитка ще бъде по-лесно да се възстанови. И ако това е голям портал, сервиз, форум? Какви са последствията, ако не се мисли за сигурността?

Първо, един хакер може да разруши целостта както на основата и да се премахне напълно. И ако администратора на сайта или общежитие не направите резервно копие, ще имате трудни времена. Преди всичко, един нарушител, напукване на един сайт, може да отиде до другия публикувал в същия сървър.

След това е кражба на лична информация на посетителите. Как да се използва - всичко е ограничено само от въображението на един хакер. Но във всеки случай, последствията няма да са много приятни. Особено, ако се съдържа финансова информация.

Също така, на нападателя да обедините база данни себе си и след това да се изтръгнат пари за неговото връщане.

Потребителите дезинформация от името на администратора на сайта, лицето не се е, могат да бъдат и отрицателни последици като възможни факти за измами.

заключение

Цялата информация в тази статия се предоставя само за информационни цели. Използвайте го само трябва да тествате собствените си проекти, когато открие уязвимости и да ги разгледа.

За проучване, по-задълбочена от техники за това как да провеждат SQL-инжекция, е необходимо да се започне с действителните изследователски възможности и функции на езика SQL. Като събрани заявки, ключови думи, типове данни, както и използването на всичко това.

Също така не може да направи, без да разбират работата на PHP и HTML елементи функции. Основната употреба на уязвимите точки за впръскване - на първи ред на адреса, както и различни полето за търсене. Обучение PHP функции, методът на изпълнение и функции ще разбера как да се избегнат грешки.

Наличието на много готови софтуерни инструменти позволяват по-задълбочен анализ на известен сайт уязвимости. Един от най-популярните продукти - Кали Linux. Този образ на Linux-базирана операционна система, която съдържа голям брой инструменти и програми, които могат да извършват цялостен анализ на силата сайт.

Какво трябва да знаете как да хакна сайта? Това е много проста - това е необходимо да бъдат наясно с потенциалните уязвими на вашия проект или уеб сайт. Особено, ако това е онлайн магазин с онлайн плащане, където данните за плащане на потребителите може да бъде компрометиран от хакер.

За професионален проучване на съществуващите служители по сигурността на информацията ще бъде в състояние да се провери на сайта за различни критерии и дълбочина. Като се започне от прости HTML-инжекции и за социалното инженерство и фишинг.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 bg.unansea.com. Theme powered by WordPress.