習CSS注入的目的是學習計算機知識,千萬不要做違反法律的事情,不然等待你的是法律的嚴懲。
CSS僅僅只是一種用來表示樣式的語言嗎?當然不是!CSS就已被安全研究人員運用于滲透測試當中。使用屬性選擇器和iFrame,并通過CSS注入來竊取敏感數據的方法。但由于該方法需要iFrame,而大多數主流站點都不允許該操作,因此這種攻擊方法并不實用。這里為大家詳細介紹一種不需要iframe且只需10秒,就能為獲得CSRF token的方法。
一、背景
CSS屬性選擇器開發者可以根據屬性標簽的值匹配子字符串來選擇元素。 這些屬性值選擇器可以做以下操作:
屬性選擇器能讓開發人員查詢單個屬性的頁面HTML標記,并且匹配它們的值。一個實際的用例是將以“https://example.com”開頭的所有href屬性變為某種特定的顏色。而在實際環境中,一些敏感信息會被存放在HTML標簽內。在大多數情況下CSRF token都是以這種方式被存儲的:即隱藏表單的屬性值中。
可以將CSS選擇器與表單中的屬性進行匹配,并根據表單是否與起始字符串匹配,加載一個外部資源,例如背景圖片,來嘗試猜測屬性的起始字母。通過這種方式,攻擊者可以進行逐字猜解并最終獲取到完整的敏感數值。想要解決這個問題受害者可以在其服務器實施內容安全策略(CSP),防止攻擊者從外部加載CSS代碼。
二、無 iFrames
要做到無iFrame,使用一種方法:創建一個彈窗,然后在設置計時器后更改彈出窗口的位置。使用這種方仍然可以加載受害者的CSS,不再依賴于受害者是否允許iFrame。因為最初的彈出是通過用戶事件觸發的,沒有被瀏覽器阻止。為了強制重載,在CSS注入間彈出一個虛擬窗口,如下:
但由于CSRF是針對客戶端的攻擊,因此如果能想出一種不需要服務器的方法,那么就可以節省大量的開銷和簡化操作。為了接收客戶端加載資源,可以利用Service Workers來攔截和讀取請求數據。Service Workers目前只適用于同源請求,在演示中受害者和攻擊者頁面已處于同一源上。
不久后,chrome很可能會合并這個實驗性的功能,允許Service Workers攔截跨域請求。這樣,就可以確保在客戶端的攻擊100%的執行,并強制用戶在10秒內點擊鏈接執行CSRF攻擊,演示如下:
三、Demo
如上所述,因為不想運行一個web服務器,所以使用service workers攔截和模擬服務器端組件。目前,該演示只適用于Chrome瀏覽器。首先創建了一個易受攻擊的目標,它存在一個基于DOM的CSS注入漏洞,并在頁面放置了一個敏感token。再對腳本標簽添加了一些保護措施,對左尖括號和右尖括號進行了編碼。
接下來將強制加載受害者的CSS,并且使用上述方法,可一次竊取(猜解)一個敏感字符。在接收端,定義一個攔截請求的service worker,并通過post-message將它們發送回域,然后將token存儲在本地存儲中以供后續使用。你也可以想象一個后端Web服務器,通過Web套接字或輪詢將CSRF token回發給攻擊者域。
如果你的瀏覽器支持的話,只需點擊打開頁面任意位置,你將看到CSRF token將逐一被猜解出來。
四、結束語
反射型CSS注入實際上比存儲型CSS注入更致命,因為存儲型CSS注入需要一個服務器在受害者渲染之前來更新CSS。一段時間以來,CSS注入在嚴重程度上來回變化。過去IE瀏覽器是允許用戶在CSS中執行Javascript代碼的。這個演示也從某種程度上表明了CSS注入,以及渲染不受信任的CSS仍會導致嚴重的安全問題。所以在設計軟件一定要測試,才能及時發現和修復各種漏洞。
eb前端教程
ASP是動態服務器頁面(ActiveServerPage)的英文縮寫。是微軟公司開發的代替CGI腳本程序的一種應用,它可以與數據庫和其它程序進行交互,是一種簡單、方便的編程工具。ASP的網頁文件的格式是.asp。現在常用于各種動態網站中。
我們在寫asp頁面的時候,常常使用include命令來包含公共文件。由于這個方法用起來非常方便,于是很多人在html頁面里嘗試使用include,但是發現根本就不起作用。這是因為,include是VBScript的命令,因此可以在asp頁面里使用。而HTML靜態頁面被調用的時候并不經過asp解釋器,而是直接發送到用戶瀏覽器,因此include命令就無效了。
對于信息量較大的網站,通常我們都選擇使用靜態頁面,否則數據庫查詢太頻繁,服務器壓力太大。但是過多的頁面里面,如果不能用調用的方式將公共內容包含進去,那么一旦修改起來就太可怕了。
include最大的價值就是因重用而易于維護,怎樣才能在靜態頁面里也實現include的功能呢?最簡單的辦法,就是做asp后綴的靜態頁面——內容是靜態的,頁面保存成asp后綴的,這種方式對搜索引擎沒有什么影響,實際運算量也并不大(因為雖然經過asp解釋器,但是實際上幾乎沒有運算量)。如果您一定要做HTM后綴的靜態頁,那么還有下面這些方法可供替代。
1.IFrame.這個可能是大家最熟悉的
<iframe.name="neepage"marginwidth="0"marginheight="0"src="import.htm"width="100%"height="30"></iframe>
加上它的一些屬性可以實現一些透明,無滾動條等具體的效果.大家可以html教程的相關介紹2.Frameset
這就是大家熟悉的框架了,沒什么好說的,看看html教程就行3.<objecttype="text/x-scriptlet"data="import.htm"width=100%height=30></object>4.Behavior的download方式
<ie:downloadid="oDownload"></ie:download>
<script>
functiononDownloadDone(downDate){
showImport.innerHTML=downDate
}
oDownload.startDownload('import.htm',onDownloadDone)
</script>5.<script>
就是把相關的html文件轉化為js文件,再在調用的時候用
<script.src="import.js"></script>
很多CMS系統的廣告模塊都是這么實現的。
這個方法有點要注意的假如你是用來包含象頭部、導航這些的話,建議不要用這個,不利于搜索引擎的搜集。主導航也盡量不要使用js,不利于搜索引擎對你的站點結構建立索引。
ASP是一種服務器端腳本編寫環境,可以用來創建和運行動態網頁或web應用程序。ASP網頁可以包含HTML標記、普通文本、腳本命令以及COM組件等。利用ASP可以向網頁中添加交互式內容(如在線表單),也可以創建使用HTML網頁作為用戶界面的web應用程序。
用JSP進行開發,需要具備相應的運行環境,即Web瀏覽器、Web服務器、JDK開發工具包、數據庫。
瀏覽器主要是作為用于客戶端用戶訪問Web應用的工具,與開發JSP應用的關系不大。
開發JSP對瀏覽器的要求并不是很高,任何支持HTML的瀏覽器都可以。
Web服務器是運行及發布Web應用的大容器,只有將開發的Web項目放置到該容器中,才能使網絡中的所有用戶通過瀏覽器進行訪問。
開發JSP應用所采用的的服務器主要是Servlet兼容的Web服務器,比較常用的有WebLogic、WebSphere、Tomcat。
WebLogic是BEA公司的產品,后被Oracle公司并購,它分為WebLogic Server、WebLogic Enterprise和WebLogic Portal系列,其中WebLogic Server的功能特別強大,它支持企業級的、多層次的和完全分布式的Web應用,并且服務器的配置簡單、界面友好。
IBM公司的WebSphere是一種功能完善、開放的Web應用程序服務器,它基于Java的應用環境,建立、部署和管理Web應用程序。相對于其他流行的Web服務器而言,應用的數量很少。
Tomcat服務器最為流行,它是Apache-Jarkarta開源項目中的一個子項目,是一個小型的、輕量級的、支持JSP和Servlet技術的Web服務器。但是Tomcat對靜態文件和高并發的處理能力比較弱。
JDK(Java Develop Kit,Java開發工具包)包括運行Java程序所必須得JRE環境及開發過程中常用的庫文件。
在使用JSP開發網站之前,首先必須安裝JDK。
任何項目的開發幾乎都需要使用數據庫,數據庫用來存儲項目中需要的信息。
根據項目的規模及業務特點采用合適的數據庫。
大型項目可采用Oracle數據庫。
中小型項目可采用MySQL數據庫。
五、JSP程序開發模式
1、單純的JSP頁面編程
通過應用JSP中的腳本標志,可直接在JSP頁面中實現各種功能。
但是這種方式將大部分的Java代碼與HTML代碼混淆在一起,會給程序的維護和調試帶來很多的困難。就好比將負責不同任務的所有員工都安排在一起工作,勢必混亂不堪。
2、JSP + JavaBean編程
該模式是JSP程序開發經典設計模式之一,適合小型或中型網站開發。
JavaBean是一個遵循了一定規則的Java類,在程序的開發中,將要進行的業務邏輯封裝到這個類中,在JSP頁面中通過動作標簽來調用這個類,從而執行這個業務邏輯。
此時的JSP除了負責部分流程的控制外,大部分用來進行頁面的顯示。JavaBean則負責業務邏輯的處理。
第一步:用戶通過客戶端瀏覽器請求服務器。
第二步:服務器接收用戶請求后調用JSP頁面;
第三步:在JSP頁面中調用JavaBean。
第四步:在JavaBean中連接及操作數據庫,或實現其他業務邏輯。
第五步:JavaBean將執行的結果返回JSP頁面。
第六步:服務器讀取JSP頁面中的內容,將JSP中的靜態內容和動態內容相結合。
最后服務器將最終的結果返回給客戶端瀏覽器進行顯示。
*請認真填寫需求信息,我們會在24小時內與您取得聯系。