Translated plans for chapters "Denial of service", "Improper Error Handling", "Injection Flaws"

git-svn-id: http://webgoat.googlecode.com/svn/trunk/webgoat@429 4033779f-a91e-0410-96ef-6bf7bf53c507
This commit is contained in:
white.tiger.russia@gmail.com 2011-05-31 13:33:49 +00:00
parent 22a8385c77
commit d10e7bdf00
10 changed files with 131 additions and 78 deletions

View File

@ -1,23 +1,23 @@
<div align="Center"> <div align="Center">
<p><b>Lesson Plan Title:</b> How to Create Database Back Door Attacks.</p> <p><b>Название урока:</b> Как осуществляется помещение вредоносных конструкций в БД.</p>
</div> </div>
<p><b>Concept / Topic To Teach:</b> </p> <p><b>Тема для изучения:</b> </p>
How to Create Database Back Door Attacks. Помещение вредоносных конструкций в БД
<br> <br>
<div align="Left"> <div align="Left">
<p> <p>
<b>How the attacks works:</b> <b>Как работает данный вид атаки:</b>
</p> </p>
Databases are used usually as a backend for web applications. Also it is used as a media of storage. It can also База данных обычно используется как backend веб-приложений в качестве хранилища важных данных. В процессе атаки злоумышленник
be used as a place to store a malicious activity such as a trigger. A trigger is called by the database management может помещать в неё различные вредоносные конструкции, например опасные триггеры. Триггеры вызываются
system upon the execution of another database operation like insert, select, update or delete. An attacker for example каждый раз при выполнении базой определённой операции (выборка, вставка, обновление данных и т.д.). Например атакующий
can create a trigger that would set his email address instead of every new user's email address. может создать триггер который будет у всех регистрирующихся пользователей менять почтовые адреса на подконтрольный ему email.
</div> </div>
<p><b>General Goal(s):</b> </p> <p><b>Основная цель(и):</b> </p>
<!-- Start Instructions --> <!-- Start Instructions -->
* Your goal should be to learn how you can exploit a vulnerable query to create a trigger.<br> * Вы должны понять как с помощью эксплуатации уязвимого запроса создать триггер
* You will not be able to actually create one in this lesson because the underlying database engine used with WebGoat doesn't support triggers.<br> * У вас не получится создать в данном приложении настоящий вредоносный триггер т.к. БД используемая WebGoat`ом не поддерживает триггеров.
* Your login ID is 101. * Ваш ID для входа - 101.
<!-- Stop Instructions --> <!-- Stop Instructions -->

View File

@ -1,15 +1,25 @@
<div align="Center"> <div align="Center">
<p><b>Lesson Plan Title:</b> How to Perform Blind SQL Injection </p> <p><b>Название темы:</b> Использование слепых SQL-инъекций </p>
</div> </div>
<p><b>Concept / Topic To Teach:</b> </p> <p><b>Тема для изучения:</b> </p>
<!-- Start Instructions --> <!-- Start Instructions -->
SQL injection attacks represent a serious threat to any database-driven site. The methods behind an attack are easy to learn and the damage caused can range from considerable to complete system compromise. Despite these risks an incredible number of systems on the internet are susceptible to this form of attack. SQL-инъекции представляют серьёзную опасность для сайтов, чья работа основывается на БД.
Методы осуществления таких атак очень просты в освоении и ущерб наносимый ими нельзя недооценивать т.к. злоумышленник
с их помощью в некоторых случаях может добиться полной компрометации системы.
Несмотря на всю опасность SQL-инъекций каждый день появляется множество уязвимых к ним веб-приложений.
<br> <br>
Not only is it a threat easily instigated, it is also a threat that, with a little common-sense and forethought, can be almost totally prevented. This lesson will show the student several examples of SQL injection.<br> На самом деле сейчас опасность данного вида уязвимостей сильно преувеличивают. Есть множество способов благодаря которым
любой разработчик практически полностью может защитить своё приложение от них.
Вообще проверка всех входящих данных является очень хорошей практикой не только при работе с БД, но и
в случаях с выполнением команд ОС, скриптов и т.д.
<br> <br>
It is always good practice to sanitize all input data, especially data that will used in OS command, scripts, and database queries.<br>
<!-- Stop Instructions --> <!-- Stop Instructions -->
<p><b>General Goal(s):</b> </p> <p><b>Главная цель(и):</b> </p>
The form below allows a user to enter an account number and determine if it is valid or not. Use this form to develop a true / false test check other entries in the database.<br><br>Reference Ascii Values: 'A' = 65 'Z' = 90 'a' = 97 'z' = 122<br><br>The goal is to find the value of the first_name in table user_data for userid 15613. Put that name in the form to pass the lesson. Форма, расположенная ниже, позволяет пользователю вводить номер аккаунта и проверять действителен он или нет.
Воспользуйтесь данной формой для того чтоб через уязвимость на стороне сервера получить
возможность извлекать произвольные данные из БД.
<br><br>Ascii-значения символов которые могут вам понадобиться: 'A' = 65 'Z' = 90 'a' = 97 'z' = 122
<br><br>Целью является получение содержимого поля first_name в таблице user_data для записи с номером 15613.
Поместите его имя в эту форму для того чтоб закончить урок.

