Типичные уязвимости на сайтах, со статистикой

Этот топик будет посвящен:

  • в большей мере статистике встречаемости уязвимостей
  • реакции администрации(скорости и адекватности)
  • опасности

и всяческим другим факторам. Будут приведены примеры.

Что послужило толчком

Пост можно начать так: «дело было вечером, делать было нечего». Или: «Навеяли былые успехи(прошлый топик вышел в плюс)».
Одним словом, делать мне летом решительно нечего. А поэтому, пока потихоньку пилится мой прошлый проект(хабрасканер), я подумал быстренько набросать следующий пост. Кратенькое содержание уже есть выше. Разберем его(пост в смысле).

Очень важно: все данные, приведенные в топике, достаточно примерны. Сайтов на самом деле не 200, а около 200~. Ну и так далее.
И да, проверено было много более чем 200. А это уязвимых именно столько.

Процесс поиска

Кстати кому интересно, сайты были найдены совершенно случайным образом и проверены буквально в ручную.
Поиском для меня занимался гугл. Я написал небольшой питон-скрипт, который вводил поисковый запрос(изначально взят был список запросов) и нажимал «Мне повезет!», а затем копировал эти данные в текстовичек, который я потом использовал для пентестинга.
Кстати говоря, запросов было 1322, а значит и сайтов столько же. Отсюда можно посчитать, что уязвимых из них около 15%.

Общая статистика

image

Уязвимый модуль

image

Вид уязвимости

image
Я должен пояснить, что HTMLBUG = изменение вида html с помощью какой-то формы, но без XSS(все-таки теги фильтруются).

Примеры

Я, опять же, просто обязан сказать здесь, что действительных примеров не будет. Это может быть попросту опасно, для исследованного сайта.
А вот почему.
image
Здесь в «Не решено» входит и «Не ответили».

Кроме того, в большей части проектов ко мне обращались грубо, пренебрежительно и даже угрожали…
Это выглядет как-то так.
Слова в гистограмме исковерканы намеренно, чтобы хоть как-то смягчить мои подсчеты.
image
Остальные либо не ответили, либо отделались сухим «Спасибо.»

Отдельно хочется выделить работников интернет-магазина kronya.ru, мало того, что мне ответили в течение 15 минут(в пятницу-то), так еще и решены ВСЕ мои претензии были в течение часа.
Кроме того, выделяю пользователя art_karetnikov, его сайт был проверен мной случано, и, к моему сожелению, и к всеобщей радости, вовсе не содержал проверяемых мной ошибок.

А теперь наконец-то к примерам.

Приведу пару-тройку примеров. Я думаю большая часть пользователей хабра умеет искать и использовать XSS, поэтому об этом кратко.
http://******************d=%22%3E%3Cscript%3Ealert%280%29%3C%2Fscript%3E
js, выводящий алерт. ">
image
(Окно уже закрыто) То есть здесь и XSS и странности с дизом. (ну странности с html наблюдаются всегда там, где получилось пробиться через input, поэтому я больше не буду их связывать между собой).

На одном из сайтов встретилась форма, после которой ее содержимое присутствовало на сайте аж 5(!) раз. И выглядело как-то так.
image
image

Неимоверное количество не фильтрованных запросов нашел я на просторах интернета.
Больше всего мне понравился этот. Кстати расположен на крупном сайте одного московского магазина.
image
Всего-то ковычка в одном правильном поле. На этом сайте мне так и не ответили…

Решения проблем

По большей части, все эти уязвимости встречены на сайтах с фреймворками(найдены документации в корневых папках) или с CMS(найдены признаки использования©). Поэтому путь решения прост как валенок. Переключить тумблер фильтрации в положение ON. Или дописать где-то 2 слова…

К чему все это?

Я надеюсь данный топик сможет:

  • Заставить пользователей быть внимательнее к ссылкам.
  • Админов быть внимательнее к своим творениям.
  • Менеджеров быть добрее к тем, с кем они общаются.
  • Программистов быть адекватнее и понимать, когда им пытаются помочь, а не обгадить(да простит меня хабрасообщество за это слово).

P.S. В заключение, хочется сказать:
«Дорогие хабровчане, мне, бесспорно, нравится проверять сайты на уязвимости и узнавать что-то новое для себя.»
Если кому-то интересно, я мог бы проверить ваши сайты, а затем дополнить список с указанием конкретных примеров(конкретики не хватает, я думаю), естественно с вашего разрешения и, конечно же, после исправления.

