常規36個WEB滲透測試漏洞描述及修復方法--很詳細
(1)、Apache樣例文件泄漏
漏洞描述
apache一些樣例文件沒有刪除,可能存在cookie、session偽造,進行后臺登錄操作
修復建議
1、刪除樣例文件
2、對apache中web.xml進行相關設置
(2)、弱口令
漏洞描述
由于系統中存在有弱口令,導致攻擊者通過弱口令可輕松登錄系統中,從而進行下一步的攻擊,如上傳webshell,獲取敏感數據!
另外攻擊者利用弱口令登錄網站管理后臺,可任意增刪改等操作,從而造成負面影響!
修復建議
1、建議強制用戶首次登錄時修改默認口令,或是使用用戶自定義初始密碼的策略;
2、 完善密碼策略,信息安全最佳實踐的密碼策略為8位(包括)以上字符,包含數字、大小寫字母、特殊字符中的至少3種。
3、對管理后臺進行訪問控制,修改后臺弱口令,加強口令強度并定期修改。
4、增加驗證機制,防爆破機制,限制ip+cookie訪問次數。
(3)、明文傳輸登錄口令
漏洞描述
用戶登錄過程中使用明文傳輸用戶登錄信息,若用戶遭受中間人攻擊時,攻擊者可直接獲取該用戶登錄賬戶,從而進行進一步滲透。
修復建議
1、用戶登錄信息使用加密傳輸,如密碼在傳輸前使用安全的算法加密后傳輸,可采用的算法包括:不可逆hash算法加鹽(4位及以上隨機數,由服務器端產生);安全對稱加密算法,如AES(128、192、256位),且必須保證客戶端密鑰安全,不可被破解或讀出;非對稱加密算法,如RSA(不低于1024位)、SM2等。
2、使用https來保證傳輸的安全。
(4)、暴力破解
漏洞描述
由于沒有對登錄頁面進行相關的防暴力破解機制,如無驗證碼、有驗證碼但驗證碼未在服務器端校驗以及無登錄錯誤次數限制等,導致攻擊者可通過暴力破解獲取用戶登錄賬戶及口令,從而獲取網站登錄訪問權限!
修復建議
1、添加驗證碼機制,加入圖片(驗證碼動態生成且滿足隨機性)或者短信驗證碼(驗證碼具備超時時限一般為1分鐘,且在該時限內錯誤次數超過3次則進行鎖定1分鐘后方能重新獲取驗證碼,超時后驗證碼自動失效)!
2、驗證碼必須在服務器端進行校驗,客戶端的一切校驗都是不安全的!
(5)、SQL注入漏洞
漏洞描述
Web程序代碼中對于用戶提交的參數未做過濾就直接放到SQL語句中執行,導致參數中的特殊字符打破了SQL語句原有邏輯,黑客可以利用該漏洞執行任意SQL語句,如查詢數據、下載數據、寫入webshell、執行系統命令以及繞過登錄限制等。
修復建議
代碼層最佳防御sql漏洞方案:采用sql語句預編譯和綁定變量,是防御sql注入的最佳方法。
1)所有的查詢語句都使用數據庫提供的參數化查詢接口,參數化的語句使用參數而不是將用戶輸入變量嵌入到SQL語句中。當前幾乎所有的數據庫系統都提供了參數化SQL語句執行接口,使用此接口可以非常有效的防止SQL注入攻擊。
2)對進入數據庫的特殊字符(’”<>&*;等)進行轉義處理,或編碼轉換。
3)確認每種數據的類型,比如數字型的數據就必須是數字,數據庫中的存儲字段必須對應為int型。
4)數據長度應該嚴格規定,能在一定程度上防止比較長的SQL注入語句無法正確執行。
5)網站每個數據層的編碼統一,建議全部使用UTF-8編碼,上下層編碼不一致有可能導致一些過濾模型被繞過。
6)嚴格限制網站用戶的數據庫的操作權限,給此用戶提供僅僅能夠滿足其工作的權限,從而最大限度的減少注入攻擊對數據庫的危害。
7)避免網站顯示SQL錯誤信息,比如類型錯誤、字段不匹配等,防止攻擊者利用這些錯誤信息進行一些判斷。
(6)、跨站腳本攻擊(xss)漏洞
漏洞描述
1)、Web程序代碼中把用戶提交的參數未做過濾或過了不嚴就直接輸出到頁面,參數中的特殊字符打破了HTML頁面的原有邏輯,黑客可以利用該漏洞執行惡意HTML/JS代碼、構造蠕蟲傳播、篡改頁面實施釣魚攻擊、誘以及導用戶再次登錄,然后獲取其登錄憑證等。
2)、XSS攻擊對Web服務器本身雖無直接危害,但是它借助網站進行傳播,對網站用戶進行攻擊,竊取網站用戶賬號信息等,從而也會對網站產生較嚴重的危害。XSS攻擊可導致以下危害:
3)、釣魚欺騙:最典型的就是利用目標網站的反射型跨站腳本漏洞將目標網站重定向到釣魚網站,或者通過注入釣魚JavaScript腳本以監控目標網站的表單輸入,甚至攻擊者基于DHTML技術發起更高級的釣魚攻擊。
4)、網站掛馬:跨站時,攻擊者利用Iframe標簽嵌入隱藏的惡意網站,將被攻擊者定向到惡意網站上、或彈出惡意網站窗口等方式,進行掛馬攻擊。
5)、身份盜用:Cookie是用戶對于特定網站的身份驗證標志,XSS攻擊可以盜取用戶的cookie,從而利用該cookie盜取用戶對該網站的操作權限。如果一個網站管理員用戶的cookie被竊取,將會對網站引發巨大的危害。
6)、盜取網站用戶信息:當竊取到用戶cookie從而獲取到用戶身份時,攻擊者可以盜取到用戶對網站的操作權限,從而查看用戶隱私信息。
7)、垃圾信息發送:在社交網站社區中,利用XSS漏洞借用被攻擊者的身份發送大量的垃圾信息給特定的目標群。
8)、劫持用戶Web行為:一些高級的XSS攻擊甚至可以劫持用戶的Web行為,從而監視用戶的瀏覽歷史、發送與接收的數據等等。
9)、XSS蠕蟲:借助XSS蠕蟲病毒還可以用來打廣告、刷流量、掛馬、惡作劇、破壞網上數據、實施DDoS攻擊等。
修復建議
xss漏洞本質上是一種html注入,也就是將html代碼注入到網頁中。那么其防御的根本就是在將用戶提交的代碼顯示到頁面上時做好一系列的過濾與轉義
1)假定所有輸入都是可疑的,必須對所有輸入中的script、iframe等字樣進行嚴格的檢查。這里的輸入不僅僅是用戶可以直接交互的輸入接口,也包括HTTP請求中的Cookie中的變量,HTTP請求頭部中的變量等。
2)不僅要驗證數據的類型,還要驗證其格式、長度、范圍和內容。
3)不要僅僅在客戶端做數據的驗證與過濾,關鍵的過濾步驟在服務端進行。
4)對輸出的數據也要檢查,數據庫里的值有可能會在一個大網站的多處都有輸出,即使在輸入做了編碼等操作,在各處的輸出點時也要進行安全檢查。
(7)、目標服務器啟用了不安全HTTP方法
漏洞描述
目標服務器啟用了不安全的傳輸方法,如PUT、TRACE、DELETE、MOVE等,這些方法表示可能在服務器上使用了 WebDAV,由于dav方法允許客戶端操縱服務器上的文件,如上傳、修改、刪除相關文件等危險操作,如果沒有合理配置dav,有可能允許未授權的用戶對其進行利用,修改服務器上的文件。
修復建議
1)、關閉不安全的傳輸方法,推薦只使用POST、GET方法!
2)、如果服務器不需要支持 WebDAV,請務必禁用它。
或者為允許webdav的目錄配置嚴格的訪問權限,如認證方法,認證需要的用戶名,密碼。
(8)、任意文件上傳
漏洞描述
文件上傳漏洞通常由于網頁代碼中的文件上傳路徑變量過濾不嚴或webserver相關解析漏洞未修復而造成的,如果文件上傳功能實現代碼沒有嚴格限制用戶上傳的文件后綴以及文件類型,攻擊者可通過 Web 訪問的目錄上傳任意文件,包括網站后門文件(webshell),進而遠程控制網站服務器。
攻擊者可通過此漏洞上傳惡意腳本文件,對服務器的正常運行造成安全威脅!
修復建議
1)、對上傳文件類型進行限制,并且不能只做前端的限制,而要前端和后端一起限制,后端可以進行擴展名檢測,重命名文件,MIME類型檢測以及限制上傳文件的大小,或是將上傳的文件放在安全的路徑下,盡量放于webserver之外的遠程服務器等。
2)、嚴格限制和校驗上傳的文件,禁止上傳惡意代碼的文件。同時限制相關目錄的執行權限,防范webshell攻擊。
3)、對上傳文件格式進行嚴格校驗及安全掃描,防止上傳惡意腳本文件;
4)、設置權限限制,禁止上傳目錄的執行權限;
5)、嚴格限制可上傳的文件類型;
6)、嚴格限制上傳的文件路徑。
7)、文件擴展名服務端白名單校驗。
8)、文件內容服務端校驗。
9)、上傳文件重命名。
10)、隱藏上傳文件路徑。
(9)、測試頁面泄漏在外網
漏洞描述
一些測試頁面泄漏到外網,導致外界誤傳公司被黑客入侵,影響公司聲譽。
修復建議
刪除測試頁面以及無用文件,例如test.cgi,phpinfo.php,info.pho, .svn/entries等。
(10)、目錄瀏覽
漏洞描述
由于服務器端配置不當,開啟了目錄瀏覽,黑客可獲得服務器上的文件目錄結構,從而下載敏感文件。
修復建議
通過修改配置文件,去除中間件(如IIS、apache、tomcat)的文件目錄索引功能
2.設置目錄權限
3.在每個目錄下創建一個空的index.html頁面。
(11)、phpinfo信息泄漏
漏洞描述
Web站點的某些測試頁面可能會使用到PHP的phpinfo()函數,會輸出服務器的關鍵信息,從而造成信息泄露,通過獲取的信息可進行下一步的攻擊計劃!
修復建議
刪除該PHP文件!
(12)、未授權訪問
漏洞描述
由于沒有對相關敏感頁面進行訪問權限的檢查,導致攻擊者可未授權訪問,從而獲取敏感信息及進行未授權操作等!
修復建議
對相關頁面進行嚴格的訪問權限的控制以及對訪問角色進行權限檢查!
(13)、越權訪問
漏洞描述
由于沒有對用戶訪問角色的權限進行嚴格的檢查及限制,導致當前賬號可對其他賬號進行相關操作,如查看、修改等!
修復建議
對用戶訪問角色的權限進行嚴格的檢查及限制!
(14)、命令執行漏洞
漏洞描述
命令執行漏洞是指代碼未對用戶可控參數做過濾,導致直接帶入執行命令的代碼中,對惡意構造的語句,可被用來執行任意命令。黑客可在服務器上執行任意命令,寫入后門,從而入侵服務器,獲取服務器的管理員權限,危害巨大。
修復建議
嚴格過濾用戶輸入的數據,禁止執行非預期系統命令!
(15)、應用程序錯誤信息泄露
漏洞描述
黑客可通過特殊的攻擊向量,使web服務器出現500、404等相關錯誤,導致信息泄漏如絕對路徑、webserver版本、源代碼、sql語句等敏感信息,惡意攻擊者很有可能利用這些信息實施進一步的攻擊。
修復建議
1、自定義錯誤頁面或歸一化錯誤頁面信息提示!
2、修正代碼!
(16)、LDAP注入
漏洞描述
由于Web 應用程序沒有對用戶提供的輸入進行適當過濾和檢查,攻擊者便有可能修改LDAP 語句的結構,并且以(例如:數據庫服務器、Web 應用程序服務器、Web 服務器)的權限執行任意命令,許可權可能會允許查詢、修改或除去 LDAP 樹狀構造內任何數據。
修復建議
對用戶的輸入進行嚴格的過濾及檢查,并且對類型也進行檢查!
(17)、文件包含漏洞
漏洞描述
本地文件包含是指程序代碼在處理包含文件的時候沒有嚴格控制。利用這個漏洞,攻擊者可以先把上傳的靜態文件,或網站日志文件作為代碼執行,或者包含遠程服務器上的惡意文件,進而獲取到服務器權限。
修復建議
1、嚴格檢查變量是否已經初始化。
2、對所有輸入提交可能包含的文件地址,包括服務器本地文件及遠程文件,進行嚴格的檢查,參數中不允許出現../之類的目錄跳轉符。
3、嚴格檢查include類的文件包含函數中的參數是否外界可控。
4、不要僅僅在客戶端做數據的驗證與過濾,關鍵的過濾步驟在服務端進行。
(18)、網站敏感壓縮文件泄露
漏洞描述
誤將網站備份文件或是敏感信息文件存放在某個網站目錄下,外部黑客可通過暴力破解文件名等方法下載該備份文件,導致網站敏感信息泄露。
修復建議
1、不要在網站目錄下存放網站備份文件或敏感信息的文件。
2、如需存放該類文件,請將文件名命名為難以猜解的字符串。
(19)、CRLF HTTP 頭部注入漏洞
漏洞描述
CRLF 是“回車 +換行”(\r)的簡稱。在 HTTP 協議中,HTTPHeader 與 HTTP Body 是用兩個 CRLF 符號進行分隔的,瀏覽器根據這兩個 CRLF 符號來獲取 HTTP 內容并顯示。因此,一旦攻擊者能夠控制 HTTP 消息頭中的字符,注入一些惡意的換行,就能注入一些會話 Cookie 或者 HTML 代碼。
修復建議
過濾 \r 、 之類的換行符,避免輸入的數據污染到其他 HTTP 消息頭。
(20)、URL 跳轉漏洞
漏洞描述
Web 程序直接跳轉到參數中的 URL ,或頁面引入任意的開發者 URL,被攻擊者利用可實施釣魚攻擊等操作。
修復建議
在控制頁面轉向的地方校驗傳入的URL是否為可信域名。
(21)、Crossdomain.xml 配置不當
漏洞描述
網站根目錄下的 crossdomain.xml 文件指明了遠程Flash 是否可以加載當前網站的資源(圖片、網頁內容、Flash等)。如果配置不當,可能導致遭受跨站請求偽造(CSRF)攻擊。
修復建議
對于不需要從外部加載資源的網站,在 crossdomain.xml 文件中更改allow-access-from的domain屬性為域名白名單。
(22)、敏感信息泄露
漏洞描述
在頁面中或者返回的響應包中泄露了敏感信息,通過這些信息,攻擊者可進一步滲透。
修復建議
1、如果是探針或測試頁面等無用的程序建議刪除,或者修改不易被猜到的名字。
2、禁用泄露敏感信息的頁面或應用。
3、對相關敏感信息進行模糊化處理,在服務器端進行!
4、對服務器端返回的數據進行嚴格的檢查,滿足查詢數據與頁面顯示數據一致,切勿返回多于的數據!
(23)、任意文件下載
漏洞描述
文件下載處由于未對下載路徑進行過濾,利用路徑回溯符../跳出程序本身的限制目錄實現來下載任意文件,如下載系統密碼文件等!
修復建議
對下載路徑進行過濾,如下載前對傳入的參數進行過濾,并且對下載文件類型進行檢查,是否是允許下載的類型,另外禁止使用回溯符../!
(24)、weblogic SSRF服務器請求偽造
漏洞描述
目標存在weblogic SSRF服務器請求偽造漏洞。WebLogic是用于開發、集成、部署和管理大型分布式Web應用、網絡應用和數據庫應用的Java應用服務器。SSRF(Server-Side Request Forgery:服務器端請求偽造) 是一種由攻擊者構造形成由服務端發起請求的一個安全漏洞。一般情況下,SSRF攻擊的目標是從外網無法訪問的內部系統。(正是因為它是由服務端發起的,所以它能夠請求到與它相連而與外網隔離的內部系統)。Weblogic中間件默認帶有“UDDI 目錄瀏覽器”且為未授權訪問,通過該應用,可進行無回顯的SSRF請求。攻擊者可利用該漏洞對企業內網進行大規模掃描,了解內網結構,并可能結合內網漏洞直接獲取服務器權限。
修復建議
1.刪除uddiexplorer文件夾
2.限制uddiexplorer應用只能內網訪問
(25)、目標站點存在網馬
漏洞描述
經滲透測試發現目標站點存在有webshell,攻擊者可進行遠程連接操作,進行惡意操作!
修復建議
1)刪除可疑文件,并進行本地文件漏洞掃描排查是否還存在有其他木馬!
2)使用相關手段發現并及時修復已存在的漏洞!
(26)、IIS短文件名泄露漏洞
漏洞描述
Internet Information Services(IIS,互聯網信息服務)是由微軟公司提供的基于運行Microsoft Windows的互聯網基本服務。Microsoft IIS在實現上存在文件枚舉漏洞,攻擊者可利用此漏洞枚舉網絡服務器根目錄中的文件。危害:攻擊者可以利用“~”字符猜解或遍歷服務器中的文件名,或對IIS服務器中的.Net Framework進行拒絕服務攻擊。
黑客可通過該漏洞嘗試獲取網站服務器下存放文件的文件名,達到獲取更多信息來入侵服務器的目的。
修復建議
修改Windows配置,關閉短文件名功能。
1.關閉NTFS 8.3文件格式的支持。該功能默認是開啟的,對于大多數用戶來說無需開啟。
2.如果是虛擬主機空間用戶,可采用以下修復方案:
1)修改注冊列表HKLM\SYSTEM\CurrentControlSet\Control\FileSystem\NtfsDisable8dot3NameCreation的值為1(此修改只能禁止NTFS8.3格式文件名創建,已經存在的文件的短文件名無法移除)。
2)如果你的web環境不需要asp.net的支持你可以進入Internet 信息服務(IIS)管理器 --- Web 服務擴展 - ASP.NET 選擇禁止此功能。
3)升級net framework 至4.0以上版本。
3.將web文件夾的內容拷貝到另一個位置,比如D:\www到D:\www.back,然后刪除原文件夾D:\www,再重命名D:\www.back到D:\www。如果不重新復制,已經存在的短文件名則是不會消失的。
(27)、Apache Struts2 遠程代碼執行漏洞(S2-019)
漏洞描述
Apache Struts2的“Dynamic MethodInvocation”機制是默認開啟的,僅提醒用戶如果可能的情況下關閉此機制,如果未關閉此機制將導致遠程代碼執行漏洞,遠程攻擊者可利用此漏洞在受影響應用上下文中執行任意代碼。
修復建議
1、目前廠商已經發布了升級補丁以修復這個安全問題,請到廠商的主頁下載!
2、或者手工設置struts.xml文件
(28)、Apache Struts2 遠程代碼執行漏洞(S2-037)
漏洞描述
Apache Struts2在使用REST插件時,攻擊者可以繞過動態方法執行的限制,調用惡意表達式執行遠程代碼。
修復建議
建議用戶到官方獲取最新補丁或者最新版本程序!
(29)、Apache Struts2 DevMode 遠程代碼執行漏洞
漏洞描述
為了便于開發人員調試程序,Struts2提供了一個devMode模式,可以方便查看程序錯誤以及日志等信息。當Struts2中的devMode模式設置為true時,存在嚴重遠程代碼執行漏洞。如果WebService 啟動權限為最高權限時,可遠程執行任意命令,包括關機、建立新用戶、以及刪除服務器上所有文件等等。
修復建議
建議用戶到官方獲取最新補丁或者最新版本程序!
或者將struts.properties中的devMode設置為false,或是在struts.xml中添加如下代碼:。
(30)、Apache Struts2 遠程代碼執行漏洞(S2-045)
漏洞描述
Apache Struts2的Jakarta Multipartparser插件存在遠程代碼執行漏洞,漏洞編號為CVE-2017-5638。攻擊者可以在使用該插件上傳文件時,修改HTTP請求頭中的Content-Type值來觸發該漏洞,導致遠程執行代碼。
修復建議
檢測方式查看web目錄下/WEB-INF/lib/目錄下的struts-core.x.x.jar ,如果這個版本在Struts2.3.5 到 Struts2.3.31 以及 Struts2.5 到 Struts2.5.10之間則存在漏洞!
1、建議用戶到官方獲取最新補丁或者最新版本程序!
2、更新至Strusts2.3.32或者Strusts2.5.10.1,或使用第三方的防護設備進行防護。
3、臨時解決方案:刪除commons-fileupload-x.x.x.jar文件(會造成上傳功能不可用)。
4、修改WEB-INF/classes目錄下的配置
在WEB-INF/classes目錄下的struts.xml中的struts 標簽下添加;
在WEB-INF/classes/目錄下添加global.properties,文件內容如下:
struts.messages.upload.error.InvalidContentTypeException=1
(31)、Apache Struts2 遠程代碼執行漏洞(S2-033)
漏洞描述
Apache Struts2在開啟動態方法調用(DynamicMethod Invocation)的情況下,攻擊者使用REST插件調用惡意表達式可以遠程執行代碼。
修復建議
1、用戶到官方獲取最新補丁或者最新版本程序!
2、或者在允許的情況下禁用動態方法調用(Dynamic Method Invocation),修改Struts2的配置文件struts.xml,將struts.enable.DynamicMethodInvocation設置為“false”。
(32)、目標URL存在httphost頭攻擊漏洞
漏洞描述
為了方便的獲得網站域名,開發人員一般依賴于HTTP Host header,但是這個header是不可信賴的,如果應用程序沒有對host header值進行處理,就有可能造成惡意代碼的傳入。
修復建議
web應用程序應該使用SERVER_NAME而不是host header。
在Apache和Nginx里可以通過設置一個虛擬機來記錄所有的非法host header。在Nginx里還可以通過指定一個SERVER_NAME名單,Apache也可以通過指定一個SERVER_NAME名單并開啟UseCanonicalName選項。
(33)、登錄繞過漏洞
漏洞描述
由于對登錄的賬號及口令校驗存在邏輯缺陷,或再次使用服務器端返回的相關參數作為最終登錄憑證,導致可繞過登錄限制,如服務器返回一個flag參數作為登錄是否成功的標準,但是由于代碼最后登錄是否成功是通過獲取這個flag參數來作為最終的驗證,導致攻擊者通過修改flag參數即可繞過登錄的限制!
修復建議
修改驗證邏輯,如是否登錄成功服務器端返回一個參數,但是到此就是最終驗證,不需要再對返回的參數進行使用并作為登錄是否成功的最終判斷依據!
(34)、短信/郵件轟炸
漏洞描述
由于沒有對短信或者郵件發送次數進行限制,導致可無限次發送短信或郵件給用戶,從而造成短信轟炸,進而可能被大量用戶投訴,從而影響公司聲譽!
修復建議
對發送短信或郵件的次數進行限制,如1分鐘只能發送1次短信或郵件,并且需要在服務器進行限制!
(35)、slow http Dos拒絕服務
漏洞描述
按照設計,HTTP協議要求服務器在處理之前完全接收請求。如果HTTP請求沒有完成,或者傳輸速率非常低,服務器會保持其資源忙于等待其余數據。如果服務器保持太多的資源忙,這將造成一個拒絕服務。嚴重者一臺主機即可讓web運行緩慢甚至是崩潰!
修復建議
對于 Apache 可以做以下優化:
設置合適的 timeout 時間(Apache 已默認啟用了 reqtimeout 模塊),規定了 Header 發送的時間以及頻率和 Body 發送的時間以及頻率
增大 MaxClients(MaxRequestWorkers):增加最大的連接數。根據官方文檔,兩個參數是一回事,版本不同,MaxRequestWorkers was called MaxClients before version 2.3.13.Theold name is still supported.
默認安裝的 Apache 存在 Slow Attack 的威脅,原因就是雖然設置的 timeoute,但是最大連接數不夠,如果攻擊的請求頻率足夠大,仍然會占滿Apache的所有連接。
(36)、web服務測試頁面信息泄露
漏洞描述
由于沒有刪除默認的且與業務無關的頁面,導致信息泄露,如:webserver版本信息、中間件類型及版本信息等,通過對這類信息的收集,攻擊者可制定具有針對性的攻擊計劃!
修復建議
刪除與業務無關的頁面,如果是必須需要使用的中間件管理頁面,建議對該頁面進行訪問權限的控制!