Translated chapter 'AJAX Security'
Fixed small error in Http Basics lesson git-svn-id: http://webgoat.googlecode.com/svn/trunk/webgoat@425 4033779f-a91e-0410-96ef-6bf7bf53c507
This commit is contained in:
parent
f0978e6422
commit
443f7e7e75
@ -1,12 +1,11 @@
|
|||||||
<div align="Center">
|
<div align="Center">
|
||||||
<p><b>Lesson Plan Title: </b>Client Side Filtering</p>
|
<p><b>Название урока: </b>Фильтрация данных на стороне клиента</p>
|
||||||
</div>
|
</div>
|
||||||
<p><b>Concept / Topic To Teach:</b> </p>
|
<p><b>Тема для изучения:</b> </p>
|
||||||
<!-- Start Instructions -->
|
<!-- Start Instructions -->
|
||||||
It is always a good practice to send to the client only information which they are supposed
|
Всегда считается хорошей практикой отправлять на сторону клиента только ту информацию, доступ к которой он имеет.
|
||||||
to have access to. In this lesson, too much information is being sent to the client, creating
|
В данном уроке на сторону клиента будет отправлено очень много информации, что создаст серьёзные проблемы с контролем доступа к ней.
|
||||||
a serious access control problem.
|
|
||||||
<!-- Stop Instructions -->
|
<!-- Stop Instructions -->
|
||||||
<p><b>General Goal(s):</b> </p>
|
<p><b>Основные цели и задачи:</b> </p>
|
||||||
For this exercise, your mission is exploit the extraneous information being returned by the
|
Ваша цель состоит в том, чтоб среди принимаемых со стороны сервера данных найти ту
|
||||||
server to discover information to which you should not have access.
|
информацию, доступа к которой у вас нет.
|
||||||
|
@ -1,15 +1,14 @@
|
|||||||
<div align="Center">
|
<div align="Center">
|
||||||
<p><b>Lesson Plan Title: </b>Insecure Client Storage</p>
|
<p><b>Название урока: </b>Insecure Client Storage</p>
|
||||||
</div>
|
</div>
|
||||||
<p><b>Concept / Topic To Teach:</b> </p>
|
<p><b>Тема для изучения:</b> </p>
|
||||||
<!-- Start Instructions -->
|
<!-- Start Instructions -->
|
||||||
It is always a good practice to validate all input on the server side. Leaving the
|
Хорошей практикой является проверка на стороне сервера абсолютно всех принимаемых данных.
|
||||||
mechanism for validation on the client side leaves it vulnerable to reverse
|
Реализация механизмов проверки только на стороне клиента делает приложение уязвимым.
|
||||||
engineering. Remember, anything on the client side should not be
|
Запомните, всё что отправляется на сторону клиента не должно содержать критически важных
|
||||||
considered a secret.
|
данных или механизмов.
|
||||||
<!-- Stop Instructions -->
|
<!-- Stop Instructions -->
|
||||||
<p><b>General Goal(s):</b> </p>
|
<p><b>Основные цели:</b> </p>
|
||||||
For this exercise, your mission is to discover a coupon code to receive an unintended
|
В данном упражнении первая ваша задача - обнаружить действующий код купона обеспечивающего скидку.
|
||||||
discount. Then, exploit the use of client side validation to submit an order with a
|
Далее необходимо исследовать механизм проверки вводимых данных и добиться покупки товара за нулевую цену.
|
||||||
cost of zero.
|
|
||||||
|
|
||||||
|
@ -1,23 +1,23 @@
|
|||||||
<div align="Center">
|
<div align="Center">
|
||||||
<p><b>Lesson Plan Title:</b> How to Perform DOM Injection Attack. </p>
|
<p><b>Название урока:</b> Выполнение атаки класса 'DOM-инъекция'. </p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<p><b>Concept / Topic To Teach:</b> </p>
|
<p><b>Тема для изучения:</b> </p>
|
||||||
How to perform DOM injection attacks.
|
Выполнение атаки класса 'DOM-инъекция'.
|
||||||
<br>
|
<br>
|
||||||
<div align="Left">
|
<div align="Left">
|
||||||
<p>
|
<p>
|
||||||
<b>How the attacks works:</b>
|
<b>Как работают атаки данного вида:</b>
|
||||||
</p>
|
</p>
|
||||||
Some applications specially the ones that uses AJAX manipulates and updates the DOM
|
Некое приложение использует технологию AJAX для манипулирования DOM страницы и его обновления
|
||||||
directly using javascript, DHTML and eval() method.<br>
|
по средствам JavaScript, DHTML и функции eval().<br>
|
||||||
An attacker may take advantage of that by intercepting the reply and try to inject some
|
В данном случае атакующий может каким-либо образом попытаться прехватить ответ сервера, и поместить
|
||||||
javascript commands to exploit his attacks.
|
в него набор вредоносных JavaScript-команд.
|
||||||
</div>
|
</div>
|
||||||
<p><b>General Goal(s):</b> </p>
|
<p><b>Основные цели и задачи:</b> </p>
|
||||||
<!-- Start Instructions -->
|
<!-- Start Instructions -->
|
||||||
* Your victim is a system that takes an activation key to allow you to use it.<br>
|
* Ваша жертва - это система требующая от клиентов ключ активации для её использования.<br>
|
||||||
* Your goal should be to try to get to enable the activate button.<br>
|
* Ваша задача состоит в том, чтоб каким-либо образом разблокировать кнопку активации.<br>
|
||||||
* Take some time to see the HTML source in order to understand how the key validation process works.<br>
|
* Уделите немного времени просмотру HTML-кода страницы и вы поймёте как работает весь механизм активации.<br>
|
||||||
<!-- Stop Instructions -->
|
<!-- Stop Instructions -->
|
||||||
|
|
||||||
|
@ -1,15 +1,15 @@
|
|||||||
<div align="Center">
|
<div align="Center">
|
||||||
<p><b>Lesson Plan Title: </b>DOM Based Cross Site Scripting (XSS)</p>
|
<p><b>Название урока: </b>Межсайтовый скриптинг основанный на DOM (DOM XSS)</p>
|
||||||
</div>
|
</div>
|
||||||
<p><b>Concept / Topic To Teach:</b> </p>
|
<p><b>Тема для изучения:</b> </p>
|
||||||
<!-- Start Instructions -->
|
<!-- Start Instructions -->
|
||||||
The Document Object Model (DOM) presents an interesting problem from
|
Объектная модель документа (DOM), с точки зрения безопаности, создаёт собой одну интересную проблему.
|
||||||
a security standpoint. It allows the content of a web page to be dynamically
|
Она позволяет содержимому веб-страниц динамически меняться, что само по себе является хорошей возможностью
|
||||||
modified, but that can be abused by attackers during a malicious code injection. XSS,
|
не только для веб-мастеров, но и для злоумышленников. С её помощью нападающие могут помещать в код страниц
|
||||||
a type of malicious code injection, can occur when unvalidated user input is used directly
|
вредоносные вставки (XSS), если в процессе модификации их содержимого на стороне клиента не происходит
|
||||||
to modify the content of a page on the client side.
|
достаточной проверки данных вводимых пользователем.
|
||||||
|
|
||||||
<!-- Stop Instructions -->
|
<!-- Stop Instructions -->
|
||||||
<p><b>General Goal(s):</b> </p>
|
<p><b>Основные цели и задачи:</b> </p>
|
||||||
For this exercise, your mission is to use this vulnerability to inject
|
В данном упражнении вам необходимо с использованием этой уязвимости поместить вредоносный код
|
||||||
malicious code into the DOM. Then in the last stage, you will correct
|
в объектную модель документа. А в самом конце вы исправите ошибку приводящую к её появлению.
|
||||||
the flaws in the code to address the vulnerability.
|
|
||||||
|
@ -1,14 +1,16 @@
|
|||||||
<div align="Center">
|
<div align="Center">
|
||||||
<p><b>Lesson Plan Title: </b>Dangerous Use of Eval</p>
|
<p><b>Название урока: </b>Опасное использование eval()</p>
|
||||||
</div>
|
</div>
|
||||||
<p><b>Concept / Topic To Teach:</b> </p>
|
<p><b>Тема для изучения:</b> </p>
|
||||||
<!-- Start Instructions -->
|
<!-- Start Instructions -->
|
||||||
It is always a good practice to validate all input on the server side. XSS can occur
|
Хорошей практикой является проверка на стороне сервера всех принимаемых данных.
|
||||||
when unvalidated user input is reflected directly into an HTTP response. In this lesson, unvalidated
|
В случаях когда непроверенные пользовательские данные напрямую отражаются в HTTP-ответе имеется
|
||||||
user-supplied data is used in conjunction with a Javascript eval() call. In a reflected
|
риск появления XSS-уязвимостей. В текущем приложении не проходящие проверку пользовательские данные помещаются
|
||||||
XSS attack, an attacker can craft a URL with the attack script and store it on another
|
в строку передаваемую функции eval(). В подобных ситуациях (они называются отражёнными XSS-уязвимостями)
|
||||||
website, email it, or otherwise trick a victim into clicking on it.
|
злоумышленник может составить URL содержащий специальные вредоносные вставки, и опубликовать его
|
||||||
|
на стороннем веб-сайте, отправить по почте или любым другим способом донести его до жертвы.
|
||||||
<!-- Stop Instructions -->
|
<!-- Stop Instructions -->
|
||||||
<p><b>General Goal(s):</b> </p>
|
<p><b>Основные цели и задачи:</b> </p>
|
||||||
For this exercise, your mission is to come up with some input which, when run through eval,
|
Ваша цель - добиться выполнения произвольного JavaScript-кода в данном приложении используя
|
||||||
will execute a malicious script. In order to pass this lesson, you must 'alert()' document.cookie.
|
уже имеющийся в странице вызов eval(). Для того чтоб успешно завершить урок вы дложны вызвать выполнение строки
|
||||||
|
'alert(document.cookie)'.
|
@ -23,7 +23,7 @@
|
|||||||
предназначаются для CGI-программ использующих метод POST для принятия информации.<br>
|
предназначаются для CGI-программ использующих метод POST для принятия информации.<br>
|
||||||
<p><b>Основные цели и задачи:</b> </p>
|
<p><b>Основные цели и задачи:</b> </p>
|
||||||
<!-- Start Instructions -->
|
<!-- Start Instructions -->
|
||||||
Введите ваше имя в поле расположенное ниже и нажмите "go" для отправки формы. Сервер примет ваш запрос, выстроит
|
Введите ваше имя в поле расположенное ниже и нажмите "Вперёд!" для отправки формы. Сервер примет ваш запрос, выстроит
|
||||||
полученную строку в обратном порядке и выведет результат на экран. Данный пример иллюстрирует основы обработки данных
|
полученную строку в обратном порядке и выведет результат на экран. Данный пример иллюстрирует основы обработки данных
|
||||||
полученных из HTTP-запроса.
|
полученных из HTTP-запроса.
|
||||||
<br/><br/>
|
<br/><br/>
|
||||||
|
@ -1,24 +1,25 @@
|
|||||||
<div align="Center">
|
<div align="Center">
|
||||||
<p><b>Lesson Plan Title:</b> How to Perform JSON Injection </p>
|
<p><b>Название урока:</b> Выполнение атак класса 'JSON-инъекция'</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<p><b>Concept / Topic To Teach:</b> </p>
|
<p><b>Тема для изучения:</b> </p>
|
||||||
This lesson teaches how to perform JSON Injection Attacks.
|
На данном уроке вы научитесь осуществлять атаки класса 'JSON-инъекция'
|
||||||
<br>
|
<br>
|
||||||
<div align="Left">
|
<div align="Left">
|
||||||
<p>
|
<p>
|
||||||
<b>How the attacks works:</b>
|
<b>Как работают такие атаки:</b>
|
||||||
</p>
|
</p>
|
||||||
JavaScript Object Notation (JSON) is a simple and effective lightweight data exchange format. JSON can be in a lot of forms such as arrays, lists, hashtables and other data structures.
|
JSON - это простой, "легковесный" и эффективный формат передачи данных. Данные,
|
||||||
JSON is widely used in AJAX and Web2.0 application and is favored by programmers over XML because of its ease of use and speed.
|
передаваемые с его помощью, могут иметь различные формы. Например это может быть массив, список, хеш-таблица и т.д.
|
||||||
However, JSON, like XML is prone to Injection attacks. A malicious attacker can inject the reply from the server and inject some arbitrary values in there.
|
JSON обычно используется в AJAX- и Web2.0-приложениях, постепенно вытесняя XML за счёт своей простоты и скорости обработки.
|
||||||
|
В то же время JSON, как и XML, предрасположен к атакам инъективного класса. Например злоумышленник может перехватить ответ
|
||||||
|
сервера и внедрить в него произвольные данные.
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<p><b>General Goal(s):</b> </p>
|
<p><b>Основные цели и задачи:</b> </p>
|
||||||
<!-- Start Instructions -->
|
<!-- Start Instructions -->
|
||||||
* You are traveling from Boston, MA- Airport code BOS to Seattle, WA - Airport code SEA.<br>
|
* Вы летите из Бостона, с аэропорта с кодом BOS, в Сиэтл, в аэропорт с кодом SEA.<br>
|
||||||
* Once you enter the three digit code of the airport, an AJAX request will be executed asking for the ticket price.<br>
|
* Когда вы введёте трёхзначные коды аэропортов, на сервер, средствами AJAX, уйдёт запрос о цене билета.<br>
|
||||||
* You will notice that there are two flights available, an expensive one with no stops and another cheaper one with 2 stops.<br>
|
* Вам сообщат что есть два доступных варианта - один без остановок, а второй с двумя остановками.<br>
|
||||||
* Your goal is to try to get the one with no stops but for a cheaper price.
|
* Ваша задача попытаться заказать билет без остановок за цену билета с двумя остановками.
|
||||||
<!-- Stop Instructions -->
|
<!-- Stop Instructions -->
|
||||||
|
|
@ -1,13 +1,13 @@
|
|||||||
<div align="Center">
|
<div align="Center">
|
||||||
<p><b>Lesson Plan Title: </b>Same Origin Policy Protection</p>
|
<p><b>Название урока: </b>Защита с помощью политики одного источника (Same Origin Policy)</p>
|
||||||
</div>
|
</div>
|
||||||
<p><b>Concept / Topic To Teach:</b> </p>
|
<p><b>Тема для изучения:</b> </p>
|
||||||
<!-- Start Instructions -->
|
<!-- Start Instructions -->
|
||||||
A key element of AJAX is the XMLHttpRequest (XHR), which allows javascript to make asynchronous
|
Ключевым элементом технологии AJAX является компонент XMLHttpRequest (XHR). Он позволяет с помощью JavaScript
|
||||||
calls from the client side to a server. However, as a security measure these requests may
|
отправлять запросы на сторону сервера в асинхронном режиме. Из соображений безопасности запрос можно отправить
|
||||||
only be made to the server from which the client page originated.
|
только на тот домен, с которого загружена текущая страница.
|
||||||
<!-- Stop Instructions -->
|
<!-- Stop Instructions -->
|
||||||
<p><b>General Goal(s):</b> </p>
|
<p><b>Основные цели и задачи:</b> </p>
|
||||||
This exercise demonstrates the Same Origin Policy Protection. XHR requests
|
Упражнение демонстрирует механизмы защиты обеспеченные политикой одного источника (Same Origin Policy)
|
||||||
can only be passed back to the originating server. Attempts to pass data to
|
Через компонент XHR можно отправлять запрос лишь на тот сервер, с которого была загружена текущая
|
||||||
a non-originating server will fail.";
|
страница. Попытки отправить запрос на другой сервер потерпят неудачу. ";
|
||||||
|
@ -1,24 +1,27 @@
|
|||||||
<div align="Center">
|
<div align="Center">
|
||||||
<p><b>Lesson Plan Title:</b> How to Perform Silent Transactions Attacks. </p>
|
<p><b>Название урока:</b> Атаки связанные со скрытыми операциями. </p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<p><b>Concept / Topic To Teach:</b> </p>
|
<p><b>Тема для изучения:</b> </p>
|
||||||
This lesson teaches how to perform silent transactions attacks.
|
На данном уроке вы поймёте как осуществляются атаки связанные со скрытыми операциями.
|
||||||
<br>
|
<br>
|
||||||
<div align="Left">
|
<div align="Left">
|
||||||
<p>
|
<p>
|
||||||
<b>How the attacks works:</b>
|
<b>Как работают атаки такого рода:</b>
|
||||||
</p>
|
</p>
|
||||||
Any system that silently processes transactions using a single submission is dangerous to the client.
|
Некоторые приложения производят манипуляции с чувствительными пользовательскими данными (например с деньгами)
|
||||||
For example, if a normal web application allows a simple URL submission, a preset session attack will
|
в скрытом виде если получат разрешение на это хотя бы один раз. Это таит множество опасностей.
|
||||||
allow the attacker to complete a transaction without the user’s authorization.
|
Например, в простом веб-приложении для того чтоб от имени клиента обратиться к любому URL необходимо
|
||||||
In Ajax, it gets worse: the transaction is silent; it happens with no user feedback on the page,
|
получить его идентификатор сессии (или другие данные, которые обеспечат необходимую идентификацию).
|
||||||
so an injected attack script may be able to steal money from the client without authorization.<br>
|
В случае с AJAX всё намного проще: обращение к серверу может происходить в скрытом режиме без оповещения об этом пользователя.
|
||||||
|
Следовательно, внедрённый каким-либо образом в такую страницу вредоносный скрипт может осуществлять важные
|
||||||
|
операции совершенно незаметно для клиента. Например переводить его деньги со счёта на счёт.<br>
|
||||||
</div>
|
</div>
|
||||||
<p><b>General Goal(s):</b> </p>
|
<p><b>Основные цели и задачи:</b> </p>
|
||||||
<!-- Start Instructions -->
|
<!-- Start Instructions -->
|
||||||
* This is a sample internet banking application - money transfer page.<br>
|
* Это простейшее приложение интернет-банкинга - страница перевода денег.<br>
|
||||||
* It shows below your balance, the account you are transferring to and amount you will transfer.<br>
|
* Здесь отображается сумма находящаяся на балансе, поле для ввода аккаунта, которому деньги будут переведены, и поле
|
||||||
* The application uses AJAX to submit the transaction after doing some basic client side validations.<br>
|
для суммы перевода.<br>
|
||||||
* Your goal is to try to bypass the user's authorization and silently execute the transaction.<br>
|
* Приложение использует AJAX для отправки транзакции после проведения элементарной проверки данных на клиентской стороне.<br>
|
||||||
|
* Ваша цель - попробовать осуществить от имени пользователя денежный перевод в скрытом виде.<br>
|
||||||
<!-- Stop Instructions -->
|
<!-- Stop Instructions -->
|
||||||
|
@ -1,19 +1,22 @@
|
|||||||
<div align="Center">
|
<div align="Center">
|
||||||
<p><b>Lesson Plan Title:</b> How to Perform XML Injection Attacks. </p>
|
<p><b>Название урока:</b> Как выполняются атаки класса 'XML-инъекция'. </p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<p><b>Concept / Topic To Teach:</b> </p>
|
<p><b>Тема для изучения:</b> </p>
|
||||||
This lesson teaches how to perform XML Injection attacks.
|
На данном уроке вы научитесь осуществлять атаки класса 'XML-инъекция'
|
||||||
<br>
|
<br>
|
||||||
<div align="Left">
|
<div align="Left">
|
||||||
<p>
|
<p>
|
||||||
<b>How the attacks works:</b>
|
<b>Как работает данный вид атак:</b>
|
||||||
</p>
|
</p>
|
||||||
AJAX applications use XML to exchange information with the server. This XML can be easily intercepted and altered by a malicious attacker.
|
AJAX-приложения используют XML для передачи данных на сервер. Ушедший XML может быть легко перехвачен
|
||||||
|
и изменён злоумышленником.
|
||||||
</div>
|
</div>
|
||||||
<p><b>General Goal(s):</b> </p>
|
<p><b>Основные цели:</b> </p>
|
||||||
<!-- Start Instructions -->
|
<!-- Start Instructions -->
|
||||||
WebGoat-Miles Reward Miles shows all the rewards available. Once you've entered your account ID, the lesson will show you your balance and the products you can afford. Your goal is to try to add more rewards to your allowed set of rewards. Your account ID is 836239.
|
Вы видите список призов, которые можно получить по программе 'WebGoat-Miles Reward Miles'.
|
||||||
|
Когда вы введёте ID своего аккаунта приложение отобразит вам ваш баланс и список призов, которые
|
||||||
|
вы можете заказать. Цель - заказать призы на которые у вас не хватает очков.
|
||||||
|
ID вашего аккаунта 836239.
|
||||||
<!-- Stop Instructions -->
|
<!-- Stop Instructions -->
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user