2. Тестирование безопасности: PHP инъекция
Введение
Почему проблема всегда актуальна
●
Захват ресурса с целью внедрения своего кода (вирусы,
ссылки, баннеры)
●
Хищение информации / шпионаж
●
Недобросовестная конкуренция
●
Спортивный интерес
3. Тестирование безопасности: PHP инъекция
Введение
Почему именно PHP
Netcraft:
●
39% сайтов в интернете используют PHP
●
244 млн. сайтов используют PHP
4. Тестирование безопасности: PHP инъекция
Общее понятие
PHP-инъекция - один из способов
взлома веб-сайтов, работающих на
PHP, заключающийся в выполнении
постороннего кода на серверной
стороне.
6. Тестирование безопасности: PHP инъекция
Общее понятие
Использование повторяющихся кусков кода на разных страницах
приводят к использованию:
include()
include_once()
require()
require_once()
7. Тестирование безопасности: PHP инъекция
Общее понятие
passthru(), system(), exec(), shell_exec,
popen, proc_open
Позволяют запускать стороннее приложение. Чаще всего имеется
в виду – консольное.
8. Тестирование безопасности: PHP инъекция
Общее понятие
Для примера, классический Web shell
shell.php:
<?php
system($_GET["command"]);
?>
9. Тестирование безопасности: PHP инъекция
Общее понятие
Пример использования web shell'a:
Выключить windows хост-машину
http://[site]/shell.php?command=shutdown -s
После декодирования получается:
http://[site]/shell.php?command=shutdown%20-s
10. Тестирование безопасности: PHP инъекция
Общее понятие
Готовые решения web shell'ов
●
C99 Shell
●
CIH.[ms] Webshell
●
R57Shell
●
WSO Webshell
●
P.A.S.
●
phpShell
●
...
33. Тестирование безопасности: PHP инъекция
Рекурсия
Рекурсия - вызов функции (процедуры)
из неё же самой (wiki)
Текущий пример:
http://www.sghp.ru/index.php?page=index.php
Acunetix – 300 евро лицензия на один сайт.
RATS - is a security auditing utility for C, C++, PHP, Perl, and Python code.
RPVS – французский разработчик