檢測攻擊類型說明和防護建議
本文介紹攻擊統(tǒng)計中涉及的攻擊類型以及相關(guān)防護建議。
攻擊類型 | 說明 | 防護建議 |
JNDI注入 | 當應(yīng)用進行JNDI查詢的時候,若查詢的URL可以由攻擊者控制,則攻擊者可以使服務(wù)器去查詢惡意的鏈接使得服務(wù)器加載一些惡意Class,實現(xiàn)任意代碼執(zhí)行。 |
|
JNI注入 | JNI注入是一種通用的RASP(Runtime Application Self-Protection)繞過手段。當攻擊者拿到代碼執(zhí)行權(quán)限后,可以通過Java Native函數(shù)去調(diào)用外部的惡意動態(tài)鏈接庫,從而繞過Java層的安全防護,并隱匿具體的惡意行為。 | 您的服務(wù)器可能存在代碼執(zhí)行漏洞,請檢查漏洞的位置并限制執(zhí)行代碼的功能。 |
JSTL任意文件包含 | JSP標準標簽庫(JSTL)是一個JSP標簽集合,它封裝了JSP應(yīng)用的通用核心功能。當用戶可控參數(shù)被直接拼接到JSTL標簽中而未對該參數(shù)進行任何限制的情況下,攻擊者可以構(gòu)造特殊的攻擊腳本造成任意文件讀取、SSRF的攻擊。 | 盡可能不要將用戶可控參數(shù)直接拼接到JSTL標簽上,如果必須這樣做,請對該參數(shù)的內(nèi)容進行嚴格的白名單控制。 |
SQL注入 | SQL注入手段通過把SQL命令插入到頁面請求或Web表單的查詢字符串中,以達到欺騙服務(wù)器執(zhí)行指定SQL語句的目的。它可以通過在Web表單中輸入SQL語句,得到存在安全漏洞的網(wǎng)站上的數(shù)據(jù)。 | SQL注入是由拼接SQL語句引起的。請盡可能使用預(yù)編譯來處理傳入的參數(shù),或通過白名單和黑名單來限制拼接參數(shù)。 |
XXE | 指XML外部實體注入漏洞(XML External Entity Injection)。當XML文件引用外部實體時,通過構(gòu)造惡意內(nèi)容,可以導(dǎo)致任意文件讀取、命令執(zhí)行和內(nèi)網(wǎng)攻擊等不良后果。 | 請檢查應(yīng)用程序在解析XML時是否需要加載外部實體。如果不需要,請在XML解析配置中禁用外部實體。 |
XSS | 跨站腳本攻擊是指惡意攻擊者往Web頁面里插入惡意Script代碼,當用戶瀏覽該頁之時,嵌入其中Web里面的Script代碼會被執(zhí)行,從而達到惡意攻擊用戶的目的。 | XSS漏洞本質(zhì)上是一種HTML注入,也就是將HTML代碼注入到網(wǎng)頁中。那么其防御的根本就是在將用戶提交的代碼顯示到頁面上時做好一系列的過濾與轉(zhuǎn)義。
|
表達式注入 | 表達式組件提供了十分豐富的功能,支持在運行時查詢和處理數(shù)據(jù)等,但很多表達式組件也提供了函數(shù)調(diào)用等權(quán)限較高的功能,一旦未對這些功能做限制,而攻擊者又能夠控制表達式執(zhí)行的內(nèi)容,那么攻擊者將很有可能通過表達式執(zhí)行任意代碼。 | 請對進入表達式的內(nèi)容進行嚴格限制,禁止大部分Java函數(shù)的調(diào)用。若是第三方組件漏洞導(dǎo)致,請及時升級組件版本。 |
惡意Attach | Attach API是Java提供的動態(tài)修改字節(jié)碼技術(shù),該功能可以實現(xiàn)動態(tài)修改運行時應(yīng)用的字節(jié)碼。很多攻擊者通過該手法進行Agent型內(nèi)存馬的注入,具有較高的欺騙性。 | 您的服務(wù)器可能存在代碼執(zhí)行漏洞。請檢查漏洞的位置并限制執(zhí)行代碼的功能。 |
惡意Beans綁定 | Java存在一些框架支持對應(yīng)用運行時Beans的參數(shù)綁定,一旦未對綁定Beans的類型進行限制,攻擊者就可以通過對一些敏感Beans值的修改,破壞應(yīng)用的運行,甚至造成執(zhí)行任意代碼。 | 請對可以綁定的Beans的類型進行限制,禁止對類似于Class、ClassLoader類型的Beans值進行修改。若是第三方組件漏洞導(dǎo)致,請及時升級組件版本。 |
惡意DNS查詢 | 惡意DNS查詢存在多種利用方式。攻擊者極有可能通過DNS協(xié)議來突破內(nèi)網(wǎng)網(wǎng)絡(luò)限制,從而將敏感信息帶出內(nèi)網(wǎng),也可能通過DNS協(xié)議去探測內(nèi)網(wǎng)系統(tǒng)是否存在SSRF、JNDI注入等漏洞。 | 惡意DNS查詢是由服務(wù)器向用戶控制的參數(shù)發(fā)送請求所引起的。請檢查參數(shù)并通過白名單進行限制。 |
惡意反射調(diào)用 | RASP自保護模塊,禁止攻擊者通過反射的方式去修改運行時RASP的相關(guān)數(shù)據(jù)。 | 您的服務(wù)器可能存在代碼執(zhí)行漏洞。請檢查漏洞的位置并限制執(zhí)行代碼的功能。 |
惡意類加載 | 現(xiàn)階段,很多0day、WebShell的利用均依賴于惡意類的加載,一旦惡意類加載成功,攻擊者便可以通過惡意類的初始化來取得代碼執(zhí)行權(quán)限,從而進行一系列的惡意操作。 |
|
惡意外連 | SSRF(Server-side request forgery)服務(wù)器端請求偽造漏洞指的是攻擊者通過構(gòu)造由服務(wù)端發(fā)起的請求,對網(wǎng)站內(nèi)部系統(tǒng)進行攻擊。 | SSRF是由服務(wù)器向用戶傳入的參數(shù)發(fā)送請求所引起的。請檢查參數(shù)并通過白名單進行限制。 |
惡意文件讀寫 | Java提供RandomAccessFile,用于文件讀寫操作。當使用該Class進行文件讀寫的時候,如果未對文件路徑、文件內(nèi)容進行限制,攻擊者可能讀取到系統(tǒng)敏感文件,也可能上傳木馬文件。 | 請檢查文件讀取和上傳是否正常。如果出現(xiàn)異常,請檢查函數(shù)代碼,并通過黑名單進行限制。 |
惡意文件上傳 | 對于網(wǎng)站提供的文件上傳功能,如果未對上傳文件的類型進行限制,攻擊者可能通過上傳木馬文件來獲取服務(wù)器的更大權(quán)限,從而造成嚴重危害。 | 請限制上傳文件的類型,禁止上傳具有執(zhí)行權(quán)限的文件,如JSP。 |
反序列化攻擊 | Java反序列是指把字符序列恢復(fù)為Java對象的過程,在對象生成過程中,若該對象包含一些危險度較高的代碼,則攻擊者可能通過控制生成對象的成員變量在對象進行反序列化的時候?qū)崿F(xiàn)一些惡意攻擊。 |
|
命令執(zhí)行 | 命令執(zhí)行漏洞是指服務(wù)器沒有對執(zhí)行的命令進行過濾,用戶可以隨意執(zhí)行系統(tǒng)命令。 | 通常遠程命令執(zhí)行是由Web Shell或服務(wù)器的危險代碼引起的。請檢查命令執(zhí)行的位置。如果是Web Shell,請及時刪除。如果是服務(wù)器的正常功能,則可以通過白名單限制執(zhí)行的命令。 |
目錄遍歷 | 網(wǎng)站自身的配置缺陷可能會使得網(wǎng)站目錄被任意瀏覽,導(dǎo)致隱私信息泄露。攻擊者可以利用該信息對網(wǎng)站進行攻擊。 | 請檢查目錄遍歷操作是否正常。如果異常,請檢查函數(shù)的代碼,并通過黑名單對相關(guān)命令(如“./”和“../”)進行限制。 |
內(nèi)存馬注入 | 內(nèi)存馬是一種新興的木馬技術(shù),攻擊者通過一些特殊的技術(shù)手段將木馬注入到內(nèi)存中,可以有效繞過WAF和主機防御的檢測。 | 您的服務(wù)器可能存在代碼執(zhí)行漏洞。請檢查漏洞的位置并限制執(zhí)行代碼的功能。 |
任意文件刪除 | 對于網(wǎng)站提供的文件刪除功能,如果是直接通過絕對路徑或目錄穿越符對文件進行讀取和下載,沒有相關(guān)文件路徑的限制,那么,攻擊者就可以利用這種方式獲取敏感信息,對服務(wù)器進行攻擊。 | 請檢查文件刪除操作是否正常。如果異常,請檢查函數(shù)的代碼,并使用黑名單對傳入?yún)?shù)(如“./”和“../”)進行限制。 |
任意文件讀取 | 對于網(wǎng)站提供的文件下載和讀取功能,如果是直接通過絕對路徑或目錄穿越符對文件進行讀取和下載,沒有相關(guān)文件路徑的限制,那么,攻擊者就可以利用這種方式獲取敏感信息,對服務(wù)器進行攻擊。 | 請檢查文件讀取操作是否正常。如果異常,請檢查函數(shù)的代碼,并使用黑名單對傳入?yún)?shù)(如“./”和“../”)進行限制。 |
數(shù)據(jù)庫弱口令 | 當數(shù)據(jù)庫使用強度較低的密碼時,攻擊者可能通過暴力破解獲取正確的數(shù)據(jù)庫密碼,從而達到竊取數(shù)據(jù)庫數(shù)據(jù)、獲取系統(tǒng)權(quán)限等目的。 | 請使用更復(fù)雜的密碼。 |
線程注入 | 線程注入是一種通用的RASP繞過手段。當攻擊者拿到代碼執(zhí)行權(quán)限后,可以通過新建線程的方式使RASP丟失掉運行環(huán)境的上下文,從而影響RASP的防御能力。 | 您的服務(wù)器可能存在代碼執(zhí)行漏洞。請檢查漏洞的位置并限制執(zhí)行代碼的功能。 |
危險協(xié)議使用 | 若服務(wù)端進行訪問的URL用戶端可控,而應(yīng)用本身又未對該URL的協(xié)議進行限制,那么攻擊者可能通過File、NetDoc等危險協(xié)議對服務(wù)器上的敏感文件進行讀取。 | 請對URL可以訪問的協(xié)議進行限制。 |
引擎注入 | Java提供較多的第三方引擎組件(如rhino、Nashorn等JS引擎,velocity、freemarker等模板引擎),這些引擎通常提供了函數(shù)調(diào)用等權(quán)限較高的功能,一旦對這些功能未做限制,而攻擊者又能夠控制引擎執(zhí)行的內(nèi)容,那么攻擊者將很有可能通過引擎執(zhí)行任意代碼。 | 請對進入引擎文件的內(nèi)容進行嚴格限制,禁止大部分Java函數(shù)的調(diào)用。若是第三方組件漏洞導(dǎo)致,請及時升級組件版本。 |