Web. Full Path Disclosure Array[] Parameter Injection Illegal Session Injection Direct Access to files that requires preloaded library files Арыков Никита,

Презентация:



Advertisements
Похожие презентации
Open InfoSec Days Томск, 2011 Глава 1. Атаки на веб-приложения и методы защиты Занятие 3. File Inclusion.
Advertisements

Тестирование безопасности или Security and Access Control Testing.
Тема 4 Организация доступа к ресурсам портала 1. Базовая аутентификация пользователей 2. Автоматическая регистрация и аутентификация пользователей 3. Аутентификация.
Создание проекта Zend Лекция 2 1.Создание нового проекта 2.Анализ нового проекта 3.Создание макетов.
SQL-injections for dummies. Что это? Способ несанкционированного доступа к данным, хранящимся в БД, основанный на внедрении в запрос произвольного SQL-
Разработка и использование интерактивных форм Общие положения. Общие положения. Современные браузеры позволяют пользователю, заполнив специальную форму,
Проф. В.К.Толстых, Технологии разработки Internet- приложений ASP.NET приложения – обработка ошибок страниц и приложения, Global.aspx.
1 Учебный курс Основы Web-технологий Лекция 6 CGI и Perl. SSI и Cookies кандидат технических наук Павел Брониславович Храмцов
Графика средствами PHP. Далеко не всегда графика на веб-ресурсе используется исключительно для придания ему уникального внешнего вида. Зачастую возникает.
1 Кубенский А.А. Функциональное программирование. Глава 4. Основы лямбда-исчисления Рекурсия в лямбда-исчислении fac = λn.(if (= n 0) 1 (* n (fac.
Практическое программирование на Java к.ф.-м.н. Козлов Дмитрий Дмитриевич Кафедра АСВК, Лаборатория Вычислительных комплексов.
Учебный семинар по ASP.NET Нижегородское сообщество.NET разработчиков Нижегородское сообщество.NET разработчиков Лаборатория информационных технологий.
Saint Petersburg, 2012 Java Lecture 12 JSTL. JSP -> JSTL JSP – хорошо Что делать если хотим добавить условие? Итерирование по списку и вывод каждого элемента.
Открытое занятие по дисциплине «Web-программирование»
Что нового в PHP 5.3Что нового в PHP 5.3Почему PHP 5.3? PHP 5.2 существует уже 1.5 года. В нем найдено несколько серьезных ошибок, которые не могут быть.
PL/SQL Курсоры. Курсор – специальный элемент, связанный с SQL-оператором SELECT. Объявление курсора происходит в секции объявления базового блока. Работа.
Нарушение целостности структуры SQL-запроса. Внедрение SQL-кода (SQL injection) один из распространённых способов взлома ПО, работающего с базами данных,
Open InfoSec Days Томск, 2011 Глава 1. Атаки на веб-приложения и методы защиты Занятие 2. Cross-site request forgery.
JS, or not JS, вот в чем вопрос Фитискин Александр веб-технолог студия «Dominion»
Объектная модель DOM javascript. Иерархия классов.
Транксрипт:

Web. Full Path Disclosure Array[] Parameter Injection Illegal Session Injection Direct Access to files that requires preloaded library files Арыков Никита,

Full Path Disclosure(FPD) Full Path Disclosure(FPD)(Раскрытие полного пути) – ошибка, возникающая в результате неправильной обработки входных данных [ну это, как обычно =) ] Цель: вызвать ошибку в работе сервера, чтобы на экран была выведена ошибка с полным путем до файла на сервере.

Reason В php есть директива display_errors. Эта настройка определяет, требуется ли выводить ошибки на экран вместе с остальным выводом, либо ошибки должны быть скрыты от пользователя. ini.display-errors ini.display-errors Если директива на сервере включена(on), то можем эксплуатировать. Пример: Warning: opendir(Array): failed to open dir: No such file or directory in /home/omg/htdocs/index.php on line 84

Secret of the HTTP Помимо стандартного GET запроса 2=foo Можно передавать массивы, например так &trololo=3&ololo[]=4 Найти описание в спецификации HTTP этого не удалось, возможно работает только в php

Arrays in html В html с помощью формы можно оправить массив 1 2 3

What happens on the server? Попробуем просто распечатать наш массив с get параметрами

What happens on the server? Результат для Array ( [ololo] => Array ( [0] => 1 [1] => 2 [2] => 4 ) [trololo] => 3 ) Видно, что в массиве GET содержится массив ololo и переменная trololo

Where is the problem? Пусть в коде сервера исполняется следующий код Результат исполнения: Warning: fopen() expects parameter 1 to be string, array given in Z:\home\test1.ru\www\fullpath\index.php on line 2

Array[] Parameter Injection Данный вид атаки называется Array[] Parameter Injection и возникает из-за того, что функции дают на вход не строку, как она ожидала, а массив. Т.к. входные параметры обычно передаются во многие функции, то вероятность успешной атаки достаточно велика. Для защиты нужно проверять на тип: is_array(), is_string(), is_numeric(), etc. Для эксплуатации просто добавляем [] в URL для get-параметров.

PHP Session Для авторизации в php часто используются сессии: каждому посетителю сайта присваивается уникальный идентификатор, называемый идентификатором сессии (session_id). Чаще всего используются cookie, либо передается через URL(например параметром get).

PHP Session Стандартное имя идентификатора сессии в php это PHPSESSID, но оно может быть и другим, если программист изменил его с помощью session_name(); session_id состоит из a-z A-Z 0-9, (comma) and - (minus) По умолчанию это md5(128bit), но в настройках можно изменить session.hash_function на SHA- 1(160bit). Может использоваться и другая хэш- функция, но это маловероятно.

Illegal Session Injection Null Session Cookie В случае если сайт используется сессии, можно удалить значение для PHPSESSID например введя в строку браузера javascript:void(document.cookie="PHPSESSID="); Это вызовет ошибку на стороне сервера Warning: session_start() [function.session-start]: The session id contains illegal characters, valid characters are a-z, A-Z, 0-9 and '-,' in home/example/public_html/includes/functions.php on line 2

Illegal Session Injection Invalid Session Cookie Достаточно похожа на Null Session Injection, но вместо пустой сессии идентификатор заменяется на недопустимое значение javascript:void(document.cookie='PHPSESSID=AAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); Warning: session_start(): The session id is too long or contains illegal characters, valid characters are a-z, A-Z, 0-9 and '-,' in /home/example/public_html/includes/functions.php on line 2

Direct Access to files that requires preloaded library files Рассмотрим пример./include/shared.php: – function makeOlolo(){ echo 'ololo'; }./index.php – include_once('./include/shared.php'); – include_once('./TestClass.php');./TestClass.php – class TestClass { – public function TestClass() { – makeOlolo(); – } – $testClass = new TestClass(); всё хорошо выведет ololo выведет ошибку Fatal error: Call to undefined function makeOlolo() in Z:\home\test1.ru\www\fullpath\TestClass.php on line 4

FPD Prevention Нужно проверять передаваемые типы Отключить отображение ошибок: – php.ini: display_errors = 'off –.htaccess: php_flag display_errors off – PHP script: ini_set('display_errors', false);

Useful links e e ure ure Потренироваться можно здесь ce/ Challenge 4 Full Path Disclosure identification via Array, Challenge 5 Full Path Disclosure identification ce/ И здесь какой таск догадайтесь сами =)