P.S.S. Я надеюсь моя статья будет полезным чтением для кого-то. Кому-то послужит уроком, или руководством к действию(я надеюсь админам, а не хакерам). И вообще, я надеюсь статья будет достойна habra.

Нужно ли больше примеров с конкретными сайтами, или достаточно фактической информации со скриншотов?

Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.

Никто ещё не голосовал. Воздержавшихся нет.

ссылка на оригинал статьи http://habrahabr.ru/post/192122/

Phalcon S: Быстрая разработка на phalconphp

Добрый день!

Уважаемый читатель: данная статья не является примером идеального программирования на языке php и предоставленный инструмент может содержать в себе множество недоработок. Phalcon S сырой и выкладывается для поддержки, или осуждения разработки.

Сегодня я хочу показать сообществу Phalcon System (Система Ястреб).

Описание и предыстория

Phalcon S — это зачаток мульти-модульной системы, для построения вэб-приложения. Phalcon S изначально был задуман для персонального использования 1-2 разработчиками. Phalcon S написан с использованием Phalconphp и представляет из себя мульти-модульное приложение. На данный момент содержится модуль панели администратора, который откровенно говоря не доделан. Все началось с того, что мне была нужна система микроблоггинга. Поиски того что нужно, не дали успехов. Так как я обладаю некими знаниями языка php, было задумано писать самому. Систему для блогов я поднял за 3 дня и в качестве админки к ней начал писать Phalcon S (в свободное от работы время). К сожалению модуль микроблоггинга в общий доступ выложить не могу.

Архитектуру наглядно можно изобразить так:

Каждый модуль это отдельное mvc приложение.

В папке dev находится каркас-пример для разработки модуля Phalcon S.

Краткая инструкция по разработке модуля.

Большинство настроек приложения храниться в формате xml. При разработке модуля, необходимо создать папку module_name/config/xml с настройками вашего модуля. Также необходимо разместить schema.sql и schema_drop.sql в папке module_name/config для создания таблиц в бд и соответственно удаления при деинсталяции модуля.

Пример настройки роутинга:

<?xml version="1.0" encoding="UTF-8"?> <routes>     <route name="pnews" url="/pnews" module="pnews" controller="pnews" action="index"/>     <route name="pnews" url="/pnews/administrationpnews" module="pnews" controller="administrationpnews" action="index"/>     <route name="pnews" url="/pnews/administrationpnews/add" module="pnews" controller="administrationpnews" action="add"/>     <route name="pnews" url="/pnews/administrationpnews/delete/{item_id}/{page_number}" module="pnews" controller="administrationpnews" action="delete"/> </routes> 

Пример настройки модуля (для регистрации его в системе):

<?xml version="1.0" encoding="UTF-8"?> <modules>     <module name="pnews" className="P\Pnews\Module" path="../apps/modules/pnews/Module.php"/> </modules>  

Остальные примеры можно найти тут Phalcon-S / dev / pnews / config / xml.
Также необходимо знать, что ресурсы для ACL разделяются на модуль и контроллер. По умолчанию доступ ко всем ресурсам модуля, закрыт для всех пользователей. Allow нужно также добавить в настройках вашего модуля. Если вашему модулю нужны ресурсы css, images, js то разместите их в module_name/ext/module_name и при установке они будут перемешены в public/ext/module_name (это надо учитывать при прописывании путей к ресурсам).

Верстка:

Вьюшка вашего модуля ложна содержать:

<?php require_once $_SERVER['DOCUMENT_ROOT'] . '/templates/header.phtml'; ?>   <?php require_once $_SERVER['DOCUMENT_ROOT'] . '/templates/footer.phtml'; ?> 

если это контроллер для пользователей и:

<?php require_once $_SERVER['DOCUMENT_ROOT'] . '/templates/admin-templates/header.phtml'; ?>   <?php require_once $_SERVER['DOCUMENT_ROOT'] . '/templates/admin-templates/footer.phtml'; ?> 

если это контроллер панели администрирования.

github github.com/abasov90/Phalcon-S
phalconphp phalconphp.com/en/
phalconphp в по русски docs.phalconphp.ru/ru/latest/

Phalcon S заслужил жизнь?

Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.

Никто ещё не голосовал. Воздержавшихся нет.

ссылка на оригинал статьи http://habrahabr.ru/post/192114/

LG Optimus F5 — LTE в среднем сегменте

Добрый день, хабрахабр!

