Множественные уязвимости в PHP 4.4.0


Оглавление (нажмите, чтобы открыть):

Потенциальная уязвимость php-скриптов

Функции fopen, file, include и require могут открывать файлы с других сайтов по протоколам http и ftp. Эта возможность несёт в себе потенциальную уязвимость в php-скриптах, позволяющую использовать сайт как прокси.
Предупреждаю ничего нового в этом материале не будет. Несмотря на впечатляющие возможности для злоумышленника, данная уязвимость — просто комбинация общеизвестных свойств php.

В 2002 году параллельно несколькими группами, занимающимися поиском уязвимостей в ПО, была обнаружена серьёзная и мощная уязвимость в php.

В русскоязычном интернете эта уязвимость практически не была освещена. На русскоязычных сайтах по проблемам безопасности мне не удалось найти непосредственного сообщения об этой уязвимости.

Уязвимость: Url fopen wrapper

Для увеличения функциональности и упрощения кодирования, разработчики php сделали такую особенность в функциях fopen, file, include и прочих. Если имя файла начинается с https://, сервер выполнит HTTP-запрос, скачает страницу, и запишет в переменную как из обычного файла. Аналогично работают префиксы «ftp://», «php://» (последний предназначен для чтения и записи в stdin, stdout и stderr). Нужно это было для того, чтобы разработчики сайтов не мучались с библиотеками http-запросов и не писали их вручную. Данная опция отключается в настройках php, параметр allow_url_fopen.

CR/LF в HTTP-запросах

Комбинация символов carriage return и line feed в HTTP-запросе разделяет заголовки. Подробно об этом можно почитать в статье Антона Калмыкова «Генерация HTTP-запросов». Эту комбинацию символов можно передать в GET-запросе в виде «%0D%0A».

Untrusted input

На многих сайтах страницы генерируются скриптом-шаблонизатором. В скрипт перенаправляются все запросы сайта. Из REQUEST_URI берётся имя файла, который надо открыть. Файл считывается, к нему добавляется шаблон с навигацией, шапкой и т.п., и результат выдаётся клиенту.

Нерадивый или неопытный программист запросто может написать открытие файла без проверки данных:

От запроса отбрасывается первый символ — слэш — и открывается файл. Злоумышленник легко может вписать в качестве пути к файлу на сервере строку https://example.com: https://n00b.programmer.com/https://example.com Другой вариант — все адреса на сайте имеют вид https://n00b.programmer.com/index.php?f=news В таком случае злоумышленник будет пробовать открыть адрес типа https://n00b.programmer.com/index.php?f=https://example.com Очень важно не доверять входящим данным и фильтровать при помощи регулярных выражений входящие запросы.

Эксплойт

Поскольку в приведённом примере адрес никак не проверяется, в запрос можно вставить строку с HTTP-запросом. Если злоумышленник откроет путь

то скрипт выполнит HTTP-запрос:

Последние три строки скрипт добавляет автоматически, но два rn перед ними означают конец запроса. Таким образом, незащищённый скрипт можно использовать как прокси-сервер. Зная несколько «дырявых» сайтов, злоумышленник может выстроить из них цепочку, чтобы его было сложнее найти.

Умное использование эксплойта

Если у провайдера, предоставляющего бесплатный демо-доступ, дырявый сайт, можно написать скрипт для домашнего сервера, который бы формировал запросы к такому прокси-серверу и экономил немного денег. Это дело, безусловно, подсудное и наказуемое, но по большому счёту баловство. Более прибыльное использование чужой машины как прокси — рассылка коммерческого спама. Пример из статьи, написанной Ульфом Харнхаммаром:

(должно быть одной строкой) модуль PHP соединится с сервером mail.example.com по 25 порту и отправит следующий запрос:

GET / HTTP/1.0rn
HELO my.own.machinern
MAIL FROM:rn
RCPT TO:rn
DATArn
i will never say the word PROCRASTINATE againrn
.rn
QUITrnrn

HTTP/1.0rn
Host: mail.site1.st:25rn
User-Agent: PHP/4.1.2rnrn

PHP и почтовый сервер будут ругаться, но письмо будет отправлено. Имея такую уязвимость в чьем-то сайте, можно искать закрытый почтовый релей, принимающий от эксплуатируемого веб-сервера почту. Этот релей не будет в чёрных списках провайдеров, и рассылка спама может получиться очень эффективной. На своём сайте я нашёл множество запросов с 25-м портом в пути. Причём до начала этого года таких запросов не было. Раньше о такой уязвимости знали единицы любопытных пользователей, и лишь в прошлом году дыра стала общеизвестной и поставлена на поток спаммерами.