View File

@ -1,12 +1,18 @@
<div align="Center"> <div align="Center">
<p><b>Lesson Plan Title:</b> How to Perform Command Injection</p> <p><b>Название урока:</b> Использование инъекций команд</p>
</div> </div>
<p><b>Concept / Topic To Teach:</b></p> <p><b>Тема для изучения:</b></p>
<!-- Start Instructions --> <!-- Start Instructions -->
Command&nbsp; injection attacks represent a serious threat to any parameter-driven site. The methods behind an attack are easy to learn and the damage caused can range from considerable to complete system compromise. Despite these risks an incredible number of systems on the internet are susceptible to this form of attack.<br/> Атаки класса "Инъекция команд" представляют собой серьёзную угрозу для сайтов принимающих
Not only is it a threat easily instigated, it is also a threat that, with a little common-sense and forethought, can be almost totally prevented. This lesson will show the student several examples of parameter injection.<br/> от пользователей какие-либо данные. Методика их использования достаточно тривиальна, но в тоже
It is always good practice to sanitize all input data, especially data that will used in OS command, scripts, and database queries.<br/> время они могут приводить к полной компрометации атакованной системы. Несмотря на это количество
Try to inject a command to the operating system. приложений имеющих подобные уязвимости неуклонно растёт.<br/>
На самом деле подобные угрозы могут быть полностью устранены с помощью принятия разработчиками
простейших мер направленных на обеспечение безопасности приложения. В данном уроке
будет продемонстрированно множество примеров проведения инъекций через поступающие
из вне параметры.<br/>
Запомните что проверка всех получаемых от пользователя данных, особенно тех, которые будут использоваться
в командах ОС, скриптах или запросах к БД, является хорошей практикой<br/>
<!-- Stop Instructions --> <!-- Stop Instructions -->
<p><b>General Goal(s):</b></p> <p><b>Основные цели и задачи:</b></p>
The user should be able to execute any command on the hosting OS. Попробуйте найти уязвимость через которую можно выполнить какую-нибудь команду операционной системы.

View File

@ -1,9 +1,12 @@
<div align="Center"> <div align="Center">
<p><b>Lesson Plan Title:</b> Denial of Service from Multiple Logins</p> <p><b>Название урока:</b> Отказ в обслуживании при нескольких одновременных попытках авторизации</p>
</div> </div>
<p><b>Concept / Topic To Teach:</b> </p> <p><b>Тема для изучения:</b> </p>
<!-- Start Instructions --> <!-- Start Instructions -->
Denial of service attacks are a major issue in web applications. If the end user cannot conduct business or perform the service offered by the web application, then both time and money is wasted. Атаки класса "Отказ в обслуживании" являются главной проблемой веб-приложений. Ситуации, при которых конечный пользователь
<p><b>General Goal(s):</b> </p> долгое время не может получить доступ к важному приложению или сервису, могут принести большие убытки.
This site allows a user to login multiple times. This site has a database connection pool that allows 2 connections. You must obtain a list of valid users and create a total of 3 logins. <p><b>Основные цели и задачи:</b> </p>
Данный сайт позволяет нескольким пользователям авторизироваться одновременно. В то же время
веб-приложение может устанавливать с БД только 2 соединения за раз. Вы должны получить
список существующих пользователей и попытаться одновременно произвести вход от 3 логинов.
<!-- Stop Instructions --> <!-- Stop Instructions -->

