что значит строка "rewriterule .* - [f]" ?

EmptyR

Веб мастер
06.10.2010
164
0
#1
RewriteCond %{REQUEST_METHOD} ^TRACE
RewriteRule .* - [F]

Первая строчка понятна, "если метод запроса к сайту - TRACE, то...", а что насчёт второй строки? Вроде как всё вместе блокирует TRACE запросы, но хотелось бы узнать, что именно происходит.
 

vital

Больной Компом Детектед
29.01.2006
2 432
33
#2
Если трейс, то не откроется ни одна страница.
[F] от слова Forbidden. Вернет 403 ошибку. А зачем это?
 

EmptyR

Веб мастер
06.10.2010
164
0
#4
Может кто нибудь параллельно даст совет, как с помощью PHP выполнить TRACE запрос, и куда нибудь его записать?
 

vital

Больной Компом Детектед
29.01.2006
2 432
33
#5
Мм.. Ну как и любой другой хттп запрос - сокетом.
PHP:
<?php
$fp = fsockopen('localhost', 80); //Подсоединяемся с хосту "localhost" на 80-й порт
if($fp)
{
//Соединение создано, всё в порядке
fputs($fp, "TRACE / HTTP/1.1
Host: mail.ru
X-Header: test
");

echo '<pre>'; //Что бы нам было лучше видно заголовки, которые отдаст сервер
while(!feof($fp)) echo fgets($fp); //Выводим ответ сервера
echo '</pre>';

fclose($fp); //Закрываем сокет
}
?>
 

EmptyR

Веб мастер
06.10.2010
164
0
#6
Что то я совсем уже плох стал. Думал, что сокетами не получится, ибо TRACE не стандартная команда.
Спасибо vital ещё раз, ты у меня прямо сегодня ангел спаситель, получай повышение:ya_lamo:
 

vital

Больной Компом Детектед
29.01.2006
2 432
33
#7
Команда стандартная, просто запрещенная многими серверами=)
А отправляется она так же как и любая другая.
 

EmptyR

Веб мастер
06.10.2010
164
0
#9
М... Не получается у меня выудить с сервера то, что он по идее должен мне дать.
С помощью Acunetix Web Vulnerability Scanner выяснил, что сайт eniology.org может поддерживать TRACE запросы. Значит, если так, в ответе сервера должны выводиться куки.. Но что то они вообще не выводятся...
Вот мой код:
PHP:
<?php
$fp = fsockopen("eniology.org", 80);
if ($fp) {
$out = "TRACE / HTTP/1.1\r\n";
$out .= "Host: eniology.org\r\n";
$out .= "Connection: Close\r\n\r\n";
fwrite($fp, $out);
while (!feof($fp)) {
echo "<br>".fgets($fp);
}
fclose($fp);
}
?>
Что не так? Вроде какие то заголовки получаю, но не куки.
Два варианта, либо я не прав, либо программа нагло врёт.
 

vital

Больной Компом Детектед
29.01.2006
2 432
33
#10
Покажи вывод. И с чего ты решил, что вот прямо так должны?) А что если они вообще там не ставятся, или на них стоит httponly?)
 

EmptyR

Веб мастер
06.10.2010
164
0
#11
Код:
HTTP/1.1 200 OK
Server: nginx/0.4.13
Date: Mon, 10 Jan 2011 20:50:27 GMT
Content-Type: message/http
Transfer-Encoding: chunked
Connection: close

TRACE / HTTP/1.0
X-Real-IP: 217.107.34.41
X-Forwarded-for: 217.107.34.41
Host: eniology.org
Connection: close
Добавлено: М... Действительно, httpOnly стоит. Значит можно сказать, что TRACE метод поддерживается, но не возможно с его помощью получить куки. Но на том сайте есть одна XSS, которая и без TRACE может спалить все куки. :ya_lamo:
 

vital

Больной Компом Детектед
29.01.2006
2 432
33
#12
покажи вообще, что ты читаешь, по чему учишься?
 

EmptyR

Веб мастер
06.10.2010
164
0
#13
Смотри, вот что мне выдаёт сканер:

Я вижу, что есть такая уязвимость, пытаюсь её реализовать самостоятельно. Но как то не получается, хотя программа утверждает, что уязвимость есть.
 

vital

Больной Компом Детектед
29.01.2006
2 432
33
#14
Ну посмотри заголовки, которые посылает прога, и какие ты. Хз, если честно
 

EmptyR

Веб мастер
06.10.2010
164
0
#15
Ну посмотри заголовки, которые посылает прога, и какие ты.
Хм... Есть оочень интересный момент. Дело в том, что прога позволяет показывать заголовки, которые были отданы серверу и получены. Они выглядят так:
Код:
[b]Request[/b]
TRACE /BVrMG5UZuO HTTP/1.1
Host: eniology.org
Connection: Keep-alive
Accept-Encoding: gzip,deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0)

[b]Response[/b]
HTTP/1.1 200 OK
Server: nginx/0.4.13
Date: Mon, 10 Jan 2011 09:17:38 GMT
Content-Type: message/http
Connection: keep-alive
Content-Length: 220
Как видно, в заголовках нету куки.
 

EmptyR

Веб мастер
06.10.2010
164
0
#18
Пробовал через другие программы делать запросы, та же история... Кажется, программу попросту глюкнуло, что она решила, что можно провести TRACE запрос удачно.