Заливка шелла или LFI

Discussion in 'Уязвимости' started by zifus, 22 Apr 2016.

  1. zifus

    zifus Member

    Joined:
    15 Aug 2015
    Messages:
    85
    Likes Received:
    11
    Reputations:
    0
    Здравствуйте!! Нужна помощь, а то я уже все не могу, руки опускаются...
    Во общем суть такая! Есть доступ к PMA FILE_PRIV=no :mad: , но LOAD DATA LOCAL INFILE работает читаю файлы.Еще phpinfo.php есть. На сервере есть два сайта, один файловый хостинг картинок, а на втором стоит сайт на html c HESK есть доступ к админке. Есть там загрузчик файлов приведу его
    PHP:
    PHP:
    /* --> Attachments */
    $set['attachments']['use'] = empty($_POST['s_attach_use']) ? 1;
    if (
    $set['attachments']['use'])
    {
        
    $set['attachments']['max_number'] = intvalhesk_POST('s_max_number'2) );

        
    $size floatvalhesk_POST('s_max_size''1.0') );
        
    $unit hesk_htmlspecialcharshesk_POST('s_max_unit''MB') );

        
    $set['attachments']['max_size'] = hesk_formatUnits($size ' ' $unit);

        
    $set['attachments']['allowed_types'] = isset($_POST['s_allowed_types']) && ! is_array($_POST['s_allowed_types']) && strlen($_POST['s_allowed_types']) ? explode(','strtolowerpreg_replace('/[^a-zA-Z0-9,]/'''$_POST['s_allowed_types']) ) ) : array();
        
    $set['attachments']['allowed_types'] = array_diff($set['attachments']['allowed_types'], array('php''php4''php3''php5''phps''phtml''shtml''shtm''cgi''pl') );

        if (
    count($set['attachments']['allowed_types']))
        {
            
    $keep_these = array();

            foreach (
    $set['attachments']['allowed_types'] as $ext)
            {
                if (
    strlen($ext) > 1)
                {
                    
    $keep_these[] = '.' $ext;
                }
            }

            
    $set['attachments']['allowed_types'] = $keep_these;
        }
        else
        {
            
    $set['attachments']['allowed_types'] = array('.gif','.jpg','.png','.zip','.rar','.csv','.doc','.docx','.xls','.xlsx','.txt','.pdf');
        }
    }
    else
    {
        
    $set['attachments']['max_number']=2;
        
    $set['attachments']['max_size']=1048576;
        
    $set['attachments']['allowed_types']=array('.gif','.jpg','.png','.zip','.rar','.csv','.doc','.docx','.xls','.xlsx','.txt','.pdf');
    }

    Там идет проверка на php расширение, Может кто знает как обойти.

    Самое интересное файловый хостинг картинок, туда залил шелл через подмену tamper data, но залился он как JPEG:mad::mad: Привожу пример
    PHP:
    <?php 
    function thumbnails($f,$p,$t 2,$s 1,$q 90,$w 160) {
    if (empty(
    $p)) die("No thumbnail name in \$p");
    list(
    $width,$height,$type,$attr) = @getimagesize($f);
    if (!
    $type$type 3;
    if (!
    file_exists($f))
    {
    $src = @imagecreatefrompng('resize_error.png') or die ('Cannot Initialize new GD image stream');
    $s 0;
    }
    else
    {
    switch (
    $type)
    {
    case 
    1:
    $src imagecreatefromgif($f) or die ('Cannot Initialize new GD image stream');
    break;
    case 
    2:
    $src imagecreatefromjpeg($f) or die ('Cannot Initialize new GD image stream');
    break;
    case 
    3:
    $src imagecreatefrompng($f) or die ('Cannot Initialize new GD image stream');
    break;
    }
    }
    $w_src imagesx($src);
    $h_src imagesy($src);
    if (
    $t == 1)  
    {
    $ratio $w_src/$w;
    $w_dest round($w_src/$ratio);
    $h_dest round($h_src/$ratio);
    $dest = @imagecreatetruecolor($w_dest,$h_dest) or die('Cannot Initialize new GD image stream');
    $white imagecolorallocate($dest,255,255,255);
    imagefill($dest,1,1,$white);
    imagecopyresampled($dest,$src,0,0,0,0,$w_dest,$h_dest,$w_src,$h_src);
    }
    if (
    $t == 2)  
    {
    $dest = @imagecreatetruecolor($w,$w) or die('Cannot Initialize new GD image stream');
    if (
    $w_src >$h_src)
    imagecopyresampled($dest,$src,0,0,round((max($w_src,$h_src)-min($w_src,$h_src))/2),0,$w,$w,min($w_src,$h_src),min($w_src,$h_src));
    if (
    $w_src <$h_src)
    imagecopyresampled($dest,$src,0,0,0,0,$w,$w,min($w_src,$h_src),min($w_src,$h_src));
    if (
    $w_src == $h_src)
    imagecopyresampled($dest,$src,0,0,0,0,$w,$w,$w_src,$w_src);
    }
    if (
    $s == 1)  
    {
    $str '';
    $x_text $w_dest-70;
    $y_text $h_dest-15;
    $white imagecolorallocate($dest,255,255,255);
    $black imagecolorallocate($dest,0,0,0);
    imagestring($dest,2,$x_text-1,$y_text-1,$str,$black);
    imagestring($dest,2,$x_text+1,$y_text+1,$str,$black);
    imagestring($dest,2,$x_text+1,$y_text-1,$str,$black);
    imagestring($dest,2,$x_text-1,$y_text+1,$str,$black);
    imagestring($dest,2,$x_text-1,$y_text,$str,$black);
    imagestring($dest,2,$x_text+1,$y_text,$str,$black);
    imagestring($dest,2,$x_text,$y_text-1,$str,$black);
    imagestring($dest,2,$x_text,$y_text+1,$str,$black);
    imagestring($dest,2,$x_text,$y_text,$str,$white);
    }
    if (!
    file_exists($f))
    {
    header('Content-type: image/png');
    $black imagecolorallocate($dest,0,0,0);
    imagerectangle($dest,0,0,$w-1,$w-1,$black);
    imagepng($dest);
    exit;
    }
    @
    imagegammacorrect($dest,1,1.1);
    @
    imageinterlace($dest,1);
    switch (
    $type)
    {
    case 
    1imagegif($dest,$p);break;
    case 
    2imagejpeg($dest,$p,$q);break;
    case 
    3imagepng($dest,$p);break;
    }
    imagedestroy($dest);
    imagedestroy($src);
    return 
    true;
    }; 
    ?>
    PHP:
    <?php     session_start();
    include 
    'inc/const.php';
    $q   $_GET['q'];
    $ref $_GET['ref'];
    if (isset(
    $_COOKIE['ref']))
    {
    $ref $_COOKIE['ref'];
    }
    if (
    $ref >0)
    {
    setcookie('ref',$ref,time()+3600*24*30,'/');
    }
    switch (
    $q)
    {
    case 
    'login':
    include(
    'tpl/login.php');
    break;
    case 
    'faq':
    include(
    'tpl/faq.php');
    break;
    case 
    'price':
    include(
    'tpl/price.php');
    break;
    case 
    'rules':
    include(
    'tpl/rules.php');
    break;
    case 
    'feedback':
    include(
    'tpl/feedback.php');
    break;
    case 
    'forgot':
    include(
    'tpl/forgot.php');
    break;
    case 
    'registration':
    include(
    'tpl/registration.php');
    break;
    default:
    include(
    'tpl/about.php');
    }
    include(
    'tpl/footer.php');
    ;echo 
    '   
    <div align="center"><strong>FHM v2.2</strong></a>
    </div>'
    ?>

    Помогите, подтолкните меня....
     
  2. yarbabin

    yarbabin HACKIN YO KUT

    Joined:
    21 Nov 2007
    Messages:
    1,662
    Likes Received:
    887
    Reputations:
    363
    насчет первого - попробуйте php2 и pht. насчет второго - расширение само такое высталвяется, вне зависимости от того, что заливаете?
     
    _________________________
    LETIFERUM likes this.
  3. LETIFERUM

    LETIFERUM New Member

    Joined:
    3 Apr 2016
    Messages:
    43
    Likes Received:
    0
    Reputations:
    0
    pht?это работает?надо проверить)
     
  4. BabaDook

    BabaDook Well-Known Member

    Joined:
    9 May 2015
    Messages:
    1,069
    Likes Received:
    1,563
    Reputations:
    40
    Не проверяй. Работает
     
  5. yarbabin

    yarbabin HACKIN YO KUT

    Joined:
    21 Nov 2007
    Messages:
    1,662
    Likes Received:
    887
    Reputations:
    363
    на deb7 и ubuntu
     
    _________________________
  6. zifus

    zifus Member

    Joined:
    15 Aug 2015
    Messages:
    85
    Likes Received:
    11
    Reputations:
    0
    Не работает.. Залилось но открывается как текст..
    Apache/2.2.9 (Debian) mod_mono/1.9 PHP/5.2.6-1+lenny16 with Suhosin-Patch mod_ssl/2.2.9 OpenSSL/0.9.8g Server
     
  7. BabaDook

    BabaDook Well-Known Member

    Joined:
    9 May 2015
    Messages:
    1,069
    Likes Received:
    1,563
    Reputations:
    40
    обидно. Может куда заливается файл , он не исполняется ?
     
  8. zifus

    zifus Member

    Joined:
    15 Aug 2015
    Messages:
    85
    Likes Received:
    11
    Reputations:
    0
    Я могу изменить папку загрузки.. Только не знаю насколько глубоко, как права настроены.
     
  9. yarbabin

    yarbabin HACKIN YO KUT

    Joined:
    21 Nov 2007
    Messages:
    1,662
    Likes Received:
    887
    Reputations:
    363
    php2 то че?
     
    _________________________
  10. zifus

    zifus Member

    Joined:
    15 Aug 2015
    Messages:
    85
    Likes Received:
    11
    Reputations:
    0
    Тоже самое, что pht!!:mad:
     
  11. zifus

    zifus Member

    Joined:
    15 Aug 2015
    Messages:
    85
    Likes Received:
    11
    Reputations:
    0
    Во втором беру шел.php пихаю в загрузку и в темпер меняю расширение на jpeg и Content-Type: на image/jpeg
     
  12. LETIFERUM

    LETIFERUM New Member

    Joined:
    3 Apr 2016
    Messages:
    43
    Likes Received:
    0
    Reputations:
    0
    pht работает...еще бы путь к нему в аттачментах найти..эх
     
  13. LETIFERUM

    LETIFERUM New Member

    Joined:
    3 Apr 2016
    Messages:
    43
    Likes Received:
    0
    Reputations:
    0
    e7b3b5d138f9eb4db99b2e6730c7b4a7 интересно сколько вот такое может брутиться)))
     
  14. zifus

    zifus Member

    Joined:
    15 Aug 2015
    Messages:
    85
    Likes Received:
    11
    Reputations:
    0
    То есть путь найти?
    Что это именно?
     
  15. LETIFERUM

    LETIFERUM New Member

    Joined:
    3 Apr 2016
    Messages:
    43
    Likes Received:
    0
    Reputations:
    0
    это я про свое)файл залить могу,а реальное название файла не могу найти)
     
  16. zifus

    zifus Member

    Joined:
    15 Aug 2015
    Messages:
    85
    Likes Received:
    11
    Reputations:
    0
    Вот выдернул из конфига, наверное поэтому и не исполняет .pht
    <VirtualHost>
    AddType application/x-httpd-php .php .php3 .php4 .php5 .phtml
    AddType application/x-httpd-php-source .phps
     
  17. blackbox

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

    Joined:
    31 Dec 2011
    Messages:
    364
    Likes Received:
    62
    Reputations:
    11
    Во все чужие темы лезть со своими вопросами это моветон. А во-вторых, можно попробовать подсмотреть по какому алгоритму такое имя создается и тогда шанс угадать будет выше, имхо.

    Нужно еще поискать какие-нибудь баги и чтение файлов хорошее подспорье в этом. В общем-то тот самый lfi найти будет уже вином. Мне кажется, что все же стоит еще поискать полезную информацию в сорцах на сайте, а там видно будет.
     
    #17 blackbox, 23 Apr 2016
    Last edited: 23 Apr 2016
  18. LETIFERUM

    LETIFERUM New Member

    Joined:
    3 Apr 2016
    Messages:
    43
    Likes Received:
    0
    Reputations:
    0
    да у нас ситуации схожи)мысли вслух были)
     
  19. zifus

    zifus Member

    Joined:
    15 Aug 2015
    Messages:
    85
    Likes Received:
    11
    Reputations:
    0
    На хастинге картинок стоит скрипт FHM v2.2. Может кто встречал, не могу найти админку. Там в конфиге изменяется путь к админке.
     
  20. zifus

    zifus Member

    Joined:
    15 Aug 2015
    Messages:
    85
    Likes Received:
    11
    Reputations:
    0
    Нашел еще один сайт на сервере. Там есть редактор файлов, но не сохраняет ни один файл.. Наверное права урезаны.
    Можно что то еще с ним сделать?
    PHP:
                     <h1><a href=?admin=editor>Редактор</a>/<a href=admin.php?admin=editor&filename=<?php echo $_GET['filename']; ?>><?php echo $_GET['filename']; ?></a></h1>
                       </div>

    <?php
      
    if(isset($_POST['content']))
      {
        
    $fd = @fopen($_POST['filename'],"w");
        if(!
    $fd) exit("Такой файл отсутствует");
        
    fwrite($fd,stripslashes($_POST['content']));
        
    fclose($fd);
        
    $_GET['filename'] = $_POST['filename'];
      }
    ?>
      Выберите файл для редактирования кода
    <?php

      
    if(isset($_GET['filename']))
      {
        
    $fd = @fopen($_GET['filename'],"r");
        if(!
    $fd) exit("Такой файл отсутствует");
        
    $bufer fread($fd,filesize($_GET['filename']));
        
    fclose($fd);
        
    ?>
          <form action = "admin.php?admin=editor" method="post">
              Идет редактирование <br>
    <? if(isset($_POST['edit']))
      { echo '<font color=red>Изменения сохранены</font><br>'; } ?>
    <textarea cols=116 rows=36 name="content"><?php echo $bufer?>
    А да еще теперь через него могу смотреть файлы других сайтов.
     
Loading...