Автор уязвимости: Maksymilian Arciemowicz
оригинальные статьи:
- http://secunia.com/advisories/16534/
- http://www.security.nnov.ru/Jdocument556.html
- http://www.securitylab.ru/vulnerability/239808.php
Данная SQL-инъекция и межсайтовый скриптинг актуальна для версии 0.750
по тексту:
- --- 1. SQL-инъекция в модуле Download ---
Данная SQL-инъекция не критическая, потому что эксплойт работает только под правами администратора (mysql)
Проблема в файле "modules/Downloads/dl-viewdownload.php".
- --------
if ($show!="") {
$perpage = $show;
} else {
$show=$perpage;
}
...
$result =& $dbconn->SelectLimit($sql,$perpage,$min);
- --------
varible $perpage.
$perpage при запросе не проверяется. Если подставить в параметр $show (количество
элементов на странице), например, "0" или "-3" или "asdf" или что-нибудь
вредоносное, значение не будет проверено
Решение:
Если вы не собираетесь переходить на версию 0.760, то решение следующее:
- в файле dl-viewdownload.php, в функциях viewdownload(), viewsdownload() перепишите код:
if ($show!="") {
$perpage = $show;
} else {
$show=$perpage;
}
на следующий код:
if ( (isset($show)) && is_numeric($show) && ($show >= 0) ) {
$perpage = $show;
} else {
$show = $perpage;
}
В случае неверного параметра будет выдано значение по умолчанию, взятое из конфигурации (Спасибо TAndrew)
- или следующее решение - в файле dl-viewdownload.php, в функциях viewdownload(), viewsdownload() перепишите код:
$result =& $dbconn->SelectLimit($sql,$perpage,$min);
поменять на
$result =& $dbconn->SelectLimit($sql,(int)$perpage,(int)$min);
В случае неверного параметра будет выдана пустая страница
|