2010-04-06 20 views
4

我正在嘗試編寫一個程序,驗證從機器發出的所有cookies實際上是否屬於它們來自的域。這是檢測基於cookie的惡意攻擊(如XSS)的更大安全項目的一部分。這個項目的主要障礙實際上是檢測即將發生的cookie。有人能指出我正確的方向來監控HTTP信息流量的cookie信息嗎?有關該項目的其他信息:這是一個用C語言和大量腳本語言編寫的Windows應用程序。非常感謝幫忙。如何監控cookie是否發送至域名以外的域?

+0

我的應用程序本身不發送也不接收cookie。我的程序只是在後臺運行,並驗證它所運行的計算機上發送的所有cookies都會轉到它們來自的域。理想情況下,無論客戶端可能使用哪種瀏覽器,此應用程序都需要工作。因此,我認爲它需要嗅探來自我電腦的任何和所有HTTP流量的cookie信息。然後,一旦找到cookie信息,請驗證它是否與它來自同一個域。因此,我的問題是:如何監控任何和所有cookie的傳出http流量? – Bsaltafo 2010-04-06 18:46:35

+2

您提出的安全系統是不可能的。你不能以這種方式控制客戶的行爲。此外,XSS有效載荷可以在傳輸時對cookie進行編碼,因此即使您可以嗅探客戶端的流量,您也永遠無法找到您正在查找的會話ID。 – rook 2010-04-06 19:12:56

+1

+1修補您的XSS。它更容易。 – 2010-04-06 19:15:37

回答

0

您無法在傳出的請求中嗅探cookie。假設你爲正常的會話id格式獲得正確的正則表達式,它仍然不能解決任何問題。攻擊者只會闖入幾個請求並逃避你的過濾器。或者他可能會以某種方式加密它。

如果它是一個具有XSS漏洞的電子郵件/論壇網站,攻擊者可以將cookie發佈到同一個公共網站,然後閱讀會話標識符。你的過濾器並不聰明,因爲即使它在請求中檢測到一個cookie,它也會被髮送到同一個網站..所以你不能觸發異常。

有無數的方法來規避你的過濾器。我不認爲它是一個可行的項目。

1

您可以使用Firefox加載項來閱讀瀏覽器正在使用的所有Cookie,瀏覽器會知道它擁有哪些Cookie以及擁有它們的域。然後,您可以修改Tamper-Data來嗅探所有傳出的http請求並查找cookie值,進一步您可以放棄請求或在傳輸之前對其進行修改。

這將從來沒有停止攻擊者。攻擊者在傳輸之前對Cookie進行混淆/編碼/加密是微不足道的。

HttpOnlyCookies是一個更好的(但不完整)解決這個問題。如果設置了這個頭部元素,並且瀏覽器支持它,那麼JavaScript將無法訪問document.cookie。但是攻擊者可以使用XmlHttpRequest來僞造對系統的請求,從而在經過驗證的會話中「騎」。

你應該修補XSS,防範XSRF,使用https爲整個會話並啓用HttpOnlyCookies。我建議您閱讀以下文章:A3:「破壞的身份驗證和會話管理」The Owasp Top 10 for 2010.

0

您可以通過讓代理服務器運行流量並記錄所有內容,來瀏覽瀏覽器發送的非SSL內容。如果您願意忍受「不安全的證書」警告,您可以讓代理攔截SSL。另一方面,如果說域名服務器在你附近遭到攻擊,誰知道你的瀏覽器真的在哪裏發送東西。

我同意其他人暗示這樣的竊聽不一定會證明什麼。此外,一個任性的應用程序可能會傳輸一些內容,但由於混淆,您會錯過它。