常規web滲透測試漏洞描述及修復建議
Apache樣例檔案洩漏
測試方法
在連結的根目錄中新增examples或者docs目錄進行訪問判斷!
漏洞描述
apache一些樣例檔案沒有刪除,可能存在cookie、session偽造,進行後臺登入操作
修復建議
1、刪除樣例檔案
2、對apache中web.xml進行相關設定
弱口令
測試方法
先手工嘗試一些最基本的弱口令,如admin/admin、admin/123456、admin/888888等,如果不行,使用暴力破解工具進行暴力破解,如使用burpsuite,另外推薦一個小技巧,使用暴力破解的時候,弱口令使用2到3個常見的,然後使用者名稱使用人名拼音top500!
漏洞描述
由於系統中存在有弱口令,導致攻擊者通過弱口令可輕鬆登入系統中,從而進行下一步的攻擊,如上傳webshell,獲取敏感資料!
另外攻擊者利用弱口令登入網站管理後臺,可任意增刪改等操作,從而造成負面影響!
修復建議
1、 建議強制使用者首次登入時修改預設口令,或是使用使用者自定義初始密碼的策略;
2、 完善密碼策略,資訊保安最佳實踐的密碼策略為8位(包括)以上字元,包含數字、大小寫字母、特殊字元中的至少3種。
3、對管理後臺進行訪問控制,修改後臺弱口令,加強口令強度並定期修改。
4、增加驗證機制,防爆破機制,限制ip+cookie訪問次數。
明文傳輸登入口令
測試方法
使用瀏覽器自帶的F12中的network模組就可以進行檢視,或者使用抓包工具,如sniffer、burpsuite、fiddler等!
漏洞描述
使用者登入過程中使用明文傳輸使用者登入資訊,若使用者遭受中間人攻擊時,攻擊者可直接獲取該使用者登入賬戶,從而進行進一步滲透。
修復建議
1、使用者登入資訊使用加密傳輸,如密碼在傳輸前使用安全的演算法加密後傳輸,可採用的演算法包括:不可逆hash演算法加鹽(4位及以上隨機數,由伺服器端產生);安全對稱加密演算法,如AES(128、192、256位),且必須保證客戶端金鑰安全,不可被破解或讀出;非對稱加密演算法,如RSA(不低於1024位)、SM2等。
2、使用https來保證傳輸的安全。
暴力破解
測試方法
使用截斷抓包工具進行暴力破解,如burpsuite,推薦使用2到3個弱口令,然後使用人名拼音top500加上自己實際中常用字典進行暴力破解!
漏洞描述
由於沒有對登入頁面進行相關的防暴力破解機制,如無驗證碼、有驗證碼但驗證碼未在伺服器端校驗以及無登入錯誤次數限制等,導致攻擊者可通過暴力破解獲取使用者登入賬戶及口令,從而獲取網站登入訪問許可權!
修復建議
1、新增驗證碼機制,加入圖片(驗證碼動態生成且滿足隨機性)或者簡訊驗證碼(驗證碼具備超時時限一般為1分鐘,且在該時限內錯誤次數超過3次則進行鎖定1分鐘後方能重新獲取驗證碼,超時後驗證碼自動失效)!
2、驗證碼必須在伺服器端進行校驗,客戶端的一切校驗都是不安全的!
SQL注入漏洞
測試方法
在發現有可控引數的地方使用sqlmap進行SQL注入的檢查或者利用,也可以使用其他的SQL注入工具,簡單點的可以手工測試,利用單引號、and 1=1 和 and 1=2以及字元型注入進行判斷!推薦使用burpsuit的sqlmap外掛,這樣可以很方便,滑鼠右鍵就可以將資料包直接傳送到sqlmap裡面進行檢測了!
漏洞描述
Web程式程式碼中對於使用者提交的引數未做過濾就直接放到SQL語句中執行,導致引數中的特殊字元打破了SQL語句原有邏輯,黑客可以利用該漏洞執行任意SQL語句,如查詢資料、下載資料、寫入webshell、執行系統命令以及繞過登入限制等。
修復建議
程式碼層最佳防禦sql漏洞方案:採用sql語句預編譯和繫結變數,是防禦sql注入的最佳方法。
(1)所有的查詢語句都使用資料庫提供的引數化查詢介面,引數化的語句使用引數而不是將使用者輸入變數嵌入到SQL語句中。當前幾乎所有的資料庫系統都提供了引數化SQL語句執行介面,使用此介面可以非常有效的防止SQL注入攻擊。
(2)對進入資料庫的特殊字元(’”<>&*;等)進行轉義處理,或編碼轉換。
(3)確認每種資料的型別,比如數字型的資料就必須是數字,資料庫中的儲存欄位必須對應為int型。
(4)資料長度應該嚴格規定,能在一定程度上防止比較長的SQL注入語句無法正確執行。
(5)網站每個資料層的編碼統一,建議全部使用UTF-8編碼,上下層編碼不一致有可能導致一些過濾模型被繞過。
(6)嚴格限制網站使用者的資料庫的操作許可權,給此使用者提供僅僅能夠滿足其工作的許可權,從而最大限度的減少注入攻擊對資料庫的危害。
(7)避免網站顯示SQL錯誤資訊,比如型別錯誤、欄位不匹配等,防止攻擊者利用這些錯誤資訊進行一些判斷。
跨站指令碼攻擊(xss)漏洞
測試方法
在可控引數的地方,使用常見的xss payload(”>
漏洞描述
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)對輸出的資料也要檢查,資料庫裡的值有可能會在一個大網站的多處都有輸出,即使在輸入做了編碼等操作,在各處的輸出點時也要進行安全檢查。
目標伺服器啟用了不安全HTTP方法
測試方法
這裡可以使用多種方法,可以使用burpsuit進行截斷將資料包發往repter,然後將對應的HTTP方法更改為OPTIONS,看響應包裡面的allow是否有不安全的方法,也可以使用curl進行檢查,命令為:curl -i -X OPTIONS URL ,-i可以換為-v,檢視更詳細的內容!
漏洞描述
目標伺服器啟用了不安全的傳輸方法,如PUT、TRACE、DELETE、MOVE等,這些方法表示可能在伺服器上使用了 WebDAV,由於dav方法允許客戶端操縱伺服器上的檔案,如上傳、修改、刪除相關檔案等危險操作,如果沒有合理配置dav,有可能允許未授權的使用者對其進行利用,修改伺服器上的檔案。
修復建議
1、關閉不安全的傳輸方法,推薦只使用POST、GET方法!
2、如果伺服器不需要支援 WebDAV,請務必禁用它。
或者為允許webdav的目錄配置嚴格的訪問許可權,如認證方法,認證需要的使用者名稱,密碼。
任意檔案上傳
測試方法
在檔案上傳的地方,進行上傳任意字尾檔案看能否上傳,可以使用多種檔案上傳及解析漏洞利用的技巧進行上傳(參考連結),還可以通過觀察上傳正常檔案確認是否有二次上傳漏洞!
漏洞描述
檔案上傳漏洞通常由於網頁程式碼中的檔案上傳路徑變數過濾不嚴或webserver相關解析漏洞未修復而造成的,如果檔案上傳功能實現程式碼沒有嚴格限制使用者上傳的檔案字尾以及檔案型別,攻擊者可通過 Web 訪問的目錄上傳任意檔案,包括網站後門檔案(webshell),進而遠端控制網站伺服器。
攻擊者可通過此漏洞上傳惡意指令碼檔案,對伺服器的正常執行造成安全威脅!
修復建議
1、對上傳檔案型別進行限制,並且不能只做前端的限制,而要前端和後端一起限制,後端可以進行副檔名檢測,重新命名檔案,MIME型別檢測以及限制上傳檔案的大小,或是將上傳的檔案放在安全的路徑下,儘量放於web server之外的遠端伺服器等。
2、嚴格限制和校驗上傳的檔案,禁止上傳惡意程式碼的檔案。同時限制相關目錄的執行許可權,防範webshell攻擊。
3、對上傳檔案格式進行嚴格校驗及安全掃描,防止上傳惡意指令碼檔案;
4、設定許可權限制,禁止上傳目錄的執行許可權;
5、嚴格限制可上傳的檔案型別;
6、嚴格限制上傳的檔案路徑。
7、副檔名服務端白名單校驗。
8、檔案內容服務端校驗。
9、上傳檔案重新命名。
10、隱藏上傳檔案路徑。
測試頁面洩漏在外網
測試方法
這裡可以使用後臺目錄掃描工具進行目錄掃描,如御劍、test404、M7lrv後臺掃描工具、Pker等!
漏洞描述
一些測試頁面洩漏到外網,導致外界誤傳公司被黑客入侵,影響公司聲譽。
修復建議
刪除測試頁面以及無用檔案,例如test.cgi,phpinfo.php,info.pho, .svn/entries等。
目錄瀏覽
測試方法
如果連結是多級目錄,那麼逐級刪除目錄進行檢視,如果連結不是多級目錄,可以通過檢視圖片屬性,然後逐級刪除目錄進行檢視,這裡可以使用F12進行檢視資原始檔,如圖片路徑、js路徑等,然後逐級刪除目錄進行確認!
漏洞描述
由於伺服器端配置不當,開啟了目錄瀏覽,黑客可獲得伺服器上的檔案目錄結構,從而下載敏感檔案。
修復建議
1.通過修改配置檔案,去除中介軟體(如IIS、apache、tomcat)的檔案目錄索引功能
2.設定目錄許可權
3.在每個目錄下建立一個空的index.html頁面。
phpinfo資訊洩漏
測試方法
直接在根目錄中輸入phpinfo.php進行訪問,如果檔案更名了,我們可以使用目錄掃描工具進行判斷!
漏洞描述
Web站點的某些測試頁面可能會使用到PHP的phpinfo()函式,會輸出伺服器的關鍵資訊,從而造成資訊洩露,通過獲取的資訊可進行下一步的攻擊計劃!
修復建議
刪除該PHP檔案!
未授權訪問
測試方法
如果你懷疑那個頁面或者那個連結存在未授權訪問,你可以將該連結在另一個瀏覽器中開啟,看是否能正常訪問!
漏洞描述
由於沒有對相關敏感頁面進行訪問許可權的檢查,導致攻擊者可未授權訪問,從而獲取敏感資訊及進行未授權操作等!
修復建議
對相關頁面進行嚴格的訪問許可權的控制以及對訪問角色進行許可權檢查!
越權訪問
測試方法
這裡主要是通過更改敏感引數進行判斷,若你訪問你自己的個人資訊時,連結中某一個引數就是你的登入名或者一個ID,此時就可以通過修改該引數進行簡單判斷!參考連結
漏洞描述
由於沒有對使用者訪問角色的許可權進行嚴格的檢查及限制,導致當前賬號可對其他賬號進行相關操作,如檢視、修改等!
修復建議
對使用者訪問角色的許可權進行嚴格的檢查及限制!
命令執行漏洞
漏洞描述
命令執行漏洞是指程式碼未對使用者可控引數做過濾,導致直接帶入執行命令的程式碼中,對惡意構造的語句,可被用來執行任意命令。黑客可在伺服器上執行任意命令,寫入後門,從而入侵伺服器,獲取伺服器的管理員許可權,危害巨大。
修復建議
嚴格過濾使用者輸入的資料,禁止執行非預期系統命令!
應用程式錯誤資訊洩露
漏洞描述
黑客可通過特殊的攻擊向量,使web伺服器出現500、404等相關錯誤,導致資訊洩漏如絕對路徑、webserver版本、原始碼、sql語句等敏感資訊,惡意攻擊者很有可能利用這些資訊實施進一步的攻擊。
修復建議
1、自定義錯誤頁面或歸一化錯誤頁面資訊提示!
2、修正程式碼!
LDAP注入
漏洞描述
由於Web 應用程式沒有對使用者提供的輸入進行適當過濾和檢查,攻擊者便有可能修改LDAP 語句的結構,並且以(例如:資料庫伺服器、Web 應用程式伺服器、Web 伺服器)的許可權執行任意命令,許可權可能會允許查詢、修改或除去 LDAP 樹狀構造內任何資料。
修復建議
對使用者的輸入進行嚴格的過濾及檢查,並且對型別也進行檢查!
檔案包含漏洞
漏洞描述
本地檔案包含是指程式程式碼在處理包含檔案的時候沒有嚴格控制。利用這個漏洞,攻擊者可以先把上傳的靜態檔案,或網站日誌檔案作為程式碼執行,或者包含遠端伺服器上的惡意檔案,進而獲取到伺服器許可權。
修復建議
1、嚴格檢查變數是否已經初始化。
2、對所有輸入提交可能包含的檔案地址,包括伺服器本地檔案及遠端檔案,進行嚴格的檢查,引數中不允許出現../之類的目錄跳轉符。
3、嚴格檢查include類的檔案包含函式中的引數是否外界可控。
4、不要僅僅在客戶端做資料的驗證與過濾,關鍵的過濾步驟在服務端進行。
網站敏感壓縮檔案洩露
漏洞描述
誤將網站備份檔案或是敏感資訊檔案存放在某個網站目錄下,外部黑客可通過暴力破解檔名等方法下載該備份檔案,導致網站敏感資訊洩露。
修復建議
1、不要在網站目錄下存放網站備份檔案或敏感資訊的檔案。
2、如需存放該類檔案,請將檔名命名為難以猜解的字串。
CRLF HTTP 頭部注入漏洞
漏洞描述
CRLF 是“回車 + 換行”(\r\n)的簡稱。在 HTTP 協議中,HTTP Header 與 HTTP Body 是用兩個 CRLF 符號進行分隔的,瀏覽器根據這兩個 CRLF 符號來獲取 HTTP 內容並顯示。因此,一旦攻擊者能夠控制 HTTP 訊息頭中的字元,注入一些惡意的換行,就能注入一些會話 Cookie 或者 HTML 程式碼。
修復建議
過濾 \r 、\n 之類的換行符,避免輸入的資料汙染到其他 HTTP 訊息頭。
URL 跳轉漏洞
漏洞描述
Web 程式直接跳轉到引數中的 URL ,或頁面引入任意的開發者 URL,被攻擊者利用可實施釣魚攻擊等操作 。
修復建議
在控制頁面轉向的地方校驗傳入的URL是否為可信域名。
Crossdomain.xml 配置不當
漏洞描述
網站根目錄下的 crossdomain.xml 檔案指明瞭遠端 Flash 是否可以載入當前網站的資源(圖片、網頁內容、Flash等)。如果配置不當,可能導致遭受跨站請求偽造(CSRF)攻擊。
修復建議
對於不需要從外部載入資源的網站,在 crossdomain.xml 檔案中更改allow-access-from的domain屬性為域名白名單。
敏感資訊洩露
漏洞描述
在頁面中或者返回的響應包中洩露了敏感資訊,通過這些資訊,攻擊者可進一步滲透。
修復建議
1、如果是探針或測試頁面等無用的程式建議刪除,或者修改不易被猜到的名字。
2、禁用洩露敏感資訊的頁面或應用。
3、對相關敏感資訊進行模糊化處理,在伺服器端進行!
4、對伺服器端返回的資料進行嚴格的檢查,滿足查詢資料與頁面顯示資料一致,切勿返回多於的資料!
任意檔案下載
漏洞描述
檔案下載處由於未對下載路徑進行過濾,利用路徑回溯符../跳出程式本身的限制目錄實現來下載任意檔案,如下載系統密碼檔案等!
修復建議
對下載路徑進行過濾,如下載前對傳入的引數進行過濾,並且對下載檔案型別進行檢查,是否是允許下載的型別,另外禁止使用回溯符../ !
weblogic SSRF伺服器請求偽造
漏洞描述
目標存在weblogic SSRF伺服器請求偽造漏洞。WebLogic是用於開發、整合、部署和管理大型分散式Web應用、網路應用和資料庫應用的Java應用伺服器。SSRF(Server-Side Request Forgery:伺服器端請求偽造) 是一種由攻擊者構造形成由服務端發起請求的一個安全漏洞。一般情況下,SSRF攻擊的目標是從外網無法訪問的內部系統。(正是因為它是由服務端發起的,所以它能夠請求到與它相連而與外網隔離的內部系統)。Weblogic中介軟體預設帶有“UDDI 目錄瀏覽器”且為未授權訪問,通過該應用,可進行無回顯的SSRF請求。攻擊者可利用該漏洞對企業內網進行大規模掃描,瞭解內網結構,並可能結合內網漏洞直接獲取伺服器許可權。
修復建議
1.刪除uddiexplorer資料夾
2.限制uddiexplorer應用只能內網訪問
目標站點存在網馬
漏洞描述
經滲透測試發現目標站點存在有webshell,攻擊者可進行遠端連線操作,進行惡意操作!
修復建議
刪除可疑檔案,並進行本地檔案漏洞掃描排查是否還存在有其他木馬!
使用相關手段發現並及時修復已存在的漏洞!
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。如果不重新複製,已經存在的短檔名則是不會消失的。
Apache Struts2 遠端程式碼執行漏洞(S2-019)
漏洞描述
Apache Struts2的“Dynamic Method Invocation”機制是預設開啟的,僅提醒使用者如果可能的情況下關閉此機制,如果未關閉此機制將導致遠端程式碼執行漏洞,遠端攻擊者可利用此漏洞在受影響應用上下文中執行任意程式碼。
修復建議
1、目前廠商已經發布了升級補丁以修復這個安全問題,請到廠商的主頁下載!
2、或者手工設定struts.xml檔案
Apache Struts2 遠端程式碼執行漏洞(S2-037)
漏洞描述
Apache Struts2在使用REST外掛時,攻擊者可以繞過動態方法執行的限制,呼叫惡意表示式執行遠端程式碼。
修復建議
建議使用者到官方獲取最新補丁或者最新版本程式!
Apache Struts2 DevMode 遠端程式碼執行漏洞
漏洞描述
為了便於開發人員除錯程式,Struts2提供了一個devMode模式,可以方便檢視程式錯誤以及日誌等資訊。 當Struts2中的devMode模式設定為true時,存在嚴重遠端程式碼執行漏洞。如果WebService 啟動許可權為最高許可權時,可遠端執行任意命令,包括關機、建立新使用者、以及刪除伺服器上所有檔案等等。
修復建議
建議使用者到官方獲取最新補丁或者最新版本程式!
或者將struts.properties中的devMode設定為false,或是在struts.xml中新增如下程式碼:。
Apache Struts2 遠端程式碼執行漏洞(S2-045)
漏洞描述
Apache Struts2的Jakarta Multipart parser外掛存在遠端程式碼執行漏洞,漏洞編號為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 標籤下新增