Меры защиты от эксплойта

Вам, как разработчику или владельцу сайта, важно сделать всё возможное, чтобы через ваш сайт никто не смог разослать спам. Если это получится, разослан он будет с какого-нибудь гавайского диалапа, владельцы которого не понимают человеческого языка, а крайним могут сделать именно вас.

Проверка журнала запросов

Для начала полезно ознакомиться со списком уникальных адресов, запрашиваемых с сайта. Это поможет узнать, были ли случаи атак и использования дырки. Обычно спамеры сразу проверяют возможность соединения с нужным им почтовым релеем по 25 порту. Поэтому искать следует строки «:25» и «%3A25».

Настройка php

Самый простой способ отключить возможую уязвимость — запретить открывать URL через файловые функции. Если вы администратор своего сервера — запрещайте allow_url_fopen в настройках php. Если вы просто клиент — запретите у себя локально. В файле .htaccess для корня сайта напишите строку: php_value allow_url_fopen 0 Если вы злой хостинг-провайдер, можете запретить URL fopen wrapper для всех клиентов при помощи директивы php_admin_value. Включение безопасного режима (safe mode) в данном случае не поможет, функция продолжает работать исправно.

Изменение кода

Возможна такая сложная ситуация: вы клиент, а нерадивый админ хостинг-провайдера вписал все установки php в php_admin_value, и поменять их нельзя. Придётся модифицировать код скриптов. Самый простой способ — искать функции fopen, file и include, открывающие файлы из имён переменных. И вырезать функцией str_replace префиксы https:// и ftp://. Впрочем, иногда скрипту, всё-таки, необходимо открывать адреса, которые приходят от пользователя. Например, скрипт-порнолизатор, который вставляет в текст матерки или заменяет текст на ломаный русский язык («трасса для настайащих аццоф, фсем ффтыкать»). Наверное, больше всего от неряшливого программирования пострадали именно эти сайты. В данном случае вполне можно ограничиться вырезанием «rn» из полученной строки. В таком случае злоумышленник не сможет добавить свой собственный заголовок к запросу, который отправляете вы.

Прекращение работы при оффенсивном запросе

Клиент, сканирующий ваш сайт на предмет непроверяемых переменных, создаёт лишний трафик и загружает процессор сервера. Понятно, что ему не нужны страницы, которые генерирует ваш сайт, если они не работают как прокси. Желательно убивать такие запросы ещё до запуска php-интерпретатора. Это можно сделать при помощи модуля mod_rewrite. В файле .htaccess в корне сайта я поставил такую строку:

При этом предполагается, что на сайте не будут отправляться методом GET формы с многострочным пользовательским вводом. Иначе они будут остановлены этим правилом.

Если вы при помощи mod_rewrite поддерживаете адресацию, удобную для чтения, то скорее всего, двоеточие и CRLF не используются. Поэтому другие строки RewriteRule не будут подходить под сканирующий запрос, и строку, прекращающую обработку запроса, лучше поместить в конце списка правил. Тогда обычные запросы будут переписываться и перенаправляться до этой строки (используйте флаг [L]), что уменьшит время их обаботки. В зависимости от разных условий оно может варьироваться.


Множественные уязвимости в PHP > 4.4.0

Эта тема будет посвящена обнаруженным уязвимостях и исправлениях к ним, важным для системных администраторов.

Разрешается постить только конкретные факты (при необходимости — со ссылками), посвященные теме топика. Обсуждения не разрешены, если они не содержат новых фактов. Обсуждать можно, например, в Андеграунде.

Мастер Йода рекомендует:  Сила и мощь веб-компонентов

Полезные ссылке по теме:

Всего записей: 2887 | Зарегистр. 30-05-2002 | Отправлено: 21:42 15-04-2003 | Исправлено: Zagreev, 13:57 19-06-2006
Zmey

Strangled by Lynx

Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору По поводу уже успевшей нашуметь уязвимости в протоколе TCP/IP:
Уязвимость в большинстве реализаций TCP стека позволяет удаленному атакующему вызвать отказ в обслуживании

Наличие эксплоита: Нет

Описание: Уязвимость обнаружена в большинстве реализаций TCP стека. Удаленный пользователь может вызвать отказ в обслуживании, используя TCP reset нападение.

