
Чертовски маленький SQLi-сканер
Damn Small SQLi Scanner (DSSS) — это полнофункциональный сканер уязвимостей SQL-инъекций (с поддержкой параметров GET и POST), написанный менее чем в 100 строках кода.
В качестве дополнительных настроек поддерживает HTTP-прокси вместе со значениями HTTP-заголовков User-Agent, Referer и Cookie.
$ python3 dsss.py -h
Damn Small SQLi Scanner (DSSS) < 100 LoC (Lines of Code) #v0.4b
by: Miroslav Stampar (@stamparm)
Usage: dsss.py [options]
Options:
--version show program's version number and exit
-h, --help show this help message and exit
-u URL, --url=URL Target URL (e.g. "http://www.target.com/page.php?id=1")
--data=DATA POST data (e.g. "query=test")
--cookie=COOKIE HTTP Cookie header value
--user-agent=UA HTTP User-Agent header value
--referer=REFERER HTTP Referer header value
--proxy=PROXY HTTP proxy address (e.g. "http://127.0.0.1:8080")
$ python3 dsss.py -u "https://sekumart.sekuripy.hr/product.php?id=1"
Damn Small SQLi Scanner (DSSS) < 100 LoC (Lines of Code) #v0.4b
by: Miroslav Stampar (@stamparm)
* scanning GET parameter 'id'
(i) GET parameter 'id' appears to be blind SQLi vulnerable (e.g.: 'https://sekumart.sekuripy.hr/product.php?id=1%20AND%2069%3D69')
scan results: possible vulnerabilities found
Для запуска этой программы требуется Python версии 3.x.
Каталог tests содержит регрессионный набор, использующий только стандартную библиотеку. Все цели локальные: встроенный HTTP-фикстур обслуживает страницы, построенные реальной базой данных sqlite3, запросы которой формируются строковой интерполяцией, поэтому найденные там инъекции являются настоящими и доступ в Интернет не требуется:
$ python3 -m unittest discover -s tests -v
Те же случаи против реального MySQL пропускаются, если недоступны Docker и образ, а python3 tests/mutations.py возвращает каждую версию dsss.py до исправления и проверяет, что набор тестов это замечает.