![](https://habrastorage.org/files/f4b/5c2/2f5/f4b5c22f52314e7a82f053e006514d71.jpg)
Сегодня я продолжу цикл статей, посвященных веб-безопасности. Для кого-то эта информация может показаться не новой, для кого-то она может стать поводом к размышлению.
Ошибки будут указаны по средней частоте и пронумерованы согласно Open Web Application Security Project (OWASP) TOP 10.
Итак, на первое место я бы поместил XSS (OWASP A3) — межсайтовый скриптинг.
Как и автор http://habrahabr.ru/post/149152/, я считаю XSS не уязвимостью, а вектором атаки, т.к. способов эксплуатации может быть достаточно много.
Они бывают пассивными, активными, dom-based и встречаются как на крупных коммерческих сайтах, так и на самописных домашних страничках. Межсайтовое выполнение сценариев (XSS) связано с возможностью внедрения HTML-кода в уязвимую страницу. Внедрение кода осуществляется через все доступные способы ввода информации. Успешная эксплуатация уязвимости может позволить злоумышленникам использовать значения различных переменных, доступных в контексте сайта, записывать информацию, перехватывать сессии пользователей и т.д.
Специфика подобных атак заключается в том, что вместо непосредственной атаки сервера они используют уязвимый сервер в качестве средства атаки на клиента.
![](https://habrastorage.org/files/268/fdf/9cd/268fdf9cd1bd470298d787f8876e7c88.jpg)
В чем опасность таких атак: существует возможность перехватить привилегированную учетную запись для доступа к панели управления, а оттуда уже скачать/модифицировать данные, залить шелл.
Второе место почетно занимают различные утечки критичных данных — OWASP A4, A6 и A7.
Я бы назвал эту группу уязвимостей отсутствием должного внимания к хранению и передаче критичных данных.
Что сюда входит: различные уязвимости вида session prediction, когда перебирая значения ID можно получить доступ к чужим данным, например:
- /download/******* — меняя параметры можно спарсить все файлы с сервера
- /user/ticket=****** — можно просмотреть все сообщения в техподдержку ото всех пользователей
Критичные данные в корне сайта: бэкапы, служебные скрипты, репозитории и прочее.
Например, на одном из сайтов был обнаружен служебный скрипт grep.php, который позволял производить поиск c помощью регулярных выражений по содержимому сайта. С помощью этого скрипта были обнаружены данные для подключения к MySQL через оставленный в папке сайта phpmyadmin.
На сайтах, с одной известной коммерческой CMS можно встретить файлы, упрощающие доступ в систему (auth bypass), скрипты, упрощающие резервное копирование, с указанием имени файла бэкапа в корне сайта, которое не подберешь простым перебором; скрипты для тестирования вебсервера и многое другое. Уровень доступа к этим скриптам не выставляется должным образом, и, в следствии этого, любой знающий особенности этой CMS может попытаться их найти:
![](https://habrastorage.org/files/10a/c9d/ec5/10ac9dec5dbb4e4bae412c0a3453aff8.jpg)
Иногда, разработчики в виду спешки или иных факторов забывают удалить какие-то специфические скрипты, которые могут помочь атакующему составить список всех файлов на сервере:
![](https://habrastorage.org/files/ab3/a14/203/ab3a1420372f4dbb87d01b2f45c1ffbf.jpg)
Иногда простой поиск по директориям сайта дает просто ошеломительные результаты, например:
базы данных (лежит и ждёт, пока её кто-то скачает):
![](https://habrastorage.org/files/3d5/641/c7c/3d5641c7c662416197ffabef7fb8bfc0.jpg)
bash history (история команд):
![](https://habrastorage.org/files/80a/318/d1c/80a318d1ca40457584c0af3a063546ef.jpg)
логи (из которых можно получить полезную информацию):
![](https://habrastorage.org/files/a2b/ffb/2f1/a2bffb2f1578474f91b74224d6dbb1fc.jpg)
резервные копии:
![](https://habrastorage.org/files/a2c/f63/e3e/a2cf63e3ec24417c90a9bb6823d7fb26.jpg)
репозитории:
![](https://habrastorage.org/files/fbd/59d/2e4/fbd59d2e46584290af2476be04301825.jpg)
Третье место по популярности занимают разного рода инъекции OWASP A1.
Казалось бы, 2015 год, про sql injection все расписано и разжевано на каждом углу, и встретить их в живой природе все сложнее? Как-бы не так. По статистике нашей компании и статистике наших коллег, уязвимости класса sql injection довольно часто встречаются в том или ином виде.
![](https://habrastorage.org/files/3d2/c6d/f22/3d2c6df2266e42f0a818624e2c8574a4.jpg)
Эксплуатация веб уязвимостей может повлечь за собой тяжелые последствия: существует возможность вытащить данные из БД, залить шелл (если позволят права) и т.д.
Например, такой POST-запрос login=admin@domain.name'+and+1=1+--+&password=pass позволяет обойти авторизацию на сайте и авторизоваться под администратором.
И хотя по популярности эта уязвимость находится на последнем месте — недооценивать ее не стоит, не зря она стоит на первом месте в рейтинге OWASP по значимости.
Что в итоге?
Большинство этих ошибок можно убрать за минимальное время и они не являются концептуальными и сложноэксплуатируемыми, но их необходимо вовремя обнаружить, оценить риски и минимизировать последствия.
Необходимо своевременно проводить аудит безопасности сайта на наличие уязвимостей.
Don_Eric