UK National Infrastructure Security Co-Ordination Centre (NISCC) сообщает, что несколько реализаций Transmission Control Protocol (TCP) уязвимы к нападению с использованием TCP RST флажка. Удаленный пользователь может преждевременно закончить TCP сеанс, тем самым, вызывая отказ в обслуживании.

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

Согласно NISCC, одним из уязвимым приложением является Border Gateway Protocol (BGP), так как он использует постоянный TCP сеанс между парой BGP объектов. Преждевременное завершение TCP сеанса может заставить устройство реконструировать таблицу маршрутизации, что может привести к “колебанию маршрута” («route flapping»). В случае BGP, уязвимость можно смягчить, используя TCP MD5 сигнатуры и меры антиспуфинга.

Могут быть уязвимы другие приложения, типа Domain Name System (DNS) и (Secure Sockets Layer) приложений, но с меньшей степенью опасности.

Удаленный пользователь может послать TCP пакет с установленным RST (reset) флажком (или SYN флажком) с поддельным IP адресом источника и адресата и TCP портами, чтобы оборвать TCP сессию. Обычно, вероятность подбора правильного “sequence number” равна 1 из 2^32. Однако в действительности, удаленный пользователь может предположить соответствующий “sequence number” с наиболее большей вероятностью, потому что большинство TCP выполнений примут любой “sequence number” в пределах некоторого диапазона, заданного величиной окна. Как сообщается, правильный “sequence number” может быть подобран менее чем за 4 попытки.

На сегодняшний день уязвимы следующие производители:
Cray Inc. UNICOS, UNICOS/mk и UNICOS/mp системы.
Check Point в последних версиях for VPN-1/FireWall-1 (R55 HFA-03)
Internet Initiative Japan, Inc (IIJ)
InterNiche NicheStack и NicheLite
Juniper Networks
Большинство продуктов от CISCO, включая IOS и не IOS устройства.

Решение: Установите соответствующее исправление от производителя уязвимых программ.

Ссылки по теме:
Cisco Security Advisory: аTCP Vulnerabilities in Multiple IOS-Based Cisco Products — на английском языке, даются некоторые советы по уменьшению риска от данной уязвимости на маршрутизаторах Cisco

Cert.org:Technical Cyber Security Alert TA04-111A

Всего записей: 303 | Зарегистр. 07-12-2001 | Отправлено: 18:24 22-04-2004
hoochie

Full Member

Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Microsoft Security Bulletin MS04-011
Security Update for Microsoft Windows (835732)

Issued: April 13, 2004
Updated: April 28, 2004
Version: 1.2
Summary

Who should read this document: Customers who use Microsoft® Windows®
Impact of vulnerability: Remote Code Execution
Maximum Severity Rating: Critical
Recommendation: Customers should apply the update immediately.

Обзор
Было обнаружено несколько проблем безопасности, позволяющие злоумышленнику поставить под угрозу безопасность компьютера с системой Windows и получить возможность управления им. Чтобы защитить компьютер, установите это обновление от корпорации Майкрософт. После установки этого компонента может потребоваться перезагрузка компьютера.

update RUS 6.6 MB Microsoft Windows 2000 Service Pack 2, Microsoft Windows 2000 Service Pack 3, and Microsoft Windows 2000 Service Pack 4.
update RUS 2.6 MB Microsoft Windows XP and Microsoft Windows XP Service Pack 1.
update EN 1.9 MB Microsoft Windows Server 2003.
Для остальных версий windows апдейты найдете сами по ссылке.
Эти обновления устраняют уязвимость, используемую свежеиспеченным червем Worm.Win32.Sasser.b по классификации Касперского.

Всего записей: 434 | Зарегистр. 30-03-2003 | Отправлено: 12:56 03-05-2004 | Исправлено: hoochie, 12:56 03-05-2004
DmitryV

Advanced Member

Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Цитата:

update EN 1.9 MB Microsoft Windows Server 2003.

Установка не смогла завершится (застряла как вкопанная

50%)после перезагрузки и отката слитела служба rras кто ставил поделитесь что к чему (W2003 Ser Ent.ed eng) p42,8e ram512, asus p4c800-e-delux

Господа, еще раз читаем шапку. В этой теме только информация о наличии уязвимости и/или исправления. Конкретные проблемы обсуждайте в других темах. при необходимости создавайте новые темы. lynx.