View File

@ -1,10 +1,13 @@
<div align="Center"> <div align="Center">
<p><b>Lesson Plan Title:</b> How to Bypass Fail Open Authentication </p> <p><b>Название урока:</b> Использование уязвимостей ложной аутентификации </p>
</div> </div>
<p><b>Concept / Topic To Teach:</b> </p> <p><b>Тема для изучения:</b> </p>
<!-- Start Instructions --> <!-- Start Instructions -->
This lesson presents the basics for understanding the "fail open" condition regarding authentication. The security term, &#8220;fail open&#8221; describes a behavior of a verification mechanism. This is when an error (i.e. unexpected exception) occurs during a verification method causing that method to evaluate to true. This is especially dangerous during login. <br> На данном уроке вы ознакомитесь с основами возникновения условий, приводящих к
ложной аутентификации пользователей. Например, ложная аутентификация может происходить в тех случаях,
когда возникающая в процессе работы приложения ошибка (например неперехваченное исключение)
не позволяет программе точно определить верность вводимых пользователем данных.<br>
<!-- Stop Instructions --> <!-- Stop Instructions -->
<p><b>General Goal(s):</b> </p> <p><b>Основные цели и задачи:</b> </p>
The user should be able to bypass the authentication check. Вы должны обойти механизм проверки аутентификации.

View File

@ -1,20 +1,20 @@
<div align="Center"> <div align="Center">
<p><b>Lesson Plan Title:</b> How to Perform Log Spoofing. </p> <p><b>Название урока:</b> Подделка записей в лог-файлах. </p>
</div> </div>
<p><b>Concept / Topic To Teach:</b> </p> <p><b>Тема для изучения:</b> </p>
This lesson teaches attempts to fool the human eye. На этом уроке рассматривается простой обман человеческих глаз.
<br> <br>
<div align="Left"> <div align="Left">
<p> <p>
<b>How the attacks works:</b> <b>Как работает данный тип атак:</b>
The attack is based on fooling the humane eye in log files. An attacker can erase his traces from the logs Целью этих атак является подделка записей лог-файла за счёт помещения в него специально сформированной строки.
using this attack. Это позволит атакующему запутать администратора и скрыть свои следы.
</p> </p>
</div> </div>
<p><b>General Goal(s):</b> </p> <p><b>Основные цели:</b> </p>
<!-- Start Instructions --> <!-- Start Instructions -->
* The grey area below represents what is going to be logged in the web server's log file.<br> * В сером поле, расположенном ниже, отображается содержимое которое будет в несено в лог-файл.<br>
* Your goal is to make it like a username "admin" has succeeded into logging in.<br/> * Вашей целью является создание такой записи, в которой сообщено будто пользователь "admin" вошёл успешно<br/>
* Elevate your attack by adding a script to the log file. * Кроме этого попробуйте поместить в лог-файл какую-нибудь JS-вставку.
<!-- Stop Instructions --> <!-- Stop Instructions -->

View File

