軟件測(cè)試 | web測(cè)試-偽造瀏覽器頭信息
問(wèn)題
出于安全目的,你的應(yīng)用可能依賴于瀏覽器頭信息。常見(jiàn)的這樣使用的頭信息包括Content-Length,Content-Type,Refere和U
User-Aget.本秘訣將測(cè)試你的應(yīng)用是否能夠正確地處理惡意頭信息。
解決方案
要提供偽造的頭信息,請(qǐng)瀏覽到剛好位于使用頭信息的頁(yè)面之前的頁(yè)面。對(duì)分析軟件包而言,每個(gè)頁(yè)面都可能搜集頭數(shù)據(jù)!對(duì)重定向頁(yè)面而言,瀏覽到剛好位于重定向頁(yè)面之前的頁(yè)面才有意義;否則你就會(huì)被重定向。
打開(kāi)TamperData,并通過(guò)“Start Tamper”按鈕開(kāi)啟Tamper模式。向服務(wù)器發(fā)起請(qǐng)求。通常我們是通過(guò)單擊鏈接來(lái)提交請(qǐng)求,不過(guò)在有些情況下你可能需要手動(dòng)編輯并手動(dòng)提交URL。
在TamperData左側(cè)的TamperData提示窗口中,單擊Tamper按鈕。你會(huì)看到列出的RequestHeades,而頭信息的取值則顯示在右側(cè)的文本框中。
在這里,你可以編輯任何已有的頭信息,比如User-Agent.另外,你還可以添加尚未設(shè)定的頭信息。例如,如果Referer頭信息沒(méi)有被自動(dòng)設(shè)定,而且因?yàn)槲覀儜岩蒖eferer頭信息會(huì)被分析軟件包獲得,所以我們可以將它作為新的頭信息添加進(jìn)去,以此作為一項(xiàng)測(cè)試。圖5-7顯示; 一個(gè)TamperData窗口,其中Referer頭信息被高亮顯示。這是一種很好的篡改Referer的方法。要添加尚未存在的頭信息,只需在頭信息中右擊并選擇它以完成添加。
添加新的頭信息之后,我們可以將其取值設(shè)定為任意字符串。通過(guò)將Referer頭信息設(shè)定為<script>alert("xss");<script>如果充分利用,可以將它發(fā)展為跨站式腳本。
即使在提交了這個(gè)惡意Referer頭信息之后,從服務(wù)器返回的頁(yè)面上沒(méi)有明顯。但是,現(xiàn)在服務(wù)器的日志中有一行包含該字符串的文本。根據(jù)服務(wù)器日志顯示方式的不同,特別是在通過(guò)定制軟件來(lái)執(zhí)行分析的情況喜愛(ài),這段字符串可能會(huì)直接輸出到管理員的網(wǎng)頁(yè)瀏覽器。如果你安裝了這樣的日志監(jiān)控或分析軟件,請(qǐng)加載它并分析最近的幾條Referer。無(wú)論如何,也要確保這段JavaScript注入不會(huì)被執(zhí)行并顯示一個(gè)小提示框。另外,你可以驗(yàn)證其特殊字符在存儲(chǔ)到日志或從日志中獲取時(shí)被轉(zhuǎn)義處理。這樣能確保其他惡意輸入都得到正確的處理。

討論
因?yàn)榛陬^心信息的工具并不總是這樣的明顯,所以首先要確定你的應(yīng)用中出于功能或分析的目的要用到頭信息的地方。雖然頭信息通常只限于服務(wù)器和瀏覽器之間的后臺(tái)通信,但攻擊者仍然能夠操縱他們來(lái)提交惡意輸入?;陬^信息的攻擊可能特別地迂回,因?yàn)樗鼈兛赡軙?huì)設(shè)置為利用管理員檢查和日志分析頁(yè)面。頭信息的常見(jiàn)用途包括:
引用頁(yè)跟蹤
頭信息可以選擇指定Referer,以表明連接到當(dāng)前頁(yè)面的前一頁(yè)面。Web站點(diǎn)管理員使用它們來(lái)了解哪些外部站點(diǎn)鏈接到你的Web應(yīng)用
點(diǎn)進(jìn)(click-through)分析
服務(wù)器日志將Referer頭信息制成表格,以報(bào)告用戶在進(jìn)入應(yīng)用之后,如何在其內(nèi)部導(dǎo)航。
受眾分析
有時(shí)會(huì)分析User-Agent頭信息,以確定用戶使用哪種瀏覽器,操作系統(tǒng),擴(kuò)展甚至是硬件類型。
如果你的應(yīng)用使用上述功能中的任何一種,請(qǐng)留意將被使用或分析的那個(gè)頭信息。如果你的應(yīng)用跟蹤Referer頭信息,就將它作為要調(diào)查的頭信息加以注意。如果你通過(guò)瀏覽器跟蹤你的受眾,那么你應(yīng)該更加關(guān)注User-Agent頭信息。就報(bào)告而言,要確定接收、存儲(chǔ)和分析頭信息的位置。
大多數(shù)網(wǎng)站包含一種分析Web流量的方法。雖然有許多這種用途的軟件包,比如Google Analytics或Omniture Web Analytics,但包含定制的Web流量報(bào)告的應(yīng)用卻不罕見(jiàn)。這寫(xiě)報(bào)告往往包含有關(guān)鏈接到你的應(yīng)用的頁(yè)面以及哪些用戶代理(瀏覽器和其他客戶端)發(fā)出頁(yè)面請(qǐng)求的詳細(xì)信息。在任何情況下,如果這些數(shù)據(jù)在進(jìn)行時(shí)未經(jīng)驗(yàn)證而且在現(xiàn)實(shí)給管理員之前未經(jīng)凈化,那么就存在潛在的漏洞??紤]到Web應(yīng)用設(shè)計(jì)中很少會(huì)考慮到頭信息,而管理員頁(yè)面很可能是定制的,因此這種“頭信息到管理頁(yè)面”的問(wèn)題很有可能存在于許多Web應(yīng)用中。
在有些情況下,Web服務(wù)器可能會(huì)完全拒絕任何帶有看似惡意的頭信息的請(qǐng)求。對(duì)這些篩選程序做實(shí)驗(yàn);有可能可以繞過(guò)它們。例如,如果篩選程序只允許有效的User-Agent取值,而有效User-Agent的定義是高度可變的。例5-4所示的User-Agenr并不對(duì)應(yīng)真實(shí)的瀏覽器。事實(shí)上,它包含了惡意攻擊字符串。不過(guò),它確實(shí)符合有效User-Agent并不對(duì)應(yīng)真實(shí)的瀏覽器。事實(shí)上,它包含了惡意攻擊字符串。不過(guò),它確實(shí)符合有效User-Agent標(biāo)識(shí)符的許多結(jié)構(gòu)約定。
例5-4:虛構(gòu)的包含惡意攻擊字符串的User-Agent