Всего записей: 1192 | Зарегистр. 12-01-2003 | Отправлено: 14:29 06-05-2004 | Исправлено: lynx, 23:01 25-05-2004
hoochie

Full Member

Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Цитата:

Установка не смогла завершится

Я ставил на три srv2003EE eng. На двух стало нормально, на третьем — что-то подобное, как и у тебя. Распаковывается нормально, а когда начинается копирование DLL, то зависает. Причем пробовал несколько раз — зависает не на одной и той же, а на разных DLL. Названия, к сожалению, не записал. Система на AMD, Asus, chip nForce. Есть подозрение на софт, предустановленный перед апдейтом. Т.е., придется сносить все нафиг и ставить заплатки, а потом все остальное.
Насчет того, что RRAS слетела — что ж вы батенька, надо было backup partition сделать. Мелкомягкие сами же предупреждают перед усановкой.
А вообще, здесь запрещено обсуждение — только баги.

Всего записей: 434 | Зарегистр. 30-03-2003 | Отправлено: 09:44 08-05-2004
zolboch

Junior Member

Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Никто не сталкивался с тем что при установке на Win2000Server русская версия SP4 перестает работать удаленный доступ по модему (машина работает как удаленный сервер до него дозваниваются по модему и выходят в инет и локалку) клиенты дозваниваются но ни получают ни обного пакета после того как залогинятся И можно ли как нибудь исправить это может есть исправление этой проблеммы

Читать умеем? Еще раз читаем шапку. В этой теме только информация о наличии уязвимости и/или исправления. Конкретные проблемы обсуждайте в других темах. при необходимости создавайте новые темы. lynx.

Всего записей: 112 | Зарегистр. 21-04-2004 | Отправлено: 14:38 23-08-2004 | Исправлено: lynx, 15:46 25-08-2004
Zmey

Strangled by Lynx

Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору В сервере Samba найдена опасная дыра

В распространенном сервере Samba, основанном на протоколе SMB (Server Message Block), выявлена весьма серьезная уязвимость.

Как отмечается в бюллетене безопасности на сайте разработчиков, брешь обеспечивает возможность проведения DoS-атак на удаленные компьютеры.

Проблема связана с неправильной работой функции ms_fnmatch() и проявляется при обслуживании сформированных особым образом имен файлов. В качестве примера вредоносного кода можно привести строку «dir ***********************************************z».

Дыра присутствует в сервере Samba версий 3.0-3.0.7.
Впрочем, патч для уязвимости уже выпущен и доступен для загрузки на этой странице.

Источник:Compulenta.Ru

Всего записей: 303 | Зарегистр. 07-12-2001 | Отправлено: 12:26 11-11-2004 | Исправлено: Zmey, 12:26 11-11-2004
Zmey


Strangled by Lynx

Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору FreeBSD-SA-04:16.fetch
Анонс от 2004-11-18

Переполнение буффера в утилите fetch.

Уязвимость касается всех версий FreeBSD.

Для устранения уязвимости обновите свою версию FreeBSD либо наложите патч:

Выполните следующие комманды войдя в систему под пользователем root:

# cd /usr/src
# patch

Всего записей: 303 | Зарегистр. 07-12-2001 | Отправлено: 14:55 23-11-2004
merlkerry

Advanced Member

Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Wins.exe remote vulnerability.
https://www.immunitysec.com/downloads/instantanea.pdf

———-
Вокруг одни враги.
Я испытываю естественный скептицизм по поводу чистоты человеческих намерений.
Всего записей: 1521 | Зарегистр. 16-09-2002 | Отправлено: 14:07 30-11-2004
Zmey

Strangled by Lynx

Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору Новая уязвимость FreeBSD.

Раскрытие частей памяти ядра FreeBSD через procfs и linprocfs.

Распостраняется на: Все версии FreeBSD.

Исправлено:
2004-12-01 21:33:35 UTC (RELENG_5, 5.3-STABLE)
2004-12-01 21:34:23 UTC (RELENG_5_3, 5.3-RELEASE-p2)
2004-12-01 21:34:43 UTC (RELENG_5_2, 5.2.1-RELEASE-p13)
2004-12-01 21:33:57 UTC (RELENG_4, 4.10-STABLE)
2004-12-01 21:35:10 UTC (RELENG_4_10, 4.10-RELEASE-p5)
2004-12-01 21:35:57 UTC (RELENG_4_8, 4.8-RELEASE-p27)

Для устранения уязвимости:

Обновите свою версию FreeBSD, либо наложите соответствующий патч.

