昨晚,一位客戶叫得瘋狂,因爲Google已經緩存了私人員工信息的版本。除非您登錄,否則信息不可用。無害爬蟲如何繞過WebForms認證並劫持用戶的會話?
他們已經做了谷歌搜索自己的域名,例如:
,發現谷歌搜索已爬,和緩存,一些內部網頁。在頁面的緩存版本
尋找自己:
這是https://example.com/(F(NSvQJ0SS3gYRJB4UUcDa1z7JWp7Qy7Kb76XGu8riAA1idys-nfR1mid8Qw7sZH0DYcL64GGiB6FK_TLBy3yr0KnARauyjjDL3Wdf1QcS-ivVwWrq-htW_qIeViQlz6CHtm0faD8qVOmAzdArbgngDfMMSg_N4u45UysZxTnL3d6mCX7pe2Ezj0F21g4w9VP57ZlXQ_6Rf-HhK8kMBxEdtlrEm2gBwBhOCcf_f71GdkI1))/ViewTransaction.aspx?transactionNumber=12345谷歌的緩存。它是頁面的快照,因爲它出現在2013年9月15日00:07:22 GMT
我很困惑的長網址。而不是:
https://example.com/ViewTransaction.aspx?transactionNumber=12345
還有很長的字符串插入:
https://example.com/[...snip...]/ViewTransaction.aspx?transactionNumber=12345
我花了幾分鐘,要記住:這可能是ASP.net的「無Cookie會話的症狀 「。如果您的瀏覽器不支持Set-Cookie,則該網站將在URL中嵌入一個cookie。
除我們的網站沒有使用它。
即使我們的網站確實有cookie的會話自動檢測,和谷歌成功地哄着網絡服務器到在url交給它的會話,它是怎麼接管其他用戶的會話?
是,谷歌
一個
非惡意殭屍劫持會話數年
該網站已經通過抓取機器人。而過去的5月29日也不例外。
谷歌通常通過檢查robots.txt
文件(我們沒有一個)來開始爬取。但是,沒有人被允許在網站上準備好任何事情(包括robots.txt
)沒有先進行身份驗證,因此它失敗:
Time Uri Port User Name Status
======== ======================= ==== ================ ======
1:33:04 GET /robots.txt 80 302 ;not authenticated, see /Account/Login.aspx
1:33:04 GET /Account/Login.aspx 80 302 ;use https plesae
1:33:04 GET /Account/Login.aspx 443 200 ;go ahead, try to login
那段時間谷歌正在尋找一個robots.txt文件。它從來沒有一個。然後,它返回到嘗試抓取根:
Time Uri Port User Name Status
======== ======================= ==== ================ ======
1:33:04 GET/ 80 302 ;not authenticated, see /Account/Login.aspx
1:33:04 GET /Account/Login.aspx 80 302 ;use https plesae
1:33:04 GET /Account/Login.aspx 443 200 ;go ahead, try to login
而且在安全網站的robots.txt的另一種檢驗:
Time Uri Port User Name Status
======== ======================= ==== ================ ======
1:33:04 GET /robots.txt 443 302 ;not authenticated, see /Account/Login.aspx
1:33:04 GET /Account/Login.aspx 443 200 ;go ahead, try to login
然後在登錄頁面的樣式表:
Time Uri Port User Name Status
======== ======================= ==== ================ ======
1:33:04 GET /Styles/Site.css 443 200
這就是GoogleBot,msnbot和BingBot每次抓取的工作原理。機器人,登錄,安全,登錄。從來沒有得到任何地方,因爲它不能通過WebForms身份驗證。世界一切都很好。
直到有一天;無處不在
直到有一天,GoogleBot出現了,會話cookie 在手!
Time Uri Port User Name Status
======== ========================= ==== =================== ======
1:49:21 GET/ 443 [email protected] 200 ;they showed up logged in!
1:57:35 GET /ControlPanel.aspx 443 [email protected] 200 ;now they're crawling that user's stuff!
1:57:35 GET /Defautl.aspx 443 [email protected] 200 ;back to the homepage
2:07:21 GET /ViewTransaction.aspx 443 [email protected] 200 ;and here comes the private information
用戶,[email protected]
尚未登錄超過一天。 (我希望IIS能給兩位同時訪問者提供相同的會話標識符,並由應用程序回收分隔)。我們的網站(web.config
)未配置爲啓用無會話cookie。而服務器(machine.config
)未配置爲啓用無會話cookie。
所以:
- 怎麼谷歌得到阿霍德一個無會話cookie的呢?
- Google是如何獲得有效會話的cookie的?
- Google是如何獲得有效屬於其他用戶的無會話Cookie的預測?
就在最近的10月1日(4天前),因爲Googlebot是仍然顯示出來,手裏拿着餅乾,以該用戶登錄,爬行,高速緩存和出版,他們的一些私人資料。
Google
如何繞過一個非惡意網絡爬蟲WebForms身份驗證?
IIS7,Windows Server 2008 R2,單臺服務器。
理論
服務器未配置爲發出無Cookie會話。但是忽略這一事實,Google如何繞過認證?
- Googlebot已visting的網址,並試圖隨機用戶名和密碼(不太可能,日誌顯示沒有嘗試登陸)
- Googlebot會決定插入隨機Cookie會話爲URL字符串,它發生到現有用戶(不太可能)
- 用戶設法弄清楚如何使IIS的Web站點返回一個cookie的URL (不太可能)的會話匹配,然後粘貼該網址到另一個網站(不太可能),Google找到了無Cookie的網址並對其進行抓取
- 用戶正在通過移動代理(他們不是)運行。代理服務器不支持cookie,因此IIS會創建一個無Cookie會話。 (例如Opera Mobile)緩存服務器被破壞(不太可能)以及所有緩存的鏈接都發布在黑客論壇上。 GoogleBot抓取黑客論壇,並開始關注所有鏈接;包括我們的
[email protected]
無Cookie會話網址。 - 用戶有一個病毒,它設法哄騙任何IIS網絡服務器來回傳一個無cookie的url。那病毒然後報告給總部。這些網址被張貼到可公開訪問的資源上,即GoogleBot抓取。然後GoogleBot會在我們的服務器上顯示無Cookie的網址。
這些都不是真正可行的。
Google
如何繞過WebForms身份驗證並劫持用戶的現有會話?
你在問什麼?
我什至不知道如何一個ASP.net的網站,沒有配置爲發出無cookie的會話,可以發出無cookie會話。是否有可能將基於cookie的會話編號反向轉換爲 a 基於Cookie的會話編號?我可以引述web.config
和machine.config
相關<sessionState>
部分,並顯示沒有的
<sessionState cookieless="true">
如何在Web服務器決定的瀏覽器不支持cookie的存在?我嘗試在Chrome中阻止Cookie,並且我從未獲得過無cookie的會話標識符。我是否可以模擬不支持Cookie的瀏覽器,以驗證我的服務器是否不提供無Cookie會話?
服務器是否通過用戶代理字符串來決定無Cookie會話?如果是這樣,我可以用欺騙性UA設置Internet Explorer。
ASP.net中的會話標識是否完全依賴於cookie?任何人都可以使用cookie-url從任何IP訪問該會話?默認情況下,ASP.net不是也考慮到了嗎?
如果ASP.net 不與會話領帶的IP地址,那不是意味着會議不可能起源於在他們的家用電腦的員工?因爲當GoogleBot抓取工具試圖從Google IP使用它時,它會失敗?
有沒有任何實例(除了我鏈接的一個)的ASP.net提供無cookie會話,當它沒有配置?是否存在Microsoft Connect問題?
Web-Forms身份驗證是否已知存在問題,而不應該用於安全性?
獎金閱讀
編輯:
谷歌
即繞過的特權,因爲人們對智障頭褲機器人移除名稱;令人困惑的
Google
其他的抓取工具的名稱。我使用
Google
這個抓取工具的名稱來提醒我們,這是一個非惡意的抓取工具,它能夠抓取它進入另一個用戶的WebForm會話。這是爲了將其與惡意爬蟲進行對比,該惡意爬蟲試圖闖入另一個用戶的會話。沒有什麼比文學家更能引起人們的憤慨。
您遇到問題了。無論它是否是Google並不重要。您的網站顯然不安全。 與其向Google發佈投訴和(未經證實的)指責,爲什麼不告訴我們關於您的網站的一些信息,或許我們可以幫助您瞭解您做錯了什麼? –
順便說一句,什麼是「[email protected]」在您的列表中?請不要告訴我這是會話ID! –
看來,當您使用Chrome訪問網頁(或者其他瀏覽器添加了谷歌內容)時,您訪問的網址將傳遞給Google進行索引。我們與我們的公司服務器駐留在機密地址和端口上(當然,沒有到該服務器的外部鏈接)也是如此。儘管如此,你的問題在SO上是不合理的。 –