Сегодня я хочу рассказать вам о необычном «средняке» от LG — Optimus F5. Что в нём необычного? Да, наверное, ничего, кроме поддержки LTE сетей и приятного соотношения цена/функционал. Заинтересовались? 🙂

kCeSN.jpg

Железо

Вопрос среднего сегмента и соотношения «цена/производительность» регулярно подвеграется пересмотру. Несколько лет назад LG Optimus One покорил бюджетный сегмент именно потому, что за свои деньги предлагал то, чего не было у остальных: нормальный экран с неплохим разрешением, вполне актуальное железо и неплохой корпус, удобный, простой и надёжный.

qIxkX.jpg

Что же установлено внутри LG Optimus F5?

Процессор Qualcomm MSM82960: два ядра Krait на частоте до 1.5 ГГц
Видеоядро Adreno 225
Память RAM: 1ГБ LPDDR2, Flash: 8ГБ, слот под MicroSD до 32ГБ
Камера 5МП задняя, автофокус, без вспышки; 1.3 МП фронтальная
Аккумулятор 2150 мА*ч (такой же стоит в Optimus G)
Дисплей 4.3" IPS, qHD (960×540)
Беспроводные интерфейсы WiFi, Bluetooth, NFC, 4G (LTE)

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

Не ясно, почему камера не получила вспышку, когда она есть даже в бюджетном LG L5. Не думаю, что лишняя дырка в корпусе да копеечный светодиод каким-либо образом повлияли бы на стоимость девайса, более того, вспышка была у прототипа, который показывали на MWC2013, так что в этом плане корейцы сотворили какую-то непонятную фигню.

Производительность

Как я уже говорил, полтора года назад подобные железки вполне можно было встретить во флагманских и HI-End девайсах других компаний, а сегодня они в обычном смартфоне. Достаточно-ли железа для современных потребностей? На мой взгляд — да.

Берём любой обзор LG F5 в интернете, и убеждаемся, что в нём авторы говорят то же самое. Софт от LG неплохо оптимизирован и шустро бегает даже на куда менее производительном железе бюджетных моделей, так что о слове «тормозит» можно вообще не вспоминать. Бюджетным и MID-Range моделям от Samsung с их неподъёмным TouchWiz’ом такое и не снилось.

Если кого-то интересуют результаты бенчмарков, то вот они:

HAujaW.png xDvWNH.png

Дисплей

Второй немаловажный фактор в смартфоне, который позиционируется одновременно как недорогой и практичный, — экран. В конце концов, другого способа взаимодействовать с девайсом у нас попросту нет. В F5 установлена IPS матрица с разрешением 960х540 точек. Для диагонали в 4.3 дюйма — вполне нормальный показатель. Конечно, есть модели с HD-разрешением на 4.3 дюймах экрана, но каких-либо ощутимых бонусов с переходом к 720p пользователь не получает, а вот стоимость такой матрицы, яркость подвестки и нагрузки на графическую подсистему вырастают ощутимо.

VAp2a.jpg
На фото яркость установлена ~ на 30% от максимальной.

Углы обзора, цветопередача и яркость с контрастностью находятся на хорошем уровне. Цвета приятные, возможно, девайс чуть «желтит» (смаую малость!), но я бы не назвал это очень уж большим минусом — тёплая картинка не так сильно нагружает глаза, как холодные синие и голубые оттенки при заваленном балансе белого.

Дизайн и корпус

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

Дизайн — прямое продолжение L-линейки, разве что пластик используется подороже, да общее оформление больше напоминает достаточно неплохие модельки в старшем сегменте.

k6fNUS5DG.jpg

Классическая компановка управляющих элементов, разъёмов и приятные на ощупь материалы + честное стекло поверх экрана. В общем, всё и так видно на фотографиях.

G5vNub7Zm.jpg

cX2MoT.jpg

LTE

Признаться, ощущения двоякие. С одной стороны — фича интересная, и в среднем сегменте её днём с огнём не сыщешь. С другой — карта покрытия пока оставляет желать лучшего… Но есть одно «но». Как только мы попадаем в зону действия сети четвертого поколения, интернет становится сложно отличить от хорошего Wi-Fi подключения. Скорость в районе 10 мегабит (бывает и выше), быстрый коннект, неплохая latency — в общем, может, в BattleField последний особо не поиграешь, но комфортно пользоваться интернетом, картами, просматривать видео или даже подключиться через TeamViewer для удалённого управления — это всегда пожалуйста. Тем более что остальная начинка позволяет вполне комфортно работать с другими приложениями, переключаться между несколькими задачами и вообще тенденция к «спуску» hi end фич в MID-сегмент не может не радовать. Сегодня — LTE, а завтра, глядишь, перестанут отстойные камеры в среднесегментники пихать. Кстати, о камере…