Скачайте патч, для своей версии:
Для FreeBSD 4.x

Выполните следующие команды, войдя в систему под пользователем root:

# cd /usr/src
# patch

Всего записей: 303 | Зарегистр. 07-12-2001 | Отправлено: 10:58 02-12-2004 | Исправлено: Zmey, 11:10 02-12-2004
Zmey

Strangled by Lynx

Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору Множественные уязвимости в PHP4
Всего записей: 303 | Зарегистр. 07-12-2001 | Отправлено: 19:28 16-12-2004
Leecher

Full Member

Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору Свежак Протухший.
https://isc.sans.org/diary.php?date=2005-03-06
Снова работает LAND

Цитата:

New LAND Attack on Windows XP and 2003 Server. A report on Bugtraq late yesterday suggested that a single crafted packet could cause Windows XP SP2 and Windows 2003 Server to become unstable. Our initial tests show that Windows XP Professional seems to be vulnerable, but Windows XP Home Edition is not. We have not been able to test a Windows 2003 Server yet, and are interested in any results that others may have. Any host-based firewall on the target must be turned off to verify the attack.

To test the vulnerability, use a packet crafting tool such as hping to send a single forged packet at a target system. Set the source IP and port to be the same as the target’s IP and port, and set the SYN bit. Using hping2 the command would be

hping -V -c 100 -d 40 -S -s 110 -p 110 -a 192.168.1.2 192.168.1.2

hping2 target
-V for verbose
-c # of packets
-d bytes of data
-S SYN
-s source port
-p destination port
-a spoof address

(Handler Dan Goldberg contributed to these tests, thanks Dan!)

According to the posting on Bugtraq, Microsoft has been notified about this potential vulnerability. If you do run the tests, please tell us what tool you used to craft the packets, the command you used, the target operating system with SP level, and the results. We’ll publish a summary in tomorrow’s diary.

UPDATE, 7 MAR 05 1715 GMT. After receiving several postings from readers, we have learned that the hping command above needs a bit of tweaking. To verify this vulnerability, you have to send the packets at a listening port, and you have to keep the source port constant. Verify the target computer is listening on a port by running netstat or tcpview, then choose an open (listening) port for the test. Also, include the «-k» (keep) option in the hping command:

hping -V -k -c 100 -d 40 -S -s 110 -p 110 -a 192.168.1.2 192.168.1.2

(assumes that tcp/110 is listening)

Всего записей: 538 | Зарегистр. 18-10-2003 | Отправлено: 12:35 09-03-2005
mtersahakian

Newbie

Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Цитата:

Microsoft HotFix & Security Bulletin Service
О всех багах присылают на мыло

линк устарел. подписаться можно здесь. обычная подписка или rss

В PHP найдены множественные уязвимости

Массив GLOBALS является недостаточно защищенным. Удаленный пользователь может переопределить глобальные переменные с помощью multipart/form-data POST запроса со специально сформированным полем file upload или посредством сценария, вызывающего функцию extract() или «import_request_variables()». Удачная эксплуатация уязвимости требует, чтобы опция register_globals была включена в конфигурационном файле PHP.

Обнаружена ошибка при обработке входных данных в функции parse_str(), когда эта функция вызывается только с одним параметром. Злоумышленник может отключить memory_limit во время обработки входных данных в функции parse_str() путем отправки уязвимой функции большого количества переменных. Функция parse_str(), на время обработки входных данных, включает опцию register_globals, и если во время выполнения функции произойдет отключение memory_limit, то опция register_globals останется включенной до перезагрузки веб-сервера.

Межсайтовый скриптинг возможен при обработке входных данных в функции phpinfo(). Удаленный пользователь может с помощью специально сформированного URL выполнить произвольный HTML сценарий в браузере жертвы в контексте безопасности уязвимого сайта.


Удаленный пользователь может обойти механизмы безопасности safe_mode и open_basedir с помощью модулей ext/curl и ext/gd.

Неопределенная ошибка при вызове функции virtual() в Apache 2 может быть использована для обхода ограничений безопасности директив safe_mode и open_basedir.

«Дыре» присвоен ретинг опасности «средняя». Уязвимы PHP 4.4.0 и более ранние версии, 5.0.5 и более ранние версии. Для использования уязвимости нет эксплойта. Для решения проблемы установите последнюю версию (4.4.1) с сайта производителя, сообщил Securitylab.

Множественные уязвимости в PHP > 4.4.0

