ONsec на Month of PHP Security

Поздравляю мембера ONsec AMS с почетным четвертым местом на Month of PHP Security.

http://php-security.org/2010/06/10/winners-of-the-month-of-php-security/

http://www.0x416d73.name/articles/51

Немного с опозданием поздравления, но все-таки.

Краткий обзор из блога AMS:

Первое место у Solar Designer – да, и тут дал о себе знать. Статья у него действительно хорошая и полезная – как правильно управлять аутентификационными данными в PHP – “How to manage a PHP application’s users and passwords”. Выражаясь сленгом, это “must read”. Там будет чего узнать всем – как разработчикам самих веб-приложений, так и исследователям безопасности.

Второе место получил Johannes Dahse, парень с неплохим потенциалом. Возможно, его кто знает по нику Flux Reiners, уже успел побывать в соавторстве книги Sichere Webanwendungen. А получил он своё место за сканер уязвимостей в веб-приложениях PHP на PHP, именуемый RIPS. По поводу сканера: честно говоря, ждал большего, но, видимо, это наилучшее, что доступно публично. Ну и автор обещает не останавливать развитие проекта. Кстати, советую почитать его блог.

Mateusz Kocielski на третьем месте, написал фаззер для PHP, который успел показать себя, найдя несколько уязвимостей в PHP. Назыается “The Minerva PHP Fuzzer”. Доступен к скачиванию.

Желаю дальнейших побед и творческих успехов!

Tags: , ,

Comments (1)

XSS в youtube может стать самой дорогой уязвимостью этого типа

Вчера появилось сообщение о том, что хакерам из группы 4chan удалось найти уязвимость межсайтового выполнения сценариев в популярном сервисе Youtube от Google.

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

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

Ссылки:

http://lenta.ru/news/2010/07/05/youtube/

http://thenextweb.com/socialmedia/2010/07/04/youtube-hacked-justin-bieber-videos-targeted/

Comments (2)

Обновление статистики дефейсов в зоне RU

Пересчитал статистику по данным zone-h.org с января по май включительно. Тенденция сохранилась, годовые нормы окончательно побиты, а ведь даже полугодие не кончилось еще…

Tags: , , ,

Comments (2)

Статистика дефейсов в зоне .RU

На базе статистики, открыто доступной на сайте zone-h.org была проведена выборка доменов в зоне RU.
По этим данным получилась интересная диаграмма, представленная ниже:
Примечательно, что за четыре прошедших месяца 2010 года, достигнута годовая “норма” взломов трех предыдущих лет.
Также стоит отметить, что причиной взлома в 2010 году преимущественно являются религиозные мотивы.

Tags: ,

Leave a Comment

Дэн Камински стартовал новый проект

Известный исследователь, подаривший миру, например DNS уязвимость стартовал новый проект.

http://recursion.com/

A new mechanism for preventing string injections, now open for community review..

Как написано на самом сайте, это некий новый механизм предотвращения атак внедрения строковых выражений. К которым относятся инъекции СУБД, межсайтовый скриптинг, и всяческие его разновидности.

Дэн не просто стартовал проект, а основал целую компанию вместе с Michael Tiffany и Henry Bar-Levav.

Механизм сам адаптируется к различным атакам и предотвращает самые изощренные вектора атаки.

Скачать и проверить софт можно по ссылке http://recursion.com/interpolique-0.1.tar.gz . Устанавливается на сервер и работает как WAF.

Пока руки до этого продукта не дошли, но уж очень интересно ;)

Презентация идеи ниже: [Read the rest of this entry...]

Tags: , , ,

Leave a Comment

Новый раздел

Решил открыть особый раздел сродни Лебедеву.
Публиковать буду только свой личный опыт, без копипастов.
Обновил сразу двумя находками за последнюю неделю.

Leave a Comment

Спам, который тронул за душу

Пришел недавно спам вот такого содержания:

Received: from * ; Fri, 23 Apr 2010 08:12:27 +0000
Received: from [122.144.5.23] (helo=23.subnet122-144-5.maxindo.net.id) by *
(envelope-from <countdown@egais.ru>)
id 1O5Dzv-0002LL-2c
for *; Fri, 23 Apr 2010 08:12:27 +0000
Received: * by egais.ru (8.13.8/8.13.8/Submit);
Fri, 23 Apr 2010 15:12:28 +0700
Message-ID: <20100423151228.e465pann846929@www.egais.ru>
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
Content-Type: text/plain; charset=”koi8-r”
MIME-Version: 1.0
X-Mailer: PHP mailer
Date: Fri, 23 Apr 2010 15:12:28 +0700
From: =?koi8-r?B?8KPU0iAg?= <countdown@egais.ru>
To: *
Subject: [SPAM] =?koi8-r?B?83DP3s7PINDSz8TBwCDH1dPFzsneztnKIMvSwc4g5PzrIDI1MQ==?=

Срочно продаю гусеничный кран ДЭК 251 в отличном состоянии
Cтоимостью 490 000 руб.

Тел: 89106657707 Евгений Николаевич

К объявлению, к сожалению, не была приложена фотография этого аппарата, что я и исправляю:

Уважаемый Евгений Николаевич, желаю Вам продать свой прекрасный кран, и в дальнейшем не прибегать к подобным рассылкам!

P.S. обратившись к домену, с которого пришло письму увидел надпись, завершающую картину:

