介紹
在信息安全中滲透測(cè)試方向钓试,OWASP TOP 10 是滲透測(cè)試人員必須要深入了解和學(xué)習(xí)的种樱,今天我們來(lái)深入了解和學(xué)習(xí)下 OWASP 發(fā)布的以往最重要的兩個(gè)版本嗦随,研究下我們 IT 行業(yè)從業(yè)人員最容易引入的漏洞陡叠,后續(xù)文章會(huì)更新具體的漏洞原因、場(chǎng)景籽御、防護(hù)手段练慕,提升我們的應(yīng)用抗風(fēng)險(xiǎn)能力。
應(yīng)用程序安全風(fēng)險(xiǎn)
攻擊者可以通過(guò)應(yīng)用程序中許多的不同的路徑方式去危害企業(yè)業(yè)務(wù)篱蝇。每種路徑方法都代表了一種風(fēng)險(xiǎn)贺待,這些風(fēng)險(xiǎn)都值得關(guān)注徽曲。
什么是 OWASP TOP 10
OWASP(開放式Web應(yīng)用程序安全項(xiàng)目)是一個(gè)開放的社區(qū)零截,由非營(yíng)利組織 OWASP基金會(huì)支持的項(xiàng)目。對(duì)所有致力于改進(jìn)應(yīng)用程序安全的人士開放秃臣,旨在提高對(duì)應(yīng)用程序安全性的認(rèn)識(shí)涧衙。
其最具權(quán)威的就是“10項(xiàng)最嚴(yán)重的Web 應(yīng)用程序安全風(fēng)險(xiǎn)列表” 哪工,總結(jié)并更新Web應(yīng)用程序中最可能、最常見(jiàn)弧哎、最危險(xiǎn)的十大漏洞雁比,是開發(fā)、測(cè)試撤嫩、服務(wù)偎捎、咨詢?nèi)藛T應(yīng)知應(yīng)會(huì)的知識(shí)。
最重要的版本
應(yīng)用程序中最嚴(yán)重的十大風(fēng)險(xiǎn)
A1 注入漏洞
在 2013序攘、2017 的版本中都是第一名茴她,可見(jiàn)此漏洞的引入是多么的容易,同時(shí)也證明此漏洞的危害有多么嚴(yán)重程奠。
攻擊方式
利用應(yīng)用程序弱點(diǎn)丈牢,通過(guò)惡意字符將惡意代碼寫入數(shù)據(jù)庫(kù),獲取敏感數(shù)據(jù)或進(jìn)一步在服務(wù)器執(zhí)行命令瞄沙。
漏洞原因
未審計(jì)的數(shù)據(jù)輸入框
使用網(wǎng)址直接傳遞變量
未過(guò)濾的特殊字符
SQL 錯(cuò)誤回顯
漏洞影響
獲取敏感數(shù)據(jù)或進(jìn)一步在服務(wù)器執(zhí)行命令接管服務(wù)器
SQL 注入
其實(shí)注入有很多類型己沛,常見(jiàn)的注入包括:SQL、OS 命令距境、ORM申尼、LDAP和表達(dá)式語(yǔ)言或者 OGNL 注入,對(duì)于應(yīng)用解釋器來(lái)說(shuō)這些概念都是相同的垫桂。對(duì)于最常見(jiàn)的SQL注入晶姊,后端開發(fā)人員經(jīng)常會(huì)拼接 SQL 查詢;在不經(jīng)意間就引入了 SQL 注入漏洞伪货。
一個(gè)例子
select * from users where pwd='輸入字符'
-- 惡意代繞過(guò) ' or 1=1 --'
select * from uses where pwd = '' or 1=1 --'
SQL 注入工具
作為最強(qiáng)大的 SQL 注入工具们衙,這里要介紹下基于 python開發(fā)的 SQLmap,SQLmap 支持對(duì) PostgreSql碱呼,MySQL蒙挑,Access,MsSql Server 等數(shù)據(jù)庫(kù)的自動(dòng)化注入愚臀。是在檢查SQL注入漏洞方面最得力的工具忆蚀。
SQL 注入防護(hù)
關(guān)閉 SQL 錯(cuò)誤回顯
前端輸入字符白名單驗(yàn)證(長(zhǎng)度、類型等)
對(duì)輸入的特殊字符使用轉(zhuǎn)義處理
SQL 操作使用 PreParedStatement
SQL 服務(wù)運(yùn)行于專門的賬號(hào)姑裂,并且使用最小權(quán)限
限制 SQL 服務(wù)的遠(yuǎn)程訪問(wèn)馋袜,只開放給特定開發(fā)人員
代碼審計(jì),最有效的檢測(cè)應(yīng)用程序的注入風(fēng)險(xiǎn)的方法之一
使用成熟的 waf
A2 失效的身份認(rèn)證
攻擊方式
攻擊者利用網(wǎng)站應(yīng)用程序中的身份認(rèn)證缺陷獲取高權(quán)限并進(jìn)行攻擊應(yīng)用服務(wù)
漏洞原因
應(yīng)用程序身份認(rèn)證系統(tǒng)認(rèn)證缺陷
漏洞影響
盜用賬號(hào)與身份
常見(jiàn)設(shè)計(jì)缺陷
修改利用網(wǎng)絡(luò)協(xié)議數(shù)據(jù)包獲取使用者賬號(hào)密碼
網(wǎng)站設(shè)計(jì)不良舶斧,可直接繞過(guò)驗(yàn)證頁(yè)面
使用者忘記注銷欣鳖,而讓攻擊者有可趁之機(jī)
弱密碼
弱密碼攻擊
身份認(rèn)證非常容易受到弱密碼攻擊,常用的弱密碼攻擊方式有
常用密碼攻擊 - 使用泄露的密碼字典攻擊
使用公司名稱縮寫茴厉、域名泽台、電話號(hào)碼
全數(shù)字什荣、英文的簡(jiǎn)單密碼
賬號(hào)與密碼相同的
不同網(wǎng)站、電腦怀酷、APP 使用了相同的密碼
漏洞防護(hù)
網(wǎng)站的登錄頁(yè)面就使用加密連接
網(wǎng)站應(yīng)該具體良好的權(quán)限控制與管理
網(wǎng)站應(yīng)該具備超時(shí)注銷機(jī)制
A3 敏感數(shù)據(jù)泄露
攻擊方式
常見(jiàn)的攻擊方式主要是掃描應(yīng)用程序獲取到敏感數(shù)據(jù)
漏洞原因
應(yīng)用維護(hù)或者開發(fā)人員無(wú)意間上傳敏感數(shù)據(jù)稻爬,如 github 文件泄露
敏感數(shù)據(jù)文件的權(quán)限設(shè)置錯(cuò)誤,如網(wǎng)站目錄下的數(shù)據(jù)庫(kù)備份文件泄露
網(wǎng)絡(luò)協(xié)議蜕依、算法本身的弱點(diǎn)桅锄,如 telent、ftp样眠、md5 等
漏洞影響
應(yīng)用程序竞滓、網(wǎng)站被修改
個(gè)人資料、公司資料泄露吹缔,被用于售賣獲利
漏洞防護(hù)
對(duì)于 github 泄露商佑,定期對(duì)倉(cāng)庫(kù)掃描
對(duì)于應(yīng)用網(wǎng)站目錄定期掃描
使用強(qiáng)壯的網(wǎng)絡(luò)協(xié)議與算法
A4 XML 外部實(shí)體漏洞
攻擊方式
當(dāng)應(yīng)用程序解析 XML文件時(shí)包含了對(duì)外部實(shí)體的引用,攻擊者傳遞惡意包含 XML 代碼的文件厢塘,讀取指定的服務(wù)器資源茶没。
漏洞原因
XML 協(xié)議文檔本身的設(shè)計(jì)特性,可以引入外部的資源晚碾;定義 XML 文件時(shí)使用的外部實(shí)體引入功能
漏洞影響
讀取服務(wù)器敏感資料抓半,如、/etc/password
讀取應(yīng)用程序源碼
漏洞防護(hù)
關(guān)閉 DTD (Data Type Definition)
- 禁止外部實(shí)體引入
A5 無(wú)效的訪問(wèn)控制
攻擊方式
沒(méi)有檢查身份格嘁,直接導(dǎo)致攻擊者繞過(guò)權(quán)限直接訪問(wèn)
漏洞原因
漏洞影響
繞過(guò)路徑笛求,如未讀取的參數(shù)做檢查,導(dǎo)致路徑繞過(guò)讀取到敏感文件
權(quán)限提升糕簿,如未對(duì)權(quán)限做檢查探入,導(dǎo)致攻擊者變更權(quán)限
- 垂直越權(quán),攻擊者可以從普通的用戶權(quán)限提升到管理員的權(quán)限訪問(wèn)應(yīng)用程序
- 水平越權(quán)懂诗,攻擊者可以從普通用戶A的權(quán)限提升到普通用戶B的權(quán)限訪問(wèn)應(yīng)用程序
漏洞防護(hù)
對(duì)參數(shù)的白名單過(guò)濾
對(duì)權(quán)限的控制管理重新設(shè)計(jì)與限制
限制下載文件的類型
A6 安全配置錯(cuò)誤
攻擊方式
攻擊者利用錯(cuò)誤配置攻擊蜂嗽,獲取敏感數(shù)據(jù)或者提升權(quán)限
漏洞原因
開發(fā)或者維護(hù)人員設(shè)置了錯(cuò)誤的配置,如 python 開發(fā)中對(duì)于 Django 框架在生產(chǎn)環(huán)境啟用了 Debug 模式
漏洞影響
可讓攻擊者獲取到敏感數(shù)據(jù)
可讓攻擊者提升權(quán)限殃恒,如未修改應(yīng)用程序配置的默認(rèn)密碼植旧,未刪除應(yīng)用程序安裝程序目錄文件等
目錄遍歷
Debug 模式
漏洞防護(hù)
應(yīng)用程序上傳權(quán)限檢查
- 檢查文件擴(kuò)展名
- 重命名上傳文件
- 控制上傳文件的權(quán)限,如關(guān)閉執(zhí)行權(quán)限
移除不使用的頁(yè)面离唐,如安裝目錄文件
移除臨時(shí)文件病附、備份文件
不使用簡(jiǎn)單的命名規(guī)則,防止猜測(cè)
定義白名單
A7 跨站腳本攻擊
攻擊方式
攻擊者使用惡意字符嵌入應(yīng)用程序代碼中并運(yùn)行亥鬓,盜取應(yīng)用程序數(shù)據(jù)
常見(jiàn)攻擊 payload
><script>alert(document.cookie)</script>='><script>alert(document.cookie)</script>"><script>alert(document.cookie)</script><script>alert(document.cookie)</script><script>alert (vulnerable)</script>%3Cscript%3Ealert('XSS')%3C/script%3E<script>alert('XSS')</script><img src="javascript:alert('XSS')"><img src="http://888.888.com/999.png" onerror="alert('XSS')"><div style="height:expression(alert('XSS'),1)"></div>(這個(gè)僅于IE7(含)之前有效)
漏洞原因
應(yīng)用程序未對(duì)應(yīng)用輸入做過(guò)濾與檢查完沪,導(dǎo)致用戶數(shù)據(jù)被當(dāng)作代碼執(zhí)行。
漏洞影響
欺騙使用者點(diǎn)擊嵌入了惡意網(wǎng)站的正常網(wǎng)站贮竟,獲取使用得的敏感數(shù)據(jù)
盜取使用者 cookie丽焊,冒用使用者身份
漏洞防護(hù)
驗(yàn)證輸入/接收的字符较剃,過(guò)濾或者替換非法字符
使用白名單機(jī)制
A8 不安全的反序列化漏洞
攻擊方式
攻擊者利用應(yīng)用程序反序列化功能咕别,反序列化惡意對(duì)象攻擊應(yīng)用程序技健。
漏洞原因
應(yīng)用程序在反序列化數(shù)據(jù)對(duì)象時(shí),執(zhí)行了攻擊者傳遞的惡意數(shù)據(jù)對(duì)象
漏洞影響
最嚴(yán)重情況下惰拱,可導(dǎo)致遠(yuǎn)程代碼執(zhí)行 RCE
注入攻擊
越權(quán)
漏洞防護(hù)
對(duì)數(shù)據(jù)對(duì)象簽名雌贱,并作完整檢查
數(shù)據(jù)對(duì)象中的數(shù)據(jù)做嚴(yán)格的類型檢查,限制一部分惡意攻擊
隔離反序列化操作環(huán)境
A9 使用含有已知漏洞的組件
攻擊方式
利用應(yīng)用程序技術(shù)棧中的框架偿短、庫(kù)欣孤、工具等的已知漏洞進(jìn)行攻擊,獲取高權(quán)限或者敏感數(shù)據(jù)
漏洞原因
應(yīng)用程序技術(shù)棧中使用的框架昔逗、庫(kù)降传、工具爆出了漏洞,應(yīng)用程序未能及時(shí)更新與修復(fù)
漏洞影響
敏感數(shù)據(jù)泄露
提升權(quán)限
遠(yuǎn)程代碼執(zhí)行
漏洞防護(hù)
及時(shí)更新勾怒、修復(fù)組件漏洞
移除不再使用的依賴組件
A10 日志記錄和監(jiān)控不足導(dǎo)致的風(fēng)險(xiǎn)
漏洞原因
對(duì)于日志記錄的監(jiān)控不足婆排,造成攻擊者攻擊系統(tǒng)、應(yīng)用笔链、盜取數(shù)據(jù)等操作無(wú)法被發(fā)現(xiàn)和追查段只。
漏洞影響
無(wú)法判斷安全事件的發(fā)生
無(wú)法判斷和修復(fù)漏洞
導(dǎo)致再次被入侵
漏洞防護(hù)
啟用日志監(jiān)控、告警機(jī)制
啟用異地監(jiān)控鉴扫,C/S架構(gòu)的監(jiān)制機(jī)制
盡可能的完整記錄所有日志
參考
http://www.owasp.org.cn/owasp-project/2017-owasp-top-10
http://www.owasp.org.cn/owasp-project/2013top10