Одним из наиболее значимых вопросов для web-программистов является безопасность php-скриптов. Все программисты в той или иной мере используют различные методы чтобы обезопасить свой проект, но, к сожалению, в большинстве случаев используется защита от нескольких уязвимостей, при этом остальные проблемные места даже не рассматриваются.
В данной статье перечислены основные виды уязвимостей PHP и рассмотрены способы защиты от них.

Виды уязвимостей PHP

Правила написания безопасного кода на PHP

  1. Блокирование вывода ошибок
    Для этого достаточно в программном коде задать или в файле добавить строку
  2. Использование сложных паролей для доступа к административным страницам
    Для этого достаточно использовать многозначные пароли, не имеющие семантического значения (например, К7O0iV98dq).
  3. Логирование критических действий пользователя
    Не обеспечивает защиту напрямую, но позволяет выявить взломщиков и определить уязвимости, которые они использовали. Для этого действия пользователя и переданные им данные, которые касаются критических моментов работы системы, достаточно записывать в обычный текстовый файл.
    Пример функции логирования и её работы:
  4. Закрытие доступа к модулям сайта
    Обеспечивает защиту от попыток просмотра их содержимого или выполнения. Для этого достаточно в файле настроить доступ к файлам модулей при помощи конструкций и .
    Например, мы закрываем доступ ко всем модулям с расширением , кроме файла :
  5. Отключение возможности задания глобальных переменных
    Для этого достаточно в настройках сервера задать или в файле добавить строку . Использование проблему не решит так, как переменные задаются до начала выполнения скрипта.
  6. Отключение возможности использования удаленных файлов
    Для этого достаточно в настройках сервера задать . Это обеспечивает частичную защиту от PHP-инъекций, но не полную, так как взломщик может передавать не ссылку на файл с программным кодом, а сам программный код. Для полной защиты от PHP-инъекций необходимо дополнительно использовать фильтрацию поступивших данных. Иногда данную меру защиты невозможно использовать из-за особенностей работы проекта (нужно обращаться к удалённым файлам).
  7. Фильтрация поступающих данных
    Обеспечивает защиту от большенства уязвимостей. Универсального решения не существует. Желательно использовать проверку по «белому» списку символов в совокупности с проверкой на запрещённые слова. «Белым» называется список разрешенных символов. В этот список не должны входить опасные символы, например, . К запрещённым словам можно отнести: , а также html-теги.
    Пример фильтрации поступающих данных:
  8. Проверка на загрузку файла при помощи HTTP POST
    Обеспечивает защиту от PHP-инъекций через загрузку файлов. Для обеспечения этого загруженные на сервер файлы необходимо проверять функцией или перемещать функцией . Данный вид защиты можно не использовать, если отключена возможность задания глобальных переменных.
  9. Экранирование символов кавычек данных, передаваемых в базу данных
    Обеспечивает защиту от SQL-инъекций. Наиболее оптимальным методом является обработка всех поступивших не числовых данных с помощью функции . Можно так же использовать автоматическое экранирование, поступающих данных. Для этого достаточно в файле добавить строку , но этот способ не является надёжным, так как может привести к двойному экранированию.
    Пример экранирования кавычек с помощью функции :

  • Преобразование специальных символов в html-сущности перед выводом
    Обеспечивает защиту от XSS. Для этого данные, введенные пользователем, которые могут содержать нежелательные html-тэги, при выводе достаточно обработать функцией . Данный вид защиты можно не использовать, если фильтрация поступающих данных отсеивает опасные html-тэги.
  • Как видите создание продуманной системы безопасности скриптов не такое трудоёмкое дело как кажется.
    Данная статья не претендует на роль учебника по безопасности скриптов, но Я надеюсь, что она подтолкнёт php-программистов использовать более продуманные методы защиты.

    Уязвимость PHP-кода (eval inj)

    Подскажите, пожалуйста, в чём уязвимость php кода, представленного ниже. Насколько я понял, злоумышленник может получать значения всех переменных в коде (в том числе и глобальных). Есть ли в этом коде возможность исполнения произвольного кода?

    Заранее спасибо за ответы.

    SOURCE:

    UPDATE: Добрые люди подсказали пример обхода кавычек. например передать в качестве templateTitle <$> ну и прочие вкусные интересные функции. Не совсем понимаю почему фигурные скобки помогают обойти фильтрацию. Видимо надо манцы по пхп пойти читать.

    Множественные уязвимости в PHP > 4.4.0

    Что вас интересует на нашем сайте больше всего?

    Голосов: 29
    Вы должны авторизироваться, чтобы голосовать.
    Начат: 16.05.2020 07:06

    Гости:
    [Ваш IP] 20:23:04
    /Новости
    69.162.124.235 20:22:36
    • 06.03.2013 09:03
    • mirivlad
    • Безопасность

    Уязвимые версии: PHP-Fusion 7.02.06, возможно более ранние версии.

    Описание:
    Уязвимость позволяет удаленному пользователю произвести XSS нападение.

    1. Уязвимость существует из-за недостаточной обработки входных данных в параметрах «news_id», «news_image», «news_image_t1» и «news_image_t2» в сценарии administration/news.php. Удаленный пользователь может с помощью специально сформированного запроса выполнить произвольные SQL команды в базе данных приложения.

    Примечание: Для успешной эксплуатации уязвимости необходимо иметь права доступа «administer news».

    2. Уязвимость существует из-за недостаточной обработки входных данных в параметре «article_id» в сценарии administration/articles.php. Удаленный пользователь может с помощью специально сформированного запроса выполнить произвольные SQL команды в базе данных приложения.

    Примечание: Для успешной эксплуатации уязвимости необходимо иметь права доступа «administer articles».

    3. Уязвимость существует из-за недостаточной обработки входных данных в параметре «highlight» в сценарии forum/viewthread.php (когда параметр «thread_id» равен легитимному идентификатору заметки форума). Удаленный пользователь может с помощью специально сформированного запроса выполнить произвольный код сценария в браузере жертвы в контексте безопасности уязвимого сайта.


    PS: данные уязвимости доступны после доступа к админ панели, jikaka

    Проверка сайта на уязвимость

    04.07.2012, 00:20

    Уязвимость сайта
    Всем привет! Сайт сделан на старой самописной CMS. На формуме сайта стали появляться спам сообщения.

    Проверка с сайта
    Привет , и я задался таким вопросом , как сделать проверку на сайте ключа активации на PHP Devel.

    Уязвимость сайта
    Приветствую. Ребята помогите найти на моем сайте уязвимости. Просто не уверен в безопасности.

    Анализ сайта на уязвимость
    Здравствуйте. Мне нужно проанализировать сайт на уязвимости. Для этого использовал XSpider 7.7.

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

    04.07.2012, 10:42 2
    04.07.2012, 20:27 [ТС] 3
    04.07.2012, 23:39 4

    gigs, проверить можно. Платно. Ищи сервисы, только сначала отзывы смотри.

    Есть ряд простых рекомендаций, следуя которым у тебя не будет XSS или SQL injection.
    Например от большинства XSS, основанных на случайной ошибке верстальщика, спасет использование шаблонизатора с экранированием по умолчанию. А против SQL injection спасут prepared-запросы.

    Никакие «универсальные скрипты защиты» не помогут. Иначе бы их функционал давно бы в языки внедрили. Но этого не сделали(т.к. такое невозможно).

    04.07.2012, 23:39
    05.07.2012, 10:48 5

    пропускаем только цифры длиной не больше 4.

    В старых версиях php 4 версий и ниже существовали уязвимости в стандартных функция фильтрации слеширования и др. возможно остались ещё другие уязвимости о которых я ни знаю в новых версиях php. Если даже по максимум защитится, но на хостинге допустим будет уязвимость или слабый пароль на ftp это ни от чего не спасёт. При проверки на уязвимости нужно проверять все способы. Защита мала эффективна от специалиста.

    05.07.2012, 20:34 [ТС] 6
    05.07.2012, 21:00 7
    05.07.2012, 21:05 [ТС] 8
    05.07.2012, 21:21 9

    все запросы к файлам, которые не существуют, редиректишь вебсервером на index.php и разбираешь полученный запрос роутером.

    есть еще говнокодистый вариант, где роутинг производится правилами вебсервера, но его не используй.

    05.07.2012, 21:28 [ТС] 10
    05.07.2012, 21:36 11
    05.07.2012, 21:59 [ТС] 12
    05.07.2012, 22:22 13

    Т.е. я не шутил, когда говорил про пару строк, я имел ввиду это буквально: 1-10 строк.
    3. Логика(модель). Этот код ничего не знает о запросах, куках и т.д., ведь этим занимается обработчик. Но данный код выполняет всю бизнес-логику приложения. Вся работа с файлами, базой, алгоритмами тут.
    4. Отображение(вид). Занимается отображением данных, полученных их контроллера. Естественно, может содержать логику отображения.

    Данная схема называется MVC. Это шаблон проектирования, и смысл его именно в разделении логики на 3-4 части.

    Уязвимости в PHP 4.4.x

    На сайте Secunia.com появилась информация о двух уязвимостях, обнаруженных в PHP 4.4.x. Данные уязвимости отнесены к категории умерено-критических, поэтому настоятельно рекомендуется обновить PHP до версии 4.4.3.

    В целях безопасности рекомендуется загрузить с официального сайта: PHP 4.4.3.

    Подробную информацию об этой уязвимости можно получить на сайте Secunia.com.


    Читайте также

    Joomla!® CMS — пожалуй, лучшая система управления контентом с открытым исходным кодом

    Joomla! — это больше, чем просто программное обеспечение, это люди, включающие разработчиков, дизайнеров, системных администраторов, переводчиков, копирайтеров, и, что самое главное — простых пользователей.

    Мы рады пригласить вас в ряды нашего сообщества!

    Новости портала

    Вышел релиз безопасности Joomla 3.9.13

    Обновление локализации для Joomla 3.9.12

    Вышел релиз безопасности Joomla! 3.9.12

    Вышел релиз безопасности Joomla! 3.9.11

    Вышел релиз Joomla! 3.9.10

    Новое в блогах

    Работа команды безопасности Joomla

    Joomla 4 в пути.

    Коллекция переопределений модулей Joomla

    13 причин почему стоит выбрать Joomla

    Обзор хостинг-провайдера Fornex

    Комментарии

    • Кирилл Костиков 31.10.2020 20:00

    Популярные записи

    Joomlaportal.ru © 2005-2020 Все права защищены

    Использование материалов сайта возможно только при наличии согласия администрации и активной ссылки на источник.

    Joomla!® является торговой маркой компании Open Source Matters inc в США и др. странах. Название Joomla! и его вариации, такие как J, Joom и т.д., используются в рамках ограниченной лицензии, определённой компанией Open Source Matters. Проект Joomlaportal не относится к компании Open Source Matters или проекту Joomla! Точки зрения представленные на данном сайте не являются официальными точками зрения Joomla Project или Open Source Matters.Торговая марка Joomla® и логотип используются в рамках ограниченной лицензии, предоставленной Open Source Matters.

    Уязвимость PHP-кода (eval inj)

    Подскажите, пожалуйста, в чём уязвимость php кода, представленного ниже. Насколько я понял, злоумышленник может получать значения всех переменных в коде (в том числе и глобальных). Есть ли в этом коде возможность исполнения произвольного кода?

    Заранее спасибо за ответы.

    SOURCE:

    UPDATE: Добрые люди подсказали пример обхода кавычек. например передать в качестве templateTitle <$> ну и прочие вкусные интересные функции. Не совсем понимаю почему фигурные скобки помогают обойти фильтрацию. Видимо надо манцы по пхп пойти читать.

    Как найти уязвимость на php сайте?

    Проблема такая, на сервере хостится куча сайтов клиентов, все на самописных движках.
    В последнее время с сервера идет постоянная массовая рассылка спама (( Очевидно что используется какая то уязвимость в каком то сайте (примерно знаю в каком судя по домену в отправляемых email`ах),

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

    Есть конечно вариант отключить на сервере sendmail, но он используется практически на всех сайтах (отправка всяких форм\сообщений и т.п.)

    Может кто сталкивался? Подскажите в какую сторону копать?

    • Вопрос задан более трёх лет назад
    • 9132 просмотра

    Решал аналогичную задачу.
    Подменить sendmail_path вот на такое:

    В моём примере скрипт только логирует отосланое письмо. Чтобы почта ходила, вам нужнo добавлять заголовок received и класть файлик в папку с очередью sendmail; Ну и логировать getenv(‘PWD’);
    Затем адресно прописать п**дюдей по этому самому getenv(‘PWD’)

    Альтернативно, целесообразно заменить sendmail на exim, он умеет писать pwd в лог(к сожалению, я не смог быстро найти как это сделать)..

    Хоспади. Ну и насоветовали)

    На примере exim:
    while :; do cat /var/spool/exim4/input/*-H | grep X-PHP-Originating-Script: | sort | uniq; done
    через некоторое время нагрепается название скриптов и строчки, из которых происходит отправка писем.

    Добавить комментарий