Камера

Модуль на 5 мегапикселей с автофокусом и без вспышки. С одной стороны — хорошо, что не 10 или 13 раздутых MPx’ов — меньше размер фоточек, а деталей всё равно было бы столько же. С другой — где вспышка, да и люди не поймут, почему не поставили хотя бы 8, которые есть в том же LG L7. Лично я камерой не занимался особенно: погода в Москве была отвратительная, снимать было нечего, да и ничего интересного она не предоставила бы в любом случае.

GMwvB.jpg

Зато ребята из Mobile Review гоняли девайс в хвост и гриву, и они точно так же характеризуют камеру как «среднюю по всем фронтам». Надеюсь, инженеры в LG дойдут-таки до камеры в ближайшем будущем, перепишут весь софт и найдут и покарают того, кто отвечал за камерный JPG. Вроде, не маленькие, оболочку написали толковую, девайсы делают неплохие, даже Goolge выбрал их в качестве поставщика для Nexus-смартфонов, а камерный софт никак не осилят.

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

Скрытый текст

Конкуренты

Если рассматривать только РСТ-аппараты, то в данном ценовом диапазоне (от 10 до 12 тысяч рублей), у F5 конкурентов, с одной стороны, много, а с другой — наверное и нет. В подобном ценовом диапазоне обитают hi end смартфоны двухлетней давности, некоторые mid range девайсы этого и прошлых годов, и все они по-своему «хороши». У кого впихнули HD-экран, и из-за этого смартфон превратился в лагалище. Где-то дохлая батарейка, где-то дурацкий корпус или, наоборот, экран так себе. Да и LTE есть у полутора землекопов.

SlMqIRG.jpg

Среди «серых» девайсов, конкуренция, конечно, обостряется, но давайте будем честными: представляете, сколько будет стоить «серый» F5? 🙂

Вместо заключения

У LG получился неплохой и крепкий среднячок: нормальные железки, неплохой экран, приятная оболочка, не заставляющая пользователя плакать кровавыми слезами из-за клоунского оформления, тормозов или странных решений. Плюс LTE. У Samsung’а, вон, не во всех четвёртых галактиках он есть. 🙂 С автономностью также проблем не наблюдается — железо не самое прожорливое, а аккумулятор достался от куда более «заряженного» Optimus G.

Без минусов не обошлось: так себе камера, нет вспышки (за что вспышку-то?!), глянцевый задник через год превратится в царапанный глянцевый задник. Скучаю по крышкам в стиле Galaxy S II — из прочного, гибкого и рифлёного пластика, без каких-либо намёков на пошлый глянец.

angzsuU.jpg

