PDA

Просмотр полной версии : Исследование ошибки в SquirrelMail


IgAlex
25.06.2009, 16:20
Добрый день.
Во время просмотра NVD, нашел уязвимость на SquirrelMail.
ссылка на уязвимость (http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2009-1381)
Решил провести небольшое исследование и посмотреть причину присвоения ей рейтинга 6.8
В описании сказано что атакующий может выполнять произвольные команды через оболочку metacharacters в строке имени пользователя.
Поставил себе SquirrelMail 4.10 на виртуалку. Полез посмотреть функцию map_yp_alias в скрипте functions/imap_general.php
/**
* 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

Qwazar
25.06.2009, 16:27
Символ ` = shell_exec()

http://ru.php.net/manual/ru/language.operators.execution.php

ShAnKaR
25.06.2009, 19:30
you can simple put map:map_yp_alias in your $imap_server_address
* in config.php

а она мб не напрямую вызывается а какимнить call_user_func

.Slip
25.06.2009, 20:59
>> Но как через неё можно выполнять команды?
Слепое выполнение по крайней мере уже есть, вывод не обязателен, т.к. при присваивании $yp = `ypmatch $username aliases`; , код уже выполняется.