Исследование ошибки в SquirrelMail

Discussion in 'Песочница' started by IgAlex, 25 Jun 2009.

  1. IgAlex

    IgAlex Member

    Joined:
    17 Nov 2008
    Messages:
    36
    Likes Received:
    27
    Reputations:
    8
    Добрый день.
    Во время просмотра NVD, нашел уязвимость на SquirrelMail.
    ссылка на уязвимость
    Решил провести небольшое исследование и посмотреть причину присвоения ей рейтинга 6.8
    В описании сказано что атакующий может выполнять произвольные команды через оболочку metacharacters в строке имени пользователя.
    Поставил себе SquirrelMail 4.10 на виртуалку. Полез посмотреть функцию map_yp_alias в скрипте functions/imap_general.php
    Code:
    /**
     * This is an example that gets IMAP servers from yellowpages (NIS).
     * you can simple put map:map_yp_alias in your $imap_server_address
     * in config.php use your own function instead map_yp_alias to map your
     * LDAP whatever way to find the users IMAP server.
     */
    function map_yp_alias($username) {
       $yp = `ypmatch $username aliases`;
       return chop(substr($yp, strlen($username)+1));
    }
    
    В чём ошибка понятно. Но как через неё можно выполнять команды?
    Попробовал найти место где вызывается функция, не нашел. Так же не бывает что бы функция была описана, но не использовалась.
    Просьба объяснить подробнее, как может быть реализована атака через эту ошибку. Потому как не понятно почему Exploitability Subscore выставлен 8.6
     
    1 person likes this.
  2. Qwazar

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

    Joined:
    2 Jun 2005
    Messages:
    989
    Likes Received:
    904
    Reputations:
    587
    Символ ` = shell_exec()

    http://ru.php.net/manual/ru/language.operators.execution.php
     
    #2 Qwazar, 25 Jun 2009
    Last edited: 25 Jun 2009
  3. ShAnKaR

    ShAnKaR Пачка маргарина

    Joined:
    14 Jul 2005
    Messages:
    904
    Likes Received:
    297
    Reputations:
    553
    а она мб не напрямую вызывается а какимнить call_user_func
     
  4. .Slip

    .Slip Elder - Старейшина

    Joined:
    16 Jan 2006
    Messages:
    1,571
    Likes Received:
    976
    Reputations:
    783
    >> Но как через неё можно выполнять команды?
    Слепое выполнение по крайней мере уже есть, вывод не обязателен, т.к. при присваивании $yp = `ypmatch $username aliases`; , код уже выполняется.