sqlmap Cheat Sheet
SQLMap е безплатен инструмент, който проверява уязвимости в базата данни . Ако управлявате уебсайт, вие сте уязвими към набор от хакерски атаки, базирани на SQL, които могат да компрометират базата данни, която стои зад много функции на сайта. Ако хакерите могат да проникнат във вашата мрежа и да заразят крайна точка, те могат също да използват техники за инжектиране на SQL, за да компрометират тези бази данни, които поддържат бек-офис функции .
Вашата база данни е в основата на вашата бизнес информационна система. Той стимулира споделянето на данни в ERP системи и магазини чувствителни данни , като например записи на клиенти и информация за оборота. За да разберете напълно потенциалната уязвимост в тази област, трябва да знаете какво представлява атаката чрез SQL инжектиране.
Атаки чрез SQL инжектиране
SQL е език за структурирани заявки . Това е езикът, който програмите използват за достъп до данни в a релационна база данни . Езикът също така включва команди за актуализиране или изтриване на данни, съхранявани в таблици на база данни.
За крайните потребители достъпът до база данни е чрез формуляр, който ще бъде или в уеб страница, или в предния край на част от бизнес софтуер. Полето, в което въвеждате заявка в страница на Google, е пример за това. Кодът зад паравана приема въведените от потребителите данни в полето и ги обгръща в SQL заявка. След това това се изпраща в базата данни за извличане на съвпадащи записи.
Хакери са открили начини да поставят пълен SQL оператор или клауза от оператор в поле за въвеждане. Това може да заблуди механизмите за обработка на заявки, вградени във формуляра, и да предаде цяла SQL инструкция към базата данни, вместо да подадете входа като стойност на заявка.
Тази измама се нарича ' SQL инжекция ” и може да даде на хакерите пълен достъп до вашата база данни, заобикаляйки контролите, които са вградени в кодирането на приложението или уеб страницата, която съдържа полето за въвеждане.
Атаките чрез SQL инжектиране могат да позволят на хакерите да откраднат цялата база данни или да актуализират стойности. Опцията за промяна на данни в база данни позволява на хакерите да крадат пари . Представете си, ако клиент е в състояние да промени салдото по сметка от отрицателна сума на положителна сума. В автоматизираните системи това би задействало плащане и хакерите биха могли да се укрият с тези пари, преди някой в бизнеса да разбере за грешката.
Вижте също: Най-добрите инструменти за наблюдение на SQL Server
Класифициране на атаки чрез SQL инжектиране
The Отворете проекта за защита на уеб приложения (OWASP) създава списък с топ 10 на системните уязвимости, който се счита за окончателен списък със слабости, които трябва да се търсят. Скенерите за уязвимости обещават да проверят за Топ 10 на OWASP . SQL Injection е най-честата заплаха, изброена от OWASP. Организацията разделя тази категория на четири типа.
- Класическо SQL инжектиране
- Сляпо или инферентно SQL инжектиране
- Специфично за СУБД SQL инжектиране
- Съставно SQL инжектиране
Тези категории са допълнително разбити по индустрията. Атаката с класическо SQL инжектиране е известна още като an Вътрешна атака . Тази категория включва два възможни метода – базиран на грешки SQLI и базиран на съюз SQLI.
Атаките с комбинирано SQL инжектиране добавят друг тип хакерска атака към дейността по SQL инжектиране. Това са:
- Атаки за удостоверяване
- DDoS атаки
- Отвличане на DNS
- Скриптове между сайтове (XSS)
В интерес на краткостта на това ръководство – върху което се фокусираме sqlmap – дефиницията на тези стратегии за атака няма да бъде разгледана тук.
Проверка за уязвимости при инжектиране на SQL
Sqlmap ви позволява да изпробвате типовете атаки, които хакерите прилагат върху бази данни. Това ви позволява да видите дали вашите системи са или не защитени срещу атака .
Хакерите непрекъснато измислят нови стратегии за атака. Въпреки това начините, по които работят релационните бази данни и SQL, означават, че има толкова много видове атаки, които ще работят. С други думи, винаги има нови атаки вариации по тема . Ако имате инструмент, който може да осигури защита срещу общи категории атаки, можете да сте сигурни, че сте разкрили всички възможни уязвимости.
Проверката на sqlmap прави опит за атака във всяка от редица категории – има общо шест. Ако една от тези атаки успява , знаете, че имате сериозен проблем и част от интерфейса, който е пред вашата база данни, трябва да бъде пренаписан, за да блокира тази атака.
Видовете атаки, които sqlmap опитва, са:
- Базирано на булево сляпо SQL инжектиране
- Базирано на времето сляпо SQL инжектиране
- Базирано на грешки SQL инжектиране
- Базирано на съюз SQL инжектиране
- Подредени заявки
- Извънлентови атаки
Дефинициите, използвани от разработчиците на sqlmap, не съответстват точно на категориите, използвани от OWASP. Списъкът включва и двата вида Класическо SQL инжектиране и двата вида Сляпо SQL инжектиране .
Стратегията за атака на подредени заявки, изпълнявана от sqlmap, трябва да покрива условията на OWASP СУБД специфични атаки . Комбинираната категория атака на OWASP не е подходяща за системата за откриване на sqlmap, фокусирана върху SQL инжектиране.
Логично, ако можете да се уверите, че вашата система не е уязвима на атака чрез SQL инжектиране, тя автоматично няма да бъде уязвима на комбинирана атака. Трябва обаче да използвате други инструменти за тестване на писалка за да проверите дали вашият сайт е уязвим на DDoS атаки, XSS или отвличане на DNS. Всички системи са постоянно подложени на атаки за удостоверяване – трябва да осигурите сигурна самоличност и стратегия за управление на достъпа, за да защитите бизнеса си от заплахата от кракване на удостоверяване .
Системата sqlmap проверява работата със следните СУБД:
MySQL | Microsoft SQL сървър | Microsoft Access | MariaDB |
Оракул | PostgreSQL | IBM DB2 | SQLite |
Жар птица | Sybase | SAP Max DB | Informix |
MemSQL | TiDB | CockroachDB | HSQLDB |
H2 | MonetDB | Apache Derby | Apache Ignite |
Червено отместване на Amazon | Вертикална | Маккой | Скоро |
висока база | MimerSQL | CrateDB | Greenplum |
Дъжд | Кубрид | InterSystems Cache | ИРИС |
eXtremeDB | FrontBase | YugabyteDB | Виртуозен |
Raima Мениджър на база данни |
Системни изисквания за sqlmap
Можете да инсталирате sqlmap на Windows , macOS , и Linux .
Системата sqlmap е написана на Python, така че трябва да инсталирате Python 2.6 или по-късно на вашия компютър, за да стартирате sqlmap. Текущата версия към юли 2021 г. е 3.9.
За да разберете дали имате инсталиран Python, в Windows отворете командния ред и въведете python –версия . Ако нямате Python, ще видите съобщение, което ви казва да въведете отново python без параметри. Тип питон и това ще отвори Microsoft Store с пакета Python, настроен за изтегляне. Кликнете върху Вземете и следвайте инструкциите за инсталиране.
Ако имате тип macOS python –версия . Ако получите съобщение за грешка, въведете следните команди:
|_+_|В тези редове, $ представлява системната подкана – не пишете това.
Ако имате Linux, вече ще имате инсталиран Python.
Инсталирайте sqlmap
За да инсталирате sqlmap:
- Отидете на уебсайта за проекта sqlmap на адрес sqlmap.org .
- Ако имате Windows, щракнете върху Изтеглете .zip бутон за файл. Ако имате macOS или Linux, щракнете върху Изтеглете .tar.gz бутон за файл.
- Разопаковайте компресирания файл.
Вашата система автоматично ще наименува директорията по същия начин като компресирания файл. Това обаче е много дълго име, така че изберете новата директория да се нарича само sqlmap. Няма значение къде на вашия компютър създавате тази директория.
Изпълнява се sqlmap
Системата sqlmap е помощна програма от команден ред. За него няма GUI интерфейс. Така че отидете на командния ред на вашия компютър, за да използвате sqlmap. Променете в директорията sqlmap, която сте създали, за да стартирате помощната програма. Не е нужно да компилирате никаква програма.
Програмата, която изпълнявате, за да използвате sqlmap, се нарича sqlmap.py. Няма да работи, освен ако не добавите опция в края на името на програмата.
Опциите за sqlmap са:
-u URL | Целевият URL адрес формат:-в 'http://www.target.com/path/file.htm?variable=1' |
-d ДИРЕКТНО | Низ за връзка за директна връзка с база данни формат:-d DBMS://БАЗА_ДАННИ_FILEPATHили -d DBMS://ПОТРЕБИТЕЛ: ПАРОЛА@DBMS_IP:DBMS_PORT/ИМЕ НА БАЗА_ДАННИ |
-l ЛОГ ФАЙЛ | Анализирайте цел(и) от Burp или WebScarab прокси лог файл |
-m ГРУПОВ ФАЙЛ | Сканирайте множество цели, дадени в текстов файл формат:Файлът трябва да съдържа URL адрес на ред |
-r ФАЙЛ ЗА ЗАЯВКА | Зареждане на HTTP заявка от файл формат:Файлът може да съдържа HTTP или HTTPS транзакция |
-g GOOGLEDORK | Обработвайте резултатите от Google Dork като целеви URL адреси |
-c КОНФИГУРИРАНЕ | Заредете опции от конфигурационен INI файл |
--магьосник | Услуга за изпълнение с напътствия |
--актуализация | Актуализирайте sqlmap до най-новата версия |
--прочистване | Изчистете папката с данни на sqlmap |
--продухване-изход | Както по-горе |
--зависимости | Проверете за липсващи зависимости на sqlmap |
-ч | Основна помощ |
-хч | Разширена помощ |
-- версия | Покажете номера на версията |
Не можете да стартирате sqlmap без една от тези опции. Има много други опции и често е необходимо да се нанижат няколко опции последователно на командния ред.
Пълната атака изисква толкова много опции и входове, че е по-лесно да поставите всички тези опции във файл и след това да извикате файла, вместо да ги въвеждате всички. В този сценарий е конвенция всички опции да се съхраняват в текстов файл с разширение .INI. Бихте включили този списък с опции в командния ред с опцията -c, последвана от името на файла. Този метод премахва повтарящото се въвеждане на цялата дълга команда отново и отново, за да отчете правописни грешки или грешки във форматирането.
Още опции за sqlmap
Има много други превключватели, които можете да добавите към a sqlmap команда. Параметрите на опцията, които са базирани на знаци, трябва да бъдат затворени в двойни кавички („ “), числовите параметри не трябва да се поставят в кавички.
В интерес на краткостта в това ръководство, ние сме представили всичко това в PDF файл:
Кликнете върху изображението по-горе, за да отворите цялото sqlmap Cheat Sheet JPG в нов прозорец, или щракнете тук, за да изтеглите sqlmap Cheat SheetPDF .
Изпълнение на сканиране на атака чрез SQL инжектиране с sqlmap
Големият брой налични опции за sqlmap е плашещ. Има твърде много опции за преглед, за да разберете как да създадете атака с SQL инжекция. Най-добрият начин да придобиете знания за това как да извършвате различните видове атаки е да учете чрез пример .
За да изпитате как протича тестова система sqlmap, опитайте следното тестово изпълнение, като замените URL адреса на вашия сайт с маркера
Тази команда ще задейства изпълнение на всички процедури на sqlmap, като ви предлага опции над теста, докато продължава.
Системата ще покаже началния час на теста. Всеки ред на отчет включва времето, през което всеки тест е завършен.
Услугата sqlmap ще тествайте връзката към уеб сървъра и след това сканирайте различни аспекти на сайта. Тези атрибути включват набор от символи по подразбиране на сайта, проверка за наличие на отбранителни системи , като например защитна стена на уеб приложение или системи за откриване на проникване.
Следващата фаза на теста идентифицира СУБД, използвана за сайта. Ще се опита поредица от атаки за изследване на уязвимостта на базата данни на сайта. Това са:
- Атака с въвеждане на GET – това идентифицира чувствителността към класически SQLI и XSS атаки
- СУБД специфични атаки
- Базиран на булев сляп SQLI
- Системата ще поиска ниво и стойност на риска. Ако те са достатъчно високи, той ще изпълни базиран на времето сляп SQLI
- Базирана на грешки SQLI атака
- Базиран на UNION SQLI, ако нивото и стойностите на риска са достатъчно високи
- Подредени заявки
В отговор на опцията за банер, използвана в това изпълнение, sqlmap завършва изпълнението си чрез извличане банера на базата данни . Накрая се записват всички извлечени данни с обяснения на техните значения лог файл .
Както можете да видите, без много опции, дадени на командата, системата sqlmap ще премине през стандартна поредица от атаки и ще проверява с потребителя за решения относно дълбочината на теста, докато тестът напредва.
Малка промяна в командата ще изпълни същата батерия от тестове, но с помощта на a ПУБЛИКУВАНЕ като метод за изпитване вместо a ВЗЕМЕТЕ .
Опитайте следната команда:
|_+_|Кракване на пароли с sqlmap
Промяна само на една дума в първата команда, използвана за предишния раздел, ще ви даде набор от тестове, за да видите дали система за управление на пълномощията от вашата база данни има слабости.
Въведете следната команда:
|_+_|Отново трябва да замените URL адреса на сайта си с
Когато изпълните тази команда, sqlmap ще инициира поредица от тестове и ще ви даде редица опции по пътя.
Изпълнението на sqlmap ще опита базирана на времето сляпа SQLI и след това базирана на UNION сляпа атака. След това ще ви даде възможност да съхранявате хешове на пароли във файл за анализ с друг инструмент и след това ще ви даде възможност за атака, базирана на речник.
Услугите ще изпробват поредица от добре познати имена на потребителски акаунти и ще преминават през списък с често използвани пароли срещу всяко кандидатско потребителско име. Това се нарича „ касетъчна бомба ” атака. Файловият пакет на sqlmap включва файл с полезни натоварвания за тази атака, но вместо това можете да предоставите свой собствен файл.
Всеки път, когато sqlmap попадне на комбинация от потребителско име и парола, тя ще я покаже. След това всички действия за изпълнение се записват в лог файл, преди програмата да приключи изпълнението си.
Вземете списък с бази данни във вашата система и техните таблици
Информацията е сила и хакерите първо трябва да знаят какви екземпляри на база данни имате във вашата система, за да ги хакнат. Можете да разберете дали тази основна информация може да бъде лесно достъпна от натрапници със следната команда:
|_+_|Този тест ще включва базирани на време, базирани на грешки и базирани на UNION SQL инжектиране атаки. След това ще идентифицира марката на СУБД и след това ще изведе имената на базата данни. След това информацията, получена по време на тестовото изпълнение, се записва в лог файл, когато програмата приключи.
Проучете малко повече и получете списък на таблиците в една от тези бази данни със следната команда.
|_+_|Въведете името на един от екземплярите на базата данни, които сте получили от списъка в първата заявка на този раздел.
Тази тестова партида включва базирани на време, базирани на грешки и базирани на UNION атаки с SQL инжектиране. След това ще изброи имената на таблиците, които са в посочения екземпляр на базата данни. Тези данни се записват в лог файл, когато програмата приключи.
Вземете съдържанието на една от тези таблици със следната команда:
|_+_|Заменете името на една от таблиците, които сте открили за