OWASP Top10是什么?
OWASP項目最具權威的就是其“十大安全漏洞列表”(OWASPTop 10),OWASP Top 10不是官方文檔或標準,而只是一個被廣泛采用的意識文檔,被用來分類網絡安全漏洞的嚴重程度,目前被許多漏洞獎勵平臺和企業安全團隊評估錯誤報告。這個列表總結了Web應用程序最可能、最常見、最危險的十大漏洞,可以幫助IT公司和開發團隊規范應用程序開發流程和測試流程,提高Web產品的安全性。
A1 注入injection
將不受信任的數據作為命令或查詢的一部分發送到解析器時,會產生諸如SQL注入、NoSQL注入、OS注入和LDAP注入的注入缺陷。攻擊者的惡意數據可以誘使解析器在沒有適當授權的情況下執行非預期命令或訪問數據。
危害:注入可以導致數據丟失或被破壞,缺乏可審計性或拒絕服務。注入漏洞有時甚至可導致完全接管主機
常見的注入
sql注入
–os-shell
LDAP(輕量目錄訪問協議)
xpath(XPath即為XML路徑語言,它是一種用來確定XML(標準通用標記語言的子集)文檔中某部分位置的語言)
HQL注入
如何防范
1.使用安全的API,避免使用解釋器
2.對輸入的特殊的字符進行ESCAPE轉義處理
例子:LIKE ‘%M%’ ESCAPE ‘M’
使用ESCAPE關鍵字定義了轉義字符“M”,告訴DBMS將搜索字符串“%M%”中的第二個百分符(%)作為實際值,而不是通配符
3.使用白名單來規范化的輸入驗證方法
A2 失效的身份認證
通常,通過錯誤使用應用程序的身份認證和會話管理功能,攻擊者能夠破譯密碼、密鑰或會話令牌,或者利用其它開發缺陷來暫時性或永久性冒充其他用戶的身份。
危害:這些漏洞可能導致部分甚至全部賬戶遭受攻擊,一旦攻擊成功,攻擊者就能執行合法的任何操作
如何防范
?使用內置的會話管理功能
?通過認證的訪問
?使用單一的入口點
?確保在一開始登錄SSL保護的網頁
A3 敏感數據泄露
? 許多Web應用程序和API都無法正確保護敏感數據,例如:財務數據、醫療數據和PII數據。攻擊者可以通過竊取或修改未加密的數據來實施信用卡詐騙、身份盜竊或其他犯罪行為。未加密的敏感數據容易受到破壞,因此,我們需要對敏感數據加密,這些數據包括:傳輸過程中的數據、存儲的數據以及瀏覽器的交互數據。
A4 XML外部實體(XXE)
XXE 全稱為XML External Entity attack 即XML(可擴展標記語言) 外部實體注入攻擊,許多較早的或配置錯誤的XML處理器評估了XML文件中的外部實體引用。攻擊者可以利用外部實體竊取使用URI文件處理器的內部文件和共享文件、監聽內部掃描端口、執行遠程代碼和實施拒絕服務攻擊。
A5 失效的訪問控制
未對通過身份驗證的用戶實施恰當的訪問控制。攻擊者可以利用這些缺陷訪問未經授權的功能或數據,例如:訪問其他用戶的帳戶、查看敏感文件、修改其他用戶的數據、更改訪問權限等。
危害:這種漏洞可以損壞參數所引用的所有數據
如何防范
1.使用基于用戶或會話的間接對象訪問,這樣可防止攻擊者直接攻擊為授權資源
2.訪問檢查:對任何來自不受信源所使用的所有對象進行訪問控制檢查
3.避免在url或網頁中直接引用內部文件名或數據庫關鍵字
4.驗證用戶輸入和url請求,拒絕包含./ …/的請求
A6 安全配置錯誤
安全配置錯誤是最常見的安全問題,這通常是由于不安全的默認配置、不完整的臨時配置、開源云存儲、錯誤的HTTP 標頭配置以及包含敏感信息的詳細錯誤信息所造成的。因此,我們不僅需要對所有的操作系統、框架、庫和應用程序進行安全配置,而且必須及時修補和升級它們。
危害:系統可能在未知的情況下被完全攻破,用戶數據可能隨著時間被全部盜走或篡改。甚至導致整個系統被完全破壞
如何防范:
1.自動化安裝部署
2.及時了解并部署每個環節的軟件更新和補丁信息
3.實施漏洞掃描和安全審計
A7 跨站腳本(xss)
xss攻擊全稱為跨站腳本攻擊,
當應用程序的新網頁中包含不受信任的、未經恰當驗證或轉義的數據時,或者使用可以創建HTML或JavaScript 的瀏覽器API 更新現有的網頁時,就會出現XSS 缺陷。XSS 讓攻擊者能夠在受害者的瀏覽器中執行腳本,并劫持用戶會話、破壞網站或將用戶重定向到惡意站點。
危害:攻擊者在受害者瀏覽器中執行腳本以劫持用戶會話,插入惡意內容,重定向用戶,使用惡意軟件劫持用戶瀏覽器等
種類:存儲型,反射型,DOM型
如何防范
1.驗證輸入
2.編碼輸出(用來確保輸入的字符被視為數據,而不是作為html被瀏覽器所解析)
A8 不安全的反序列化
不安全的反序列化會導致遠程代碼執行。即使反序列化缺陷不會導致遠程代碼執行,攻擊者也可以利用它們來執行攻擊,包括:重播攻擊、注入攻擊和特權升級攻擊。
A9 使用含有已知漏洞的組件
組件(例如:庫、框架和其他軟件模塊)擁有和應用程序相同的權限。如果應用程序中含有已知漏洞的組件被攻擊者利用,可能會造成嚴重的數據丟失或服務器接管。同時,使用含有已知漏洞的組件的應用程序和API可能會破壞應用程序防御、造成各種攻擊并產生嚴重影響。
如何防范
1.識別正在使用的組件和版本,包括所有的依賴
2.更新組件或引用的庫文件到最新
3.建立安全策略來管理組件的使用
A10 不足的日志記錄和監控
不足的日志記錄和監控,以及事件響應缺失或無效的集成,使攻擊者能夠進一步攻擊系統、保持持續性或轉向更多系統,以及篡改、提取或銷毀數據。大多數缺陷研究顯示,缺陷被檢測出的時間超過190-200天,且通常通過外部檢測方檢測,而不是通過內部流程或監控檢測。
如何預防:
? 確保所有登錄、訪問控制失敗、輸入驗證失敗能夠被記錄到日志中去,并保留足夠的用戶上下文信息,以識別可疑或惡意帳戶,并為后期取證預留足夠時間。每個組織都應該制定相應的計劃,對整個軟件生命周期進行監控、評審、升級或更改配置。
? 識別可疑或惡意帳戶,并為后期取證預留足夠時間。
? 確保日志以一種能被集中日志管理解決方案使用的形式生成
? 確保高額交易有完整性控制的審計信息,以防止篡改或刪除,例如審計信息保存在只能進行記錄增加的數據庫表中。
? 建立有效的監控和告警機制,使可疑活動在可接受的時間內被發現和應對。
? 建立或采取一個應急響應機制和恢復計劃,例如:更新版本目前已有商業的和開源的應用程序防護框架(如: Web 應用防火墻帶有自定義儀表盤和告警功能的日志關聯軟件。