###### tags: `Hack` # 網站漏洞 [Hacksplaining](https://www.hacksplaining.com/) [TOC] # Broken Access Control **無效的存取控管** :::warning 有心人士可能利用文件的路徑來猜測出未公開的文件,例如財務報表,2021-Q2已公開,但有心人士可能根據這個規則來獲取2021-Q3的文件,並提前調整投資策略,已達成類似內線交易的情況。 ::: :::info 訪問控制策略應該涵蓋三個方面:身份驗證(在用戶返回應用程序時正確識別用戶)、授權(決定用戶在通過身份驗證後應該和不應該執行的操作)和權限檢查(在用戶嘗試執行操作時評估授權)。 ::: # Buffer Overflows **緩存溢出** :::warning 攻擊者在固定長度的緩存寫入過多訊息就可能造成伺服器崩潰。 ::: :::info 大多數網站都是使用Apache、Nginx或IIS來部署靜態網站,這些網站在不同時間亦受到緩存溢出的影響,應確保即時更新安全修補。 ::: # Clickjacking **點擊劫持** :::warning 攻擊者將正常的頁面包在iframe中,並在頂層增加不可見的元素,讓使用者被誘導致惡意網站。 ::: :::info 雖然不影響網站,但禁止被包含在外部iframe中,能保護使用者。 ::: # Command Excution **命令執行** :::warning 假設一個網站提供DNS查找服務,並使用`nslookup`命令,攻擊者就可能添加額外的命令來且取伺服器敏感資訊。 ::: :::info 避免使用cmd指令或基於最小權限原則,限制能使用的指令。 ::: # Cross-Site Scripting **跨站腳本** :::warning 將特殊的Script寫入討論區留言中,別人開啟網頁時就可能被竊取cookie或信用卡等資訊。 ::: :::info 留言應該處理跳脫字元,避免自由輸入而改採用下拉式選單。 ::: # Cross-Site Request Forgery **跨站請求偽造** :::warning 當用戶被誘騙至第三方網站進行操作時,駭客可藉由竊取到的身分驗證發送已被竄改過的請求到原本的網站。 ::: :::info 在HTTP請求增加防偽令牌,或是採用RESTFUL API設計,增加攻擊者生成有害請求的難度。 ::: # Denial of Service Attacks **阻斷服務攻擊** :::warning 攻擊者可以產生足夠的流量來使伺服器資源匱乏。 ::: :::info 在很少更改的資源上設置緩存標頭,因此瀏覽器不會在每次查看頁面時請求它們。 在異步作業隊列中執行長時間運行的進程。 將經常訪問的資源緩存在記憶體或硬碟上以減少資料庫訪問。 將復雜的應用程序拆分為微服務,以便每個組件都可以單獨擴展。 實施網頁分析,以便檢測高流量時段並做出應對措施。 ::: # Directory Traversal **路徑遍歷** :::warning 攻擊者會試圖訪問系統上的任意文件,這個漏洞往往出現在較舊的技術堆棧中,這些技術堆棧總是直接將URL映射到系統上的目錄。 ::: :::info 隔離上傳空間,可考慮使用雲端檔案服務,或在上傳時重新命名文件,並將真實路徑儲存在資料庫中,避免傳遞原始路徑名稱。 ::: # DOM-BASED XSS **基於DOM的跨站腳本** :::warning 部份Web使用URI片段(#符號後面的URL),來讓使用者可快速導覽至指定行列,但攻擊者可能在這段URL中添加惡意的scripts。 ::: :::info 盡可能使用text(...)而非html(...),警慎使用任何將動態內容綁定到innerHTML屬性的程式碼,因為它不會自動跳脫字元。 ::: # Email Spoofing **電子郵件欺騙** :::warning 攻擊者使用偽造的發件人地址和網站誘騙使用者登入,以竊取登入資訊。 ::: :::info 使用數位簽章來證明電子郵件是從合法的地方發送。 ::: # File Upload Vulnerabilities **文件上傳漏洞** :::warning 將惡意程式碼上傳到伺服器,例如原本應該上傳照片的地方改為上傳php檔案,再找出執行惡意程式碼的方法並執行。 ::: :::info 隔離上傳空間,可考慮使用雲端檔案服務,或在上傳時重新命名文件,或確保該檔案無法被當作程式碼執行。 ::: # Information Leakage **資訊洩漏** :::warning 當發現零時差漏洞時,攻擊者會立即嘗試找到利用它的方法。如果網站洩露了有關使用技術的信息,就很可能會受到攻擊。 ::: :::info 盡量避免URL中的文件後綴,例如.php、.asp和.jsp等,禁用客戶端錯誤報告,確保將公共目錄和配置目錄嚴格分開。 ::: # Lax Security Settings **寬鬆的安全設置** :::warning 若資料庫的生產竟使用預設帳號密碼,則可能被攻擊者利用。 ::: :::info 創建具有適當權限的專用帳戶。 ::: # Logging And Monitoring **日誌監控** :::warning 攻擊者竊取的日誌文件,若其中包含敏感訊息,則可能被利用。 ::: :::info 日誌應紀錄響應所花時間和當下日期時間戳記,而非個人資料等敏感訊息。 ::: # Malvertising **惡意廣告** :::warning 廣告包含惡意下載,或導向至惡意網站。 ::: :::info 與信譽良好的網路廣告商合作,使用客戶端錯誤報告工具檢測異常行為。 ::: # Open Redirects **開放轉址** :::warning 攻擊者查覺到網站在登入後的重新導向並不會檢查網址,因此發送帶有惡意連結的電子郵件,讓使用者在園網站登入後被帶至惡意網站。 ::: :::info 確保重新導向式相對位址,留在原本網站而非外部網址。 ::: # Password Mismanagement **** :::warning 使用者密碼可能過於簡單容易被暴力破解,密碼過於複雜可能會讓使用者書寫或記錄在檔案,也可能被有心人士利用或竊取。 ::: :::info 可以考慮使用如Facebook或Google的第三方身分驗證,密碼應該使用單向散列函數儲存在資料庫而非明碼。 ::: # Privilege Escalation **特權提升** :::warning 攻擊者冒充其他用戶,或獲得他們不應該擁有的權限。 ::: :::info 將關鍵訊息保存在伺服器端,只向客戶端發送會話ID。 通過使用數字簽名來防篡改發送給客戶端的數據。 加密發送給客戶端的數據,因此對客戶端是不透明的。 ::: # Reflected XSS **反射型跨站腳本** :::warning 當用戶被誘騙至第三方網站進行操作時,駭客可因此竊取cookie。 ::: :::info 留言應該處理跳脫字元,避免自由輸入而改採用下拉式選單,避免透過javascript存取cookie,而是交給瀏覽器處理。 ::: # Session Fixation **Session固定** :::warning 在GET/POST變數中傳遞Session ID很有可能被攻擊者利用來仿冒身分驗證。 ::: :::info 不要在GET/POST變數中傳遞Session ID,而是透過Cookie處理。 ::: # SQL Injection **SQL程式碼注入** :::warning 在輸入的字串之中夾帶SQL指令。 ::: :::info 避免直接將使用者輸入的字串連接在資料庫語法中,而應該處理跳脫字元或使用其他方式存取資料庫。 ::: :::spoiler SQLMap ::: # Toxic Dependencies **有毒的依賴** :::warning 第三方依賴(npm、nuget、pip)有可能會有漏洞。 ::: :::info 使用專用工具掃描依賴樹以查找安全風險,隨時關注安全公告,部署已知良好的軟件版本。 ::: # Unencrypted Communication **未加密通訊** :::warning 攻擊者可能在開放空間提供WIFI熱點,並增加封包擷取器,使用者連上瀏覽未加密網站時,其交互的訊息就可能被竊取。 ::: :::info 網站都應該經過加密,購買並安裝SSL證書。 ::: # User Enumeration **使用者列舉** :::warning 攻擊者可以多次嘗試登入網站,並測試使用者是否存在。 ::: :::info 在登入失敗時應該返回"沒有這樣的用戶名或密碼",避免在網站告訴人們提供的用戶名已被使用。 ::: # Weak Session IDS **弱Session** :::warning 過於簡單的Session ID可能被暴力破解。 ::: :::info 對Cookie進行簽名,或使用現代框架的內建Cookie管理。 ::: # XML Bombs **XML炸彈** :::warning 網站若接受上傳XML檔案且接受內聯DTD,則攻擊者可能夾帶惡意程式碼,造成伺服器反覆解析,最後崩潰。 ::: :::info 禁用內聯DTD或限制每個使用者同時解析作業的數量。 ::: # XML External Entities **XML外部實體攻擊** :::warning 不安全的XML解析器可能允許攻擊者探測網站的文件系統以獲取敏感信息。 ::: :::info 禁用內聯DTD或遵循最小權限原則,限制可以訪問文件系統中的哪些目錄。 :::