Единая государственная автоматизированная информационная система (ЕГАИС) предназначена для автоматизации государственного контроля за объемом производства и оборота этилового спирта, алкогольной и спиртосодержащей продукции.

Tags: ,

Comments (2)

Статья в Х#136

Вот и вышел новый номер журнала. Как уже писал ранее, включил туда небольшую, но, надеюсь, интересную статью на тему инъекций в SQLite.

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

Отдельное спасибо выражаю на эту тему 0x416d73 который открыл мне глаза на тему преимуществ twitter над рассылками ;)

Статья не включает небольшой прикол связанный с XSS, описанный в блоге позже.

Зато включает другие замечательные вещи.

Надеюсь, будет интересно. Приятного чтения.

Tags: , ,

Comments (4)

Image HiJacking

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

Уже заезженный тэг <img> открывает новые возможности с помощью метода fileSize, описанного тут: http://msdn.microsoft.com/en-us/library/ms533752(v=VS.85).aspx

Рассмотрим простейший пример – веб-приложение после авторизации предоставляет какую-то картинку для пользователя, например:

http://example.com/getImage.php?image=myAvatar

Злоумышленник, зная это, может создать страницу следующего содержания:

<img id=”onsec” src=”http://example.com/getImage.php?image=myAvatar” >

<input type=”button” onclick=”if (onsec.fileSize>0) { alert(‘authorized on example.com’) else { alert(‘not authorized on example.com’)}”>

Таким образом, злоумышленник узнает в простейшем случае, есть ли у целевого пользователя доступ  к example.com.

Продолжая тему, хочется заметить, что в ряде случаев, удается получить дополнительную информацию из самого значения размера картинки. Это может быть любая логическая информация веб-приложения, скажем, один и тот же скрипт может показывать администраторам картинки одного размера, а пользователям – другого. Таким образом, получаем права пользователя. И так далее.

Очень хотелось бы, чтобы метод возвращал размер не только “валидных” картинок, но и HTML страниц, JSON, etc. Но это, к сожалению, не работает. Может быть, конечно, есть исключения, призываю исследовать данный вопрос.

У меня еще есть мысли исследования на тему векторных картинок в XML формате, ведь HTML часто бывает валидных XML и тогда…

Проверил на тестовой версии IE9, но он не поддерживает SVG внутри тэга <img>, а только как отдельный тэг.

Работает в IE8, в Opera 10.52 не работает, дальше проверяйте, пишите, если не трудно.

Для всех броузеров, кстати, остается возможность применять такие же методы используя атрибуты width и height. Проведя соответствующий анализ целевого приложения можно получать информацию аналогично описанному.

Ну и стоит добавить сюда комментарий небезызвестного Дэна Камински (Dan Kanisky), отправленный по рассылке Full-Disclosure:

2010/4/22 Dan Kaminsky <dan@doxpara.com>:
Interesting use, using filesize to back into the actual CAPTCHA used for a
given query. Sneaky!

So it’s possible to read not only filesize, but image dimensions
cross-domain. I actually found a use for this — it’s a good way to
exchange a small amount of data between sites that mutually distrust one
another. The reason for this is that images are pretty much the only
resources that can be loaded cross-domain that won’t have embedded script
executed by a browser.

(Side note: At this point, you’re probably thinking: Vladimir just said
that some browsers allow SVG to load via <img> — and SVG can embed script
with nothing but a script tag and a smile! Doesn’t this mean a bunch of
sites are in trouble?

Turns out, no, not as far as I can tell anyway. IE and Firefox both block
<img> to SVG entirely, while Chrome, Safari, and Opera allow it. But there
appears to be a script firewall (or more accurately, a missing connection)
between <img>-loaded SVG and the script engine. Static SVG renders just
fine, but don’t expect it to do anything unless you top-level nav, inline,
or use something like embed.)

Back to image dimensions, it turns out that this information channel cannot
be closed; even if the dimensions of the object itself couldn’t be queried,
the XY positioning of the objects *around* the imported images must be both
queryable and dependent on image properties.

I was curious however if img.fileSize would leak filesizes of non-image
content. Doesn’t look like it does — undefined in everything but IE, -1 in
IE.

Also, Billy Hoffman has done a lot of fun work in this space, see
http://www.gnucitizen.org/blog/javascript-remoting-dangers/

Собственно, тут нечего добавить, разве что, Дэн не прочитал последний абзац, так как он был дописан только в блог и несколько позже.

Tags: , , , ,

Leave a Comment

SQL инъекции цепного типа

Однако плодотворная выдалась неделька…

В процессе исследования безопасности веб-приложения наткнулся на возможность проведения атаки типа внедрения операторов СУБД необычным образом.

Все пользовательские данные, которые попадают в базу при запросе типа INSERT фильтровались с помощью функции mysql_real_escape_string().

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

Таким образом, через mysql_real_escape_string() удалось записать в базу данных строку вида:

‘ union all select version()/*

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

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

select mixvalue from datas where name like ‘%‘ union all select version()/*%’

Назвать такую штуку можно было как-нибудь типа “хранимая SQL инъекция”, но в виду связанности запросов мне больше понравился вариант “цепная SQL инъекция”.

Ниже привожу пример уязвимого кода.

[Read the rest of this entry...]

Tags: , , ,

Comments (1)