Если принять во внимание цену устройства и все предлагаемые им фичи — я бы поставил 4 балла из 5 возможных. Матовый корпус + вспышка — и были бы все 6 из 5. Простой, быстрый, недорогой, с приятным экраном, да ещё и LTE умеет (а значит можно и к ноутбуку подключиться, в случае чего, и не страдать от «качества» 3G-сетей. Что ещё надо для счастья, если вы не готовы отдавать 20-30 тысяч за смартфон? 🙂

ссылка на оригинал статьи http://habrahabr.ru/company/LG_Russia/blog/189562/

Google Store

Доброе времени суток, Хабравчане!

Пользуюсь Google Shortcuts в Google Chrome. Недавно приложение обновилось до новой версии и я заметил новый пункт выбора: Google Store. Перейдя по ссылке я был приятно удивлен: Google открыла Google Store и каждый желающий может приобрести атрибутику Google.

Кроме чашечек, сумочек и другой мелочевки, интересным выглядит раздел FUN, в котором размещены разные игры. Я не нашел пост на данную тематику на Хабре, кроме как от февраля текущего года, поэтому решил поделиться данной новостью. Теперь Google-мания может перейти на совсем другой уровень. Кстати, смешно, конечно, но не так давно видел новость, будто вконтакте тоже хочет стать узнаваемым брендом в разных категориях. Вот ссылка на новость.

P.S: Не нашел хаб Google Store, поэтому поместил пост в Google Chrome.

ссылка на оригинал статьи http://habrahabr.ru/post/192112/

Модульного тестирования недостаточно. Нужна статическая типизация!

Когда я работал над своей магистерской диссертацией, я пообещал себе, что опубликую ее в Интернете под свободной лицензией. Я получил степень, но, к сожалению, натолкнулся на одно из неписаных правил ВУЗов — когда вы тратите на интересующий вопрос много времени, он вам надоедает.
Наконец, спустя год, я все-таки ее публикую.
Для тех, кому лень знакомиться с моим полным трудом (в любом случае, 60 страниц текста это не так много для исследовательской работы, но это все же не мало), я предлагаю краткую версию статьи. Прошу заметить, что краткая версия не учитывает некоторые важные сведения, поэтому я прошу писать отзывы только о полной версии.

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

  1. Статической типизации недостаточно для выявления багов, поэтому необходимы модульные тесты;
  2. Статическая типизация становится лишней, так как у вас есть тесты;
  3. Из-за статической типизации некоторые корректные программы могут выдавать предупреждения на стадии компиляции.

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

Мой эксперимент заключался в том, чтобы найти opensource-проекты на языке с динамической типизацией, покрытые модульными тестами, а затем вручную транслировать их на статически типизируемый язык. Хотелось выяснить количество дефектов, которые были обнаружены проверкой типов, и сколько динамических конструкций не могут быть непосредственно транслированы в статический язык. Следует подчеркнуть, что в этом эксперименте будет происходить не переписывание кода программы, а ее построчная трансляция с одного языка программирования на другой. Я не учитываю дефекты, которые не были обнаружены проверкой типов, ни любыми другими ошибками, которые не могли возникнуть в оригинальной программе.

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

Критерии для динамического языка были следующими:

  1. этот язык должен быть динамически типизированным;
  2. язык должен поддерживать модульное тестирование;
  3. необходимо достаточное количество opensource-решений на этом языке;
  4. язык должен быть известным и иметь достаточное количество сторонников.

Под эти критерии отлично подходит Python.

Дальше предстояло выбрать статический язык, учитывающий несколько требований:

  1. язык должен выполняться на тех же платформах, что и Python;
  2. язык должен иметь строгую типизацию;
  3. язык должен пользоваться уважением сторонниками статической типизации.

Haskell удовлетворял всем этим требованиям.

Далее я выбрал четыре случайных проекта, которые предстояло транслировать с Python на Haskell: The Python NMEA Toolkit, MIDIUtil, GrapeFruit и PyFontInfo.

The Python NMEA Toolkit

Трансляция с помощью этого решения привела к девяти ошибкам. Три из них возникли из-за неправильного типа входящих параметров, а остальные шесть из-за неверного использования API. Только одна ошибка типа была покрыта модульным тестом. С помощью статической типизации была исправлена одна ошибка, которая проявлялась при исполнении программы. От двух модульных тестов можно было бы избавиться, т.к. они служили лишь для проверки типов. Не обнаружилось ни одной динамической конструкции, которую нельзя было бы транслировать в статическую.

MIDIUtil

Трансляция MIDIUtil привела к выявлению двух ошибок. Одну из них можно было бы отследить с помощью теста. Еще одну устранила бы статическая типизация. Утилита MIDIUtil использует методы struct.pack и struct.unpack, которые не могут быть транслированы в язык Haskell напрямую, поскольку в них используется строка форматирования, содержащая типы аргументов и возвращаемого значения.
Однако во всех случаях использования, форматирующие строки были жестко закодированы, так что код на Haskell мог использовать вместо них жёстко кодированные функции, не теряя выразительности. Если бы в MIDIUtil такие строки хранились в конфигурационном файле, то для её трансляции в язык со статической типизацией пришлось бы серьёзно поработать над архитектурой решения.

GrapeFruit

Трансляция из GrapeFruit не вызвала никаких ошибок. А единственную ошибку во время исполнения могла бы ликвидировать статическая типизация. Следует заметить, что статическая типизация помогла бы избавиться от одного теста. Не нашлось ни одной динамической конструкции, непереводимой в статическую.

PyFontInfo

Перевод из PyFontInfo привел к выявлению 6 ошибок типов. Две ошибки при исполнении можно было бы устранить при использовании статической типизации. От одного теста можно было бы избавиться. PyFontInfo тоже использует struct.pack и struct.unpack, поэтому не может быть переведен в Haskell, но это ограничение можно обойти.

Результаты

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

Заключение

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

ссылка на оригинал статьи http://habrahabr.ru/post/192108/