@ -1,14 +1,20 @@
<div align="Center"> <div align="Center">
<p><b>Lesson Plan Title:</b> How to Perform a SQL Injection </p> <p><b>Название урока:</b> Проведение SQL-инъекци</p>
</div> </div>
<p><b>Concept / Topic To Teach:</b> </p> <p><b>Тема для изучения:</b> </p>
<!-- Start Instructions --> <!-- Start Instructions -->
SQL injection attacks represent a serious threat to any database-driven site. The methods behind an attack are easy to learn and the damage caused can range from considerable to complete system compromise. Despite these risks, an incredible number of systems on the internet are susceptible to this form of attack. SQL-инъекции представляют из себя очень серьёзную угрозу для сайтов основанных на БД.
Методы их использования достаточно легки в освоении, а ущерб создаваемый ими огромен и
при определённых условиях может произойти к компрометации всей системы. Тем не менее,
количество интернет-сайтов с уязвимостями данного типа постоянно растёт.
<br><br> <br><br>
Not only is it a threat easily instigated, it is also a threat that, with a little common-sense and forethought, can easily be prevented.<br> На самом деле всегда можно избежать появления уязвимостей этого класса
если в процессе написания приложений соблюдать общие меры предосторожности.
Например фильтровать все поступающие от пользователя данные. Особенно те, которые
будут помещены в SQL-запросы.
<br> <br>
It is always good practice to sanitize all input data, especially data that will used in OS command, scripts, and database queiries, even if the threat of SQL injection has been prevented in some other manner.<br> <p><b>Основные цели и задачи:</b> </p>
<p><b>General Goal(s):</b> </p> В данном упражнении вы научитесь использовать SQL-инъекции. Кроме того, вам нужно будет
For this exercise, you will perform SQLInjection attacks. You will also implement code changes in the web application to defeat these attacks. внести в код правки, которые устранят эту уязвимость в тестовом приложении.
<!-- Stop Instructions --> <!-- Stop Instructions -->

View File

@ -1,14 +1,22 @@
<div align="Center"> <div align="Center">
<p><b>Lesson Plan Title:</b> How to Perform Numeric SQL Injection </p> <p><b>Название урока:</b> Проведение числовых SQL-инъекций </p>
</div> </div>
<p><b>Concept / Topic To Teach:</b> </p> <p><b>Тема для изучения:</b> </p>
<!-- Start Instructions --> <!-- Start Instructions -->
SQL injection attacks represent a serious threat to any database-driven site. The methods behind an attack are easy to learn and the damage caused can range from considerable to complete system compromise. Despite these risks, an incredible number of systems on the internet are susceptible to this form of attack. SQL-инъекции представляют из себя очень серьёзную угрозу для сайтов основанных на БД.
Методы их использования достаточно легки в освоении, а ущерб создаваемый ими огромен и
при определённых условиях может произойти к компрометации всей системы. Тем не менее,
количество интернет-сайтов с уязвимостями данного типа постоянно растёт.
<br><br> <br><br>
Not only is it a threat easily instigated, it is also a threat that, with a little common-sense and forethought, can easily be prevented.<br> На самом деле всегда можно избежать появления уязвимостей этого класса
если в процессе написания приложений соблюдать общие меры предосторожности.
Например фильтровать все поступающие от пользователя данные. Особенно те, которые
будут помещены в SQL-запросы.
<br> <br>
It is always good practice to sanitize all input data, especially data that will used in OS command, scripts, and database queries, even if the threat of SQL injection has been prevented in some other manner.<br> <p><b>Основные цели:</b> </p>
<p><b>General Goal(s):</b> </p> Расположенная ниже форма позволяет пользователям смотреть данные о погоде.
The form below allows a user to view weather data. Try to inject an SQL string that results in all the weather data being displayed. Вам необходимо с её помощью обнаружить в тестовом приложении уязвимость.
Для подсказки чуть ниже выводится итоговый запрос, который получается на
стороне сервера.
<!-- Stop Instructions --> <!-- Stop Instructions -->

View File

