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">
<p><b>Lesson Plan Title:</b> How to Create Database Back Door Attacks.</p>
<p><b>Название урока:</b> Как осуществляется помещение вредоносных конструкций в БД.</p>
</div>
<p><b>Concept / Topic To Teach:</b> </p>
How to Create Database Back Door Attacks.
<p><b>Тема для изучения:</b> </p>
Помещение вредоносных конструкций в БД
<br>
<div align="Left">
<p>
<b>How the attacks works:</b>
<b>Как работает данный вид атаки:</b>
</p>
Databases are used usually as a backend for web applications. Also it is used as a media of storage. It can also
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.
База данных обычно используется как backend веб-приложений в качестве хранилища важных данных. В процессе атаки злоумышленник
может помещать в неё различные вредоносные конструкции, например опасные триггеры. Триггеры вызываются
каждый раз при выполнении базой определённой операции (выборка, вставка, обновление данных и т.д.). Например атакующий
может создать триггер который будет у всех регистрирующихся пользователей менять почтовые адреса на подконтрольный ему email.
</div>
<p><b>General Goal(s):</b> </p>
<p><b>Основная цель(и):</b> </p>
<!-- 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>
* Your login ID is 101.
* Вы должны понять как с помощью эксплуатации уязвимого запроса создать триггер
* У вас не получится создать в данном приложении настоящий вредоносный триггер т.к. БД используемая WebGoat`ом не поддерживает триггеров.
* Ваш ID для входа - 101.
<!-- Stop Instructions -->

View File

@ -1,15 +1,25 @@
<div align="Center">
<p><b>Lesson Plan Title:</b> How to Perform Blind SQL Injection </p>
<p><b>Название темы:</b> Использование слепых SQL-инъекций </p>
</div>
<p><b>Concept / Topic To Teach:</b> </p>
<p><b>Тема для изучения:</b> </p>
<!-- 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>
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>
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 -->
<p><b>General Goal(s):</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.
<p><b>Главная цель(и):</b> </p>
Форма, расположенная ниже, позволяет пользователю вводить номер аккаунта и проверять действителен он или нет.
Воспользуйтесь данной формой для того чтоб через уязвимость на стороне сервера получить
возможность извлекать произвольные данные из БД.
<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">
<p><b>Lesson Plan Title:</b> How to Perform Command Injection</p>
<p><b>Название урока:</b> Использование инъекций команд</p>
</div>
<p><b>Concept / Topic To Teach:</b></p>
<p><b>Тема для изучения:</b></p>
<!-- 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 -->
<p><b>General Goal(s):</b></p>
The user should be able to execute any command on the hosting OS.
<p><b>Основные цели и задачи:</b></p>
Попробуйте найти уязвимость через которую можно выполнить какую-нибудь команду операционной системы.

View File

@ -1,9 +1,12 @@
<div align="Center">
<p><b>Lesson Plan Title:</b> Denial of Service from Multiple Logins</p>
<p><b>Название урока:</b> Отказ в обслуживании при нескольких одновременных попытках авторизации</p>
</div>
<p><b>Concept / Topic To Teach:</b> </p>
<p><b>Тема для изучения:</b> </p>
<!-- 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 -->

View File

@ -1,10 +1,13 @@
<div align="Center">
<p><b>Lesson Plan Title:</b> How to Bypass Fail Open Authentication </p>
<p><b>Название урока:</b> Использование уязвимостей ложной аутентификации </p>
</div>
<p><b>Concept / Topic To Teach:</b> </p>
<p><b>Тема для изучения:</b> </p>
<!-- 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 -->
<p><b>General Goal(s):</b> </p>
The user should be able to bypass the authentication check.
<p><b>Основные цели и задачи:</b> </p>
Вы должны обойти механизм проверки аутентификации.

View File

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

View File

@ -1,14 +1,20 @@
<div align="Center">
<p><b>Lesson Plan Title:</b> How to Perform a SQL Injection </p>
<p><b>Название урока:</b> Проведение SQL-инъекци</p>
</div>
<p><b>Concept / Topic To Teach:</b> </p>
<p><b>Тема для изучения:</b> </p>
<!-- 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>
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>
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>General Goal(s):</b> </p>
For this exercise, you will perform SQLInjection attacks. You will also implement code changes in the web application to defeat these attacks.
<p><b>Основные цели и задачи:</b> </p>
В данном упражнении вы научитесь использовать SQL-инъекции. Кроме того, вам нужно будет
внести в код правки, которые устранят эту уязвимость в тестовом приложении.
<!-- Stop Instructions -->

View File

@ -1,14 +1,22 @@
<div align="Center">
<p><b>Lesson Plan Title:</b> How to Perform Numeric SQL Injection </p>
<p><b>Название урока:</b> Проведение числовых SQL-инъекций </p>
</div>
<p><b>Concept / Topic To Teach:</b> </p>
<p><b>Тема для изучения:</b> </p>
<!-- 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>
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>
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>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.
<p><b>Основные цели:</b> </p>
Расположенная ниже форма позволяет пользователям смотреть данные о погоде.
Вам необходимо с её помощью обнаружить в тестовом приложении уязвимость.
Для подсказки чуть ниже выводится итоговый запрос, который получается на
стороне сервера.
<!-- Stop Instructions -->

View File

@ -1,14 +1,22 @@
<div align="Center">
<p><b>Lesson Plan Title:</b> How to Perform String SQL Injection </p>
<p><b>Название урока:</b> Как использовать строковые SQL-инекции </p>
</div>
<p><b>Concept / Topic To Teach:</b> </p>
<p><b>Тема для изучения:</b> </p>
<!-- 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>
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>
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>General Goal(s):</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'.
<br>
<p><b>Основные цели и задачи:</b> </p>
Расположенная ниже форма позволяет пользователям просматривать их номера кредитных карт.
Попробуйте внести SQL-выражение в поле фамилии. После отправки формы вы чуть ниже увидите итоговый
SQL-запрос, который сформируется в приложении. В качестве самой фамилии используйте 'Smith'.
<!-- Stop Instructions -->

View File

@ -1,22 +1,31 @@
<div align="Center">
<p><b>Lesson Plan Title:</b> How to Perform XPATH Injection Attacks. </p>
<p><b>Название урока:</b> Использование XPATH-инъекций. </p>
</div>
<p><b>Concept / Topic To Teach:</b> </p>
This lesson teaches how to perform XPath Injection attacks.
<p><b>Тема для изучения:</b> </p>
Сейчас мы рассмотрим использование XPath-инъекций
<br>
<div align="Left">
<p>
<b>How the attacks works:</b>
<b>Как работает данный вид атак:</b>
</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.
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).
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.
По аналогии с SQL-инъекциями, XPath-инъекции возникают тогда, когда пользовательские
данные без должной проверки попадают в запрос к XML-данным. Посылая приложению
специльно сформированные запросы злоумышленник может раскрыть внутреннюю структуру
XML-базы и получить доступ к той информации, к которой ему обращаться нельзя.
Например он может повысить свои привилегии если ему удастся
произвести XPath-инъекцию в отношении файла хранящего пользовательские аккаунты.
Запросы к XML осуществляются с помощью XPath - не сложного языка, позволяющего
определять местонахождения информации в XML-структуре. Как и в SQL, в нём вы можете
устанавливать критерии поиска. В случаях когда данные приложения хранятся в виде XML-базы,
пользователь с помощью одного или нескольких параметров запроса может определять что из неё будет
извлечено и отображено на сайте. Эти параметры должны тщательно проверяться, чтоб атакующий
не смог изменить структуру изначального XPath-запроса и извлечь чувствительную информацию.
</div>
<p><b>General Goal(s):</b> </p>
<p><b>Основные цели:</b> </p>
<!-- 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 -->