Распространенные уязвимости
Знакомы ли вы с лазейками на картинке выше? Если вовремя не защититься, может возникнуть эффект бабочки.
Как защищаться? Прокрутите вниз, и вы можете найти ответ, который вы ищете.
Атака SQL-инъекцией
определение
Атака путем внедрения SQL-кода заключается в отправке вредоносных «строк» в фоновую базу данных посредством отправки веб-формы, отправки параметра URL-адреса или отправки параметра файла cookie, а также обмана сервера для выполнения вредоносных операторов SQL.
кейс
//以用户登录为例,当验证用户名和密码是否正确时
$sql = "SELECT * FROM user WHERE
username = '".$_GET['username']."' AND
password = '".$_GET['password']."'";
скопировать код
Вредоносный пользовательский ввод:
$_GET['username'] = "' or 1=1 -- '";
$_GET['password'] = "123456";
скопировать код
Оператор Sql после инъекции:
$sql = "SELECT * FROM user WHERE username = ''
or 1=1 -- ''AND password = '123456'";
скопировать код
Выполните введенный оператор Sql, чтобы вернуть все данные пользовательской таблицы.
Обычно мы можем выполнять самотестирование, например, использовать одинарные кавычки, двойные кавычки и т. д., если это число, оно будет +1 или -1.
Как мы все знаем, SQL-инъекция очень вредна, и это можно сделать с помощью SQL-инъекции.библиотека перетаскивания,удалить библиотеку,удалить таблицу,Повышение привилегий UDF,прочитать файл,...
Здесь рекомендуется использовать автоматизированный инструмент SQL-инъекций с открытым исходным кодом.
SQLmap: HTTP://SQLmap.org/
-
Поддерживает различные системы управления базами данных (MySql, Oracle, SQL Server, SQLite...).
-
Поддерживает автоматическую идентификацию форматов хэшей паролей и взлом хэшей паролей через словари.
-
Поддерживает перечисление пользователей, паролей, хэшей, разрешений, ролей, баз данных, таблиц данных и столбцов.
-
Поддержка полной загрузки таблицы, столбца в базе данных.
-
Он поддерживает поиск по указанному имени базы данных, имени таблицы или имени столбца в системе управления базами данных.
-
Поддерживает загрузку или загрузку файлов.
-
Поддерживает выполнение произвольных команд и вывод стандартного вывода.
-
Поддерживаются булева слепая инъекция, временная слепая инъекция, инъекция на основе сообщений об ошибках, инъекция совместного запроса и инъекция запроса кучи.
Попробуйте использовать инструменты, внедрите свои собственные проекты, найдите проблемы и исправьте их.
Вред SQL-инъекций намного больше, чем мы думаем!
защита
Рекомендуемое решение — использоватьPDOилиMySQLiрасширение базы данных.
Согласно официальной документации PHP, расширение MySQL устарело, начиная с PHP 5.5.0, и было удалено, начиная с PHP 7.0.0.
Если вы уже расширяете MySQL, вы можете проверить каждый переданный параметр и использовать ORM фреймворка для запроса.
Также: addlashes и mysql_real_escape_string Этот выход небезопасен!
XSS-атака
определение
XSS-атака — это уязвимость компьютерной безопасности, часто встречающаяся в веб-приложениях: код внедряется на страницу пользователя посредством отправки веб-формы или отправки параметра URL.
Классификация
тип хранения
Внедренный вредоносный код хранится на сервере (часто используется на досках объявлений, в сообщениях на форумах, в CRM), и когда жертва запрашивает у сервера информацию, вредоносный код успешно выполняется браузером.
Светоотражающий
Внедренный вредоносный код не хранится на сервере, а атака осуществляется путем заманивания пользователя перейти по ссылке на целевой веб-сайт.
тип документа
Внедренный вредоносный код явно не включен в страницу ответа веб-сервера, но будет доступен скрипту js на странице в виде переменных для проведения атаки.
кейс
Тип хранилища: поле ввода интерфейса сообщения форума, ввод/><script>alert("xss")</script>
представить.
Отражающий: в поле ввода браузера введите/xxx.php?name=<script>alert(/xss/)</script>
//DOM型,代码举例
<script>
var
temp = document
.URL;
var
temp_new = temp
+'test'
document
.write(
decodeURI(temp_new
));
</
script>
скопировать код
Существует много опасностей XSS, включая взлом аккаунта, взлом, контроль над машиной жертвы и запуск атак на другие веб-сайты...
Часто используемые методы самопроверки, см. поле ввода и введите:/><script>alert("xss")</script>
представить.
Здесь рекомендуется фреймворк, предназначенный для браузерных атак.
BeEF: https://beef project.com/
защита
Простая защита может отфильтровывать или избегать небезопасных факторов, таких как стиль, сценарий, изображение, src, a и т. д.
Вы можете инкапсулировать метод самостоятельно или использовать собственные методы фреймворка, такие как xss_clean .
Вы можете использовать некоторые механизмы шаблонов, чтобы избежать XSS-атак, такие как Blade, используемый фреймворком Laravel, а также twig, Smarty и т. д.
Вы можете использовать только HTTP, чтобы настроить файлы cookie только на HTTP, чтобы предотвратить XSS-атаки.
//设置Cookie
setcookie($name, $value, $expire, $path, $domain, $secure, $httponly);
//然后服务端通过使用 $_COOKIE 进行验证。
скопировать код
Вы можете использовать Content Security Policy, которая по сути является системой белого списка.
Вводные учебные пособия см. по адресу: http://www.ruanyifeng.com/blog/2016/09/csp.html.
SSRF-атака
определение
SSRF (подделка запроса на стороне сервера: подделка запроса на стороне сервера) — это запрос, инициированный злоумышленником, подделывающим серверную часть.Хотя злоумышленник не может получить доступ к внутренней сетевой системе из внешней сети, он инициируется со стороны сервера путем внедрения вредоносного кода и на стороне сервера Затем получить доступ к системе в интрасети, а затем получить данные, которые не должны быть получены.
кейс
Уязвимости в основном генерируются в коде, содержащем такие методы, как curl, file_get_contents, fsockopen.
//代码片段
<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $_GET['url']);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_exec($ch);
curl_close($ch);
скопировать код
Адрес запроса: http://www.xxx.com/demo.php?url=xxx
Измените параметр url на file:///etc/passwd, чтобы получить информацию о конфиденциальных файлах.
Измените параметр URL на dict://127.0.0.1:3306/info, вы можете запустить приложение на порту 3306 целевого хоста.
В дополнение к файловому протоколу для атаки также можно использовать протокол dict, протокол gopher и протокол http/https.
Он может атаковать Redis, memcache, приложения интрасети, проверять информацию о конфиденциальных файлах и т. д.
защита
Строго проверяйте параметры в методах curl, file_get_contents, fsockopen!
Протокол ограничения может быть только HTTP или HTTPS, переходы запрещены.
Если есть белый список, проанализируйте URL-адрес в параметре, чтобы определить, находится ли он в белом списке.
Если белого списка нет, проанализируйте URL-адрес в параметре, чтобы определить, является ли он IP-адресом интрасети.
CSRF-атака
определение
CSRF (подделка межсайтовых запросов: подделка межсайтовых запросов) — это злоумышленник, который выдает себя за доверенного пользователя, крадет личность доверенного пользователя и отправляет вредоносные запросы как доверенный пользователь.
Как видно из приведенного выше рисунка, для завершения CSRF-атаки необходимо выполнить два шага:
1. Войдите на доверенный веб-сайт А и создайте файл cookie для веб-сайта А локально.
2. Посетите опасный сайт Б, не закрывая сайт А.
вред
Конкретный вред зависит от того, что делает доверенный веб-сайт: если это сайт социальной сети, он может контролировать рекламу, если это сайт электронной коммерции, он может контролировать покупки, а если это сайт банка, он может даже контролировать трансферы. …
Такие опасности приведут к раскрытию личной информации и материальному ущербу.
защита
Хеширование файлов cookie, отправка формы или отправка Ajax, токен csrf должен использоваться.
Для запросов, которые не уверены в риске csrf, можно использовать капчу (хотя опыт будет хуже).
Для некоторых важных операций (смена пароля, смена адреса электронной почты) необходимо использовать двухфакторную аутентификацию.
Уязвимость при загрузке файлов
определение
Уязвимость загрузки файлов заключается в том, что злоумышленник загружает исполняемый файл на сервер для выполнения.
К исполняемым файлам относятся вирусы, трояны, вредоносные скрипты и т. д.
вред
По сравнению с SQL-инъекцией или XSS, уязвимость загрузки файлов более опасна: при наличии уязвимости загрузки злоумышленник может даже загрузить сценарий веб-шелла прямо на сервер.
защита
-
Обнаружение расширения файла
-
Проверка файла MIME
-
переименовать файл
-
Каталог файлов устанавливает неисполняемое разрешение
-
Настройка файлового сервера для отдельного доменного имени
утечка информации
определение
Утечка информации в основном относится к утечке конфиденциальных данных, таких как номера мобильных телефонов пользователей, адреса электронной почты, пароли, удостоверения личности, адреса и т. д., а также к утечке конфиденциальных данных, таких как файлы и переменные среды на сервере, как а также прямую загрузку исходного кода предприятия на платформу с открытым исходным кодом.
кейс
Например, при разработке интерфейса интерфейс возвращает номер мобильного телефона в виде открытого текста.
Например, при отладке кода часть отладочной информации передается в коде, но не удаляется.
......
защита
-
Десенсибилизация конфиденциальных данных (таких как номер мобильного телефона, удостоверение личности, электронная почта, адрес).
-
Отправки, содержащие код, такой как печать phpinfo , $_SERVER и информация об отладке, не допускаются на сервере.
-
Регулярно сканируйте проекты с исходным кодом, связанные с предприятием, с платформ с открытым исходным кодом.
с превышением правомочий
определение
«Превышал собственные полномочия и делал то, что иначе не смог бы сделать».
горизонтальная блокировка: Пользователь А не имеет права доступа к данным пользователя Б.
вертикальное переопределение: пользователи, которые не вошли в систему, могут получить доступ к приложениям, требующим авторизации.
Например, изначально пользователь А может просматривать только данные своего заказа, но он может просматривать данные заказа пользователя Б, изменив параметры URL.
Пользователи, которые не вошли в систему, могут получить доступ к фоновому модулю и выполнять операции.
защита
Для всех операций, связанных с пользовательскими данными, личность текущего пользователя должна быть строго определена.
Для всех местоположений, где требуется контроль разрешений, уровни разрешений пользователей должны строго проверяться.
недостаток конструкции
Возвращается слишком много информации
Например, при входе в систему проверьте, когда пользователь не существует, верните «пользователь не существует», когда пользователь отключен, верните «пользователь был отключен».
Чтобы избежать злонамеренных попыток злоумышленников, не следует возвращать слишком много информации, и можно единообразно возвращать «ошибку имени пользователя или пароля».
SMS-интерфейс подвергся злонамеренной атаке
Например, когда пользователь вводит номер мобильного телефона во время регистрации или входа в систему, непосредственно может сработать SMS-интерфейс, который, скорее всего, будет атакован SMS-сообщениями злоумышленника.
Необходимо сделать для увеличения лимита вызовов интерфейса:
-
Установите интервал отправки SMS-сообщений на один и тот же номер телефона
-
Установите максимальный ежедневный объем отправки на IP-адрес
-
Установите максимальный ежедневный объем отправки для каждого мобильного номера
-
Обновите код подтверждения, используя скользящую головоломку, щелчок по тексту, щелчок по диаграмме...
-
Метод аутентификации для обновления интерфейса SMS
резюме
В статье в основном объясняются восемь аспектов, таких как атаки с внедрением SQL, атаки XSS, атаки SSRF, атаки CSRF, уязвимости при загрузке файлов, утечка информации, несанкционированный доступ и недостатки дизайна.
При этом всегда будьте бдительны, все введенные пользователем данные не заслуживают доверия, а полученные данные необходимо проверять и фильтровать.
Не верьте легко коду, найденному в Интернете, и относитесь скептически к использованию сторонних библиотек классов или кода. Вам нужно больше отлаживать и проверять. Код, который кажется безпроблемным, может таить в себе множество угроз безопасности.
Наконец, рекомендуется платформа для демонстрации уязвимостей с открытым исходным кодом, содержащая более 100 уязвимостей.
Это устанавливается локально, каждый пытается внедрить вредоносный код, и в то же время предостерегает себя от таких ошибок.
bWAPP: http://woowoo.IT Sec games.com/
Рекомендуемое чтение
Эту статью можно переслать, пожалуйста, укажите автора и источник для пересылки, спасибо!