@ -1,14 +1,22 @@
<div align="Center"> <div align="Center">
<p><b>Lesson Plan Title:</b> How to Perform String SQL Injection </p> <p><b>Название урока:</b> Как использовать строковые SQL-инекции </p>
</div> </div>
<p><b>Concept / Topic To Teach:</b> </p> <p><b>Тема для изучения:</b> </p>
<!-- Start Instructions --> <!-- Start Instructions -->
SQL injection attacks represent a serious threat to any database-driven site. The methods behind an attack are easy to learn and the damage caused can range from considerable to complete system compromise. Despite these risks, an incredible number of systems on the internet are susceptible to this form of attack. SQL-инъекции представляют из себя очень серьёзную угрозу для сайтов основанных на БД.
Методы их использования достаточно легки в освоении, а ущерб создаваемый ими огромен и
при определённых условиях может произойти к компрометации всей системы. Тем не менее,
количество интернет-сайтов с уязвимостями данного типа постоянно растёт.
<br><br> <br><br>
Not only is it a threat easily instigated, it is also a threat that, with a little common-sense and forethought, can easily be prevented.<br> На самом деле всегда можно избежать появления уязвимостей этого класса
если в процессе написания приложений соблюдать общие меры предосторожности.
Например фильтровать все поступающие от пользователя данные. Особенно те, которые
будут помещены в SQL-запросы.
<br> <br>
It is always good practice to sanitize all input data, especially data that will used in OS command, scripts, and database queries, even if the threat of SQL injection has been prevented in some other manner.<br> <br>
<p><b>General Goal(s):</b> </p> <p><b>Основные цели и задачи:</b> </p>
The form below allows a user to view their credit card numbers. Try to inject an SQL string that results in all the credit card numbers being displayed. Try the user name of 'Smith'. Расположенная ниже форма позволяет пользователям просматривать их номера кредитных карт.
Попробуйте внести SQL-выражение в поле фамилии. После отправки формы вы чуть ниже увидите итоговый
SQL-запрос, который сформируется в приложении. В качестве самой фамилии используйте 'Smith'.
<!-- Stop Instructions --> <!-- Stop Instructions -->

View File

@ -1,22 +1,31 @@
<div align="Center"> <div align="Center">
<p><b>Lesson Plan Title:</b> How to Perform XPATH Injection Attacks. </p> <p><b>Название урока:</b> Использование XPATH-инъекций. </p>
</div> </div>
<p><b>Concept / Topic To Teach:</b> </p> <p><b>Тема для изучения:</b> </p>
This lesson teaches how to perform XPath Injection attacks. Сейчас мы рассмотрим использование XPath-инъекций
<br> <br>
<div align="Left"> <div align="Left">
<p> <p>
<b>How the attacks works:</b> <b>Как работает данный вид атак:</b>
</p> </p>
Similar to SQL Injection, XPATH Injection attacks occur when a web site uses user supplied information to query XML data. By sending intentionally malformed information into the web site, an attacker can find out how the XML data is structured or access data that they may not normally have access to. По аналогии с SQL-инъекциями, XPath-инъекции возникают тогда, когда пользовательские
They may even be able to elevate their privileges on the web site if the xml data is being used for authentication (such as an xml based user file). данные без должной проверки попадают в запрос к XML-данным. Посылая приложению
специльно сформированные запросы злоумышленник может раскрыть внутреннюю структуру
Querying XML is done with XPath, a type of simple descriptive statement that allows the xml query to locate a piece of information. Like SQL you can specify certain attributes to find and patterns to match. When using XML for a web site it is common to accept some form of input on the query string to identify the content to locate and display on the page. This input must be sanitized to verify that it doesn't mess up the XPath query and return the wrong data. XML-базы и получить доступ к той информации, к которой ему обращаться нельзя.
Например он может повысить свои привилегии если ему удастся
произвести XPath-инъекцию в отношении файла хранящего пользовательские аккаунты.
Запросы к XML осуществляются с помощью XPath - не сложного языка, позволяющего
определять местонахождения информации в XML-структуре. Как и в SQL, в нём вы можете
устанавливать критерии поиска. В случаях когда данные приложения хранятся в виде XML-базы,
пользователь с помощью одного или нескольких параметров запроса может определять что из неё будет
извлечено и отображено на сайте. Эти параметры должны тщательно проверяться, чтоб атакующий
не смог изменить структуру изначального XPath-запроса и извлечь чувствительную информацию.
</div> </div>
<p><b>General Goal(s):</b> </p> <p><b>Основные цели:</b> </p>
<!-- Start Instructions --> <!-- Start Instructions -->
The form below allows employees to see all their personal data including their salaries. Your account is Mike/test123. Your goal is to try to see other employees data as well. Форма ниже позволяет работникам смотреть их персональную информацию включая данные
о зарплате. Ваш аккаунт - Mike/test123. Цель - просмотреть данные других работников.
<!-- Stop Instructions --> <!-- Stop Instructions -->