HTTP.sys遠程代碼執(zhí)行
測試類型:基礎(chǔ)結(jié)構(gòu)測試
威脅分類:操作系統(tǒng)命令
原因:未安裝第三方產(chǎn)品的最新補丁或最新修訂程序
安全性風險:可能會在Web服務(wù)器上運行遠程命令。這通常意味著完全破壞服務(wù)器及其內(nèi)容
技術(shù)描述:通過IIS6引入的HTTP協(xié)議堆棧(HTTP.sys)錯誤地解析了特制的HTTP請求。因此,遠程攻擊者可能執(zhí)行拒絕服務(wù)供給,并可在系統(tǒng)帳戶的環(huán)境中執(zhí)行任意代碼。該漏洞會影響Windows7、WindowsServer2008R2、Windows8、WindowsServer2012、Windows8.1和WindowsServer2012R2上安裝的IIS。Microsoft發(fā)布了通過修改WindowsHTTP堆棧處理請求的方式來解決漏洞的更新。
利用的樣本:
GET/HTTP/1.1
Host:[SERVER]
Range:bytes=0-18446744073709551615
SQL盲注
測試類型:應(yīng)用程序級別測試
威脅分類:SQL注入
原因:未對用戶輸入正確執(zhí)行危險字符清理
安全性風險:可能會查看、修改或刪除數(shù)據(jù)庫條目和表
技術(shù)描述:該軟件使用受外部影響的輸入來構(gòu)造SQL命令的全部或一部分,但是它未能對可能在SQL命令發(fā)送到數(shù)據(jù)庫時修改該命令的元素進行無害化處理。如果在用戶可控制的輸入中沒有對SQL語法充分地除去或引用,那么生成的SQL查詢可能會導致將這些輸入解釋為SQL而不是普通用戶數(shù)據(jù)。這可用于修改查詢邏輯以繞過安全性檢查,或者插入其他用于修改后端數(shù)據(jù)庫的語句,可能包括執(zhí)行系統(tǒng)命令。
例如,假設(shè)有一個帶有登錄表單的HTML頁面,該頁面最終使用用戶輸入對數(shù)據(jù)庫運行以下SQL查詢:
SELECT*FROMaccountsWHEREusername='$user'ANDpassword='$pass'
兩個變量($user和$pass)包含了用戶在登錄表單中輸入的用戶憑證。如果用戶輸入“jsmith”作為用戶名,并輸入“Demo1234”作為密碼,那么SQL查詢將如下所示:
SELECT*FROMaccountsWHEREusername='jsmith'ANDpassword='Demo1234'
但如果用戶輸入“'”(單撇號)作為用戶名,輸入“'”(單撇號)作為密碼,那么SQL查詢將如下所示:
SELECT*FROMaccountsWHEREusername='''ANDpassword='''
當然,這是格式錯誤的SQL查詢,并將調(diào)用錯誤消息,而該錯誤消息可能會在HTTP響應(yīng)中返回。通過此類錯誤,攻擊者會知道SQL注入已成功,這樣攻擊者就會嘗試進一步的攻擊媒介。SQL盲注類似于SQL注入。不同之處在于,要利用該攻擊,攻擊者無需尋找響應(yīng)中的SQL錯誤。因此,AppScan用于識別該攻擊的方法也不同。AppScan會查找易受SQL注入(通過多個請求來操縱應(yīng)用程序的邏輯,而不是嘗試調(diào)用SQL錯誤)影響的腳本。
該技巧需要發(fā)送特定請求,其中易受攻擊的參數(shù)(嵌入在SQL查詢中的參數(shù))進行了相應(yīng)修改,以便響應(yīng)中會指示是否在SQL查詢上下文中使用數(shù)據(jù)。該修改涉及將AND布爾表達式與原始字符串一起使用,使其一時求值為True,一時求值為False。在一種情況下,凈結(jié)果應(yīng)該與原始結(jié)果相同(登錄成功),而在另一種情況下,結(jié)果應(yīng)該完全不同(登錄失?。?。在某些少見的情況下,求值為True的OR表達式也可能很有用。如果原始數(shù)據(jù)是數(shù)字,可以使用更簡單的花招。假設(shè)原始數(shù)據(jù)為123。此數(shù)據(jù)可以在一個請求中替換為0+123,而在另一個請求中替換為456+123。第一個請求的結(jié)果應(yīng)該與原始結(jié)果相同,第二個請求的結(jié)果應(yīng)該不同(因為得出的數(shù)字是579)。在某些情況中,我們?nèi)孕枰厦嫠f明的攻擊版本(使用AND和OR),但并不轉(zhuǎn)義字符串上下文。
SQL盲注背后的概念是,即使不直接從數(shù)據(jù)庫接收數(shù)據(jù)(以錯誤消息或泄漏的信息的形式),也可能從數(shù)據(jù)庫中抽取數(shù)據(jù)(每次一個比特),或以惡意方式修改查詢。其原理在于,應(yīng)用程序的行為(返回與原始響應(yīng)相同或不同的響應(yīng))可以提供有關(guān)所求值的(已修改)查詢的單比特信息,也就是說,攻擊者有可能設(shè)計出一個SQL布爾表達式,其求值(單比特)通過應(yīng)用程序行為(與原始行為相同/不同)來造成破壞。
查詢中的密碼參數(shù)
測試類型:應(yīng)用程序級別測試
威脅分類:信息泄露
原因:查詢字符串中傳遞了敏感輸入字段(例如用戶名、密碼和信用卡號)
安全性風險:可能會竊取查詢字符串中發(fā)送的敏感數(shù)據(jù),例如用戶名和密碼
技術(shù)描述:在應(yīng)用程序測試過程中,檢測到查詢字符串中接收到密碼參數(shù)。由于登錄過程所用的部分輸入字段(例如:用戶名、密碼、電子郵件地址、社會保險號碼,等等)是個人敏感信息,建議將其放在請求的主體部分或加密連接(如SSL)中來發(fā)送到服務(wù)器。任何通過查詢字符串傳給服務(wù)器的信息都可能被竊,稍后可用來電子欺騙身份或偽裝用戶。此外,若干隱私權(quán)法規(guī)指出,用戶憑證之類的敏感信息一律以加密方式傳給網(wǎng)站。
跨站點腳本編制
測試類型:應(yīng)用程序級別測試
威脅分類:跨站點腳本編制
原因:未對用戶輸入正確執(zhí)行危險字符清理
安全性風險:可能會竊取或操縱客戶會話和cookie,它們可能用于模仿合法用戶,從而使黑客能夠以該用戶身份查看或變更用戶記錄以及執(zhí)行事務(wù)
技術(shù)描述:AppScan檢測到應(yīng)用程序未對用戶可控制的輸入正確進行無害化處理,就將其放置到充當Web頁面的輸出中。這可被跨站點腳本編制攻擊利用。
在以下情況下會發(fā)生跨站點腳本編制(XSS)脆弱性:
[1]不可信數(shù)據(jù)進入Web應(yīng)用程序,通常來自Web請求。
[2]Web應(yīng)用程序動態(tài)生成了包含此不可信數(shù)據(jù)的Web頁面。
[3]頁面生成期間,應(yīng)用程序不會禁止數(shù)據(jù)包含可由Web瀏覽器執(zhí)行的內(nèi)容,例如JavaScript、HTML標記、HTML屬性、鼠標事件、Flash和ActiveX。
[4]受害者通過瀏覽器訪問生成的Web頁面,該頁面包含已使用不可信數(shù)據(jù)注入的惡意腳本。
[5]由于腳本來自Web服務(wù)器發(fā)送的Web頁面,因此受害者的Web瀏覽器在Web服務(wù)器的域的上下文中執(zhí)行惡意腳本。
[6]這實際違反了Web瀏覽器的同源策略的意圖,該策略聲明一個域中的腳本不應(yīng)該能夠訪問其他域中的資源或運行其他域中的代碼。
一旦注入惡意腳本后,攻擊者就能夠執(zhí)行各種惡意活動。攻擊者可能將私有信息(例如可能包含會話信息的cookie)從受害者的機器傳輸給攻擊者。攻擊者可能以受害者的身份將惡意請求發(fā)送到Web站點,如果受害者具有管理該站點的管理員特權(quán),這可能對站點尤其危險。
網(wǎng)絡(luò)釣魚攻擊可用于模仿可信站點,并誘導受害者輸入密碼,從而使攻擊者能夠危及受害者在該Web站點上的帳戶。最后,腳本可利用Web瀏覽器本身中的脆弱性,可能是接管受害者的機器(有時稱為“路過式入侵”)。
主要有三種類型的XSS:
類型1:反射的XSS(也稱為“非持久性”)
服務(wù)器直接從HTTP請求中讀取數(shù)據(jù),并將其反射回HTTP響應(yīng)。在發(fā)生反射的XSS利用情況時,攻擊者會導致受害者向易受攻擊的Web應(yīng)用程序提供危險內(nèi)容,然后該內(nèi)容會反射回受害者并由Web瀏覽器執(zhí)行。傳遞惡意內(nèi)容的最常用機制是將其作為參數(shù)包含在公共發(fā)布或通過電子郵件直接發(fā)送給受害者的URL中。以此方式構(gòu)造的URL構(gòu)成了許多網(wǎng)絡(luò)釣魚方案的核心,攻擊者借此騙取受害者的信任,使其訪問指向易受攻擊的站點的URL。在站點將攻擊者的內(nèi)容反射回受害者之后,受害者的瀏覽器將執(zhí)行該內(nèi)容。
類型2:存儲的XSS(也稱為“持久性”)
應(yīng)用程序在數(shù)據(jù)庫、消息論壇、訪問者日志或其他可信數(shù)據(jù)存儲器中存儲危險數(shù)據(jù)。在以后某個時間,危險數(shù)據(jù)會讀回到應(yīng)用程序并包含在動態(tài)內(nèi)容中。從攻擊者的角度來看,注入惡意內(nèi)容的最佳位置是向許多用戶或特別感興趣的用戶顯示的區(qū)域。感興趣的用戶通常在應(yīng)用程序中具有較高的特權(quán),或者他們會與對攻擊者有價值的敏感數(shù)據(jù)進行交互。如果其中某個用戶執(zhí)行惡意內(nèi)容,那么攻擊者就有可能能夠以該用戶的身份執(zhí)行特權(quán)操作,或者獲取對屬于該用戶的敏感數(shù)
據(jù)的訪問權(quán)。例如,攻擊者可能在日志消息中注入XSS,而管理員查看日志時可能不會正確處理該消息。
類型0:基于DOM的XSS
在基于DOM的XSS中,客戶機執(zhí)行將XSS注入頁面的操作;在其他類型中,注入操作由服務(wù)器執(zhí)行?;贒OM的XSS中通常涉及發(fā)送到客戶機的由服務(wù)器控制的可信腳本,例如,在用戶提交表單之前對表單執(zhí)行健全性檢查的Javascript。如果服務(wù)器提供的腳本處理用戶提供的數(shù)據(jù),然后將數(shù)據(jù)注入回Web頁面(例如通過動態(tài)HTML),那么基于DOM的XSS就有可能發(fā)生。以下示例顯示了在響應(yīng)中返回參數(shù)值的腳本。
參數(shù)值通過使用GET請求發(fā)送到腳本,然后在HTML中嵌入的響應(yīng)中返回。
[REQUEST]
GET/index.aspx?name=JSmithHTTP/1.1
[RESPONSE]
HTTP/1.1200OK
Server:SomeServer
Date:Sun,01Jan200200:31:19GMT
Content-Type:text/html
Accept-Ranges:bytes
Content-Length:27
HelloJSmith
攻擊者可能會利用類似以下情況的攻擊:
[ATTACKREQUEST]
GET/index.aspx?name=>"'>alert('PWND')HTTP/1.1
2017/5/27390
TOC
[ATTACKRESPONSE]
HTTP/1.1200OK
Server:SomeServer
Date:Sun,01Jan200200:31:19GMT
Content-Type:text/html
Accept-Ranges:bytes
Content-Length:83
Hello>"'>alert('PWND')
在這種情況下,JavaScript代碼將由瀏覽器執(zhí)行(>"'>部分在此處并不相關(guān))。
Unix文件參數(shù)變更
測試類型:應(yīng)用程序級別測試
威脅分類:路徑遍歷
原因:未對用戶輸入正確執(zhí)行危險字符清理
未檢查用戶輸入中是否包含“..”(兩個點)字符串
安全性風險:可能會查看Web服務(wù)器(在Web服務(wù)器用戶的許可權(quán)限制下)上的任何文件(例如,數(shù)據(jù)庫、用戶信息或配置文件)的內(nèi)容
技術(shù)描述:軟件使用外部輸入來構(gòu)造旨在識別位于受限制父目錄中的文件或目錄的路徑名,但是該軟件沒有對路徑名中可導致路徑解析到受限制目錄之外的位置的元素進行無害化處理。許多文件操作需要在受限制目錄中執(zhí)行。通過使用特殊元素(例如“..”和“/”分隔符),攻擊者就可能逃脫到受限制位置之外,從而訪問系統(tǒng)上其他位置的文件或目錄。其中一個最常用的特殊元素是“../”序列,在最現(xiàn)代的操作系統(tǒng)中,該序列解釋為當前位置的父目錄。這稱為相對路徑遍歷。路徑遍歷包括使用絕對路徑名,例如“/usr/local/bin”,這有可能用于訪問意外文件。這稱為絕對路徑遍歷。在許多編程語言中,通過注入空字節(jié)(0或NUL),攻擊者就能夠截斷生成的文件名以擴大攻擊的范圍。例如,軟件可向任何路徑名添加“.txt”,從而將攻擊者限制到文本文件,但空注入可有效除去此限制。
鏈接注入(便于跨站請求偽造)
測試類型:應(yīng)用程序級別測試
威脅分類:內(nèi)容電子欺騙
原因:未對用戶輸入正確執(zhí)行危險字符清理
安全性風險:可能會勸說初級用戶提供諸如用戶名、密碼、信用卡號、社會保險號等敏感信息
可能會竊取或操縱客戶會話和cookie,它們可能用于模仿合法用戶,從而使黑客能夠以該用戶身份查看或變更用戶記錄以及執(zhí)行事務(wù)
可能會在Web服務(wù)器上上載、修改或刪除Web頁面、腳本和文件
技術(shù)描述:該軟件使用受外部影響的輸入來構(gòu)造命令、數(shù)據(jù)結(jié)構(gòu)或記錄的全部或一部分,但未能對可能修改其解析或解釋方式的元素進行無害化處理。
“鏈接注入”是通過在某個站點中嵌入外部站點的URL,或者在易受攻擊的站點中嵌入腳本的URL,從而修改該站點的內(nèi)容。在易受攻擊的站點中嵌入URL后,攻擊者能夠?qū)⑵渥鳛榘l(fā)起針對其他站點(以及針對這個易受攻擊的站點本身)的攻擊的平臺。
其中一些可能的攻擊需要用戶在攻擊期間登錄站點。通過從易受攻擊的站點本身發(fā)起這些攻擊,攻擊者成功的可能性更高,因為用戶更傾向于登錄。
“鏈接注入”脆弱性是未對用戶輸入進行充分清理所導致的結(jié)果,該輸入以后會在站點響應(yīng)中返回給用戶。這樣一來,攻擊者能夠?qū)⑽kU字符注入響應(yīng)中,從而有可能嵌入URL,以及做出其他可能的內(nèi)容修改。
以下是“鏈接注入”的示例(我們假設(shè)站點“www.vulnerable.com”有一個名為“name”的參數(shù),用于問候用戶)。
下列請求:HTTP://www.vulnerable.com/greet.asp?name=JohnSmith
會生成下列響應(yīng):
Hello,JohnSmith.
然而,惡意的用戶可以發(fā)送下列請求:
HTTP://www.vulnerable.com/greet.asp?name=
這會返回下列響應(yīng):
Hello,.
如以上示例所示,攻擊者有可能導致用戶瀏覽器向攻擊者企圖攻擊的幾乎任何站點發(fā)出自動請求。因此,“鏈接注入”脆弱性可用于發(fā)起幾種類型的攻擊:
[-]跨站點請求偽造
[-]跨站點腳本編制
[-]網(wǎng)絡(luò)釣魚
通過框架釣魚
測試類型:應(yīng)用程序級別測試
威脅分類:內(nèi)容電子欺騙
原因:未對用戶輸入正確執(zhí)行危險字符清理
安全性風險:可能會勸說初級用戶提供諸如用戶名、密碼、信用卡號、社會保險號等敏感信息
技術(shù)描述:網(wǎng)絡(luò)釣魚是一種社會工程技巧,其中攻擊者偽裝成受害者可能會與其進行業(yè)務(wù)往來的合法實體,以便提示用戶透露某些機密信息(往往是認證憑證),而攻擊者以后可以利用這些信息。網(wǎng)絡(luò)釣魚在本質(zhì)上是一種信息收集形式,或者說是對信息的“漁獵”。
攻擊者有可能注入含有惡意內(nèi)容的frame或iframe標記。如果用戶不夠謹慎,就有可能瀏覽該標記,卻意識不到自己會離開原始站點而進入惡意的站點。之后,攻擊者便可以誘導用戶再次登錄,然后獲取其登錄憑證。由于偽造的站點嵌入在原始站點中,這樣攻擊者的網(wǎng)絡(luò)釣魚企圖就披上了更容易讓人輕信的外衣。
Missing"Content-Security-Policy"header
測試類型:應(yīng)用程序級別測試
威脅分類:信息泄露
原因:Web應(yīng)用程序編程或配置不安全
安全性風險:可能會收集有關(guān)Web應(yīng)用程序的敏感信息,如用戶名、密碼、機器名和/或敏感文件位置
可能會勸說初級用戶提供諸如用戶名、密碼、信用卡號、社會保險號等敏感信息
Missing"X-Content-Type-Options"header
測試類型:應(yīng)用程序級別測試
威脅分類:信息泄露
原因:Web應(yīng)用程序編程或配置不安全
安全性風險:可能會收集有關(guān)Web應(yīng)用程序的敏感信息,如用戶名、密碼、機器名和/或敏感文件位置
可能會勸說初級用戶提供諸如用戶名、密碼、信用卡號、社會保險號等敏感信息
Missing"X-XSS-Protection"header
測試類型:應(yīng)用程序級別測試
威脅分類:信息泄露
原因:Web應(yīng)用程序編程或配置不安全
安全性風險:可能會收集有關(guān)Web應(yīng)用程序的敏感信息,如用戶名、密碼、機器名和/或敏感文件位置
可能會勸說初級用戶提供諸如用戶名、密碼、信用卡號、社會保險號等敏感信息