你不知道這10個(gè)Web安全漏洞,就別說自己是黑客
OWASP或Open Web Security Project是一家非營利性慈善組織,致力于提高軟件和Web應(yīng)用程序的安全性。
- 該組織根據(jù)來自各種安全組織的數(shù)據(jù)發(fā)布頂級(jí)Web安全漏洞列表。
- 根據(jù)可利用性,可檢測性和對(duì)軟件的影響,Web安全漏洞具有優(yōu)先級(jí)。
- 可開發(fā)性 -
- 利用安全漏洞需要什么?當(dāng)攻擊僅需要Web瀏覽器且最低級(jí)別是高級(jí)編程和工具時(shí),可攻擊性最高。
- 可檢測性 -
- 檢測威脅有多容易?最高的是顯示在URL,表單或錯(cuò)誤消息上的信息,最低的是源代碼。
- 影響或損壞 -
- 如果安全漏洞暴露或受到攻擊,將會(huì)造成多大的破壞?最高的是完整的系統(tǒng)崩潰,最低的是什么都沒有。
OWASP Top 10的主要目標(biāo)是向開發(fā)人員,設(shè)計(jì)人員,經(jīng)理,架構(gòu)師和組織介紹最重要的安全漏洞。
你不知道這10個(gè)Web安全漏洞,就別說自己是黑客
根據(jù)OWASP Top 10,十大安全漏洞是:
- SQL Injection(SQL注入)
- Cross Site Scripting(xss跨站腳本)
- Broken Authentication and Session Management(身份驗(yàn)證和會(huì)話管理中斷)
- Insecure Direct Object References(不安全的直接對(duì)象引用)
- Cross Site Request Forgery(跨站點(diǎn)請(qǐng)求偽造)
- Security Misconfiguration(安全配置錯(cuò)誤)
- Insecure Cryptographic Storage(不安全的加密存儲(chǔ))
- Failure to restrict URL Access(無法限制URL訪問)
- Insufficient Transport Layer Protection(傳輸層保護(hù)不足)
- Unvalidated Redirects and Forwards(未經(jīng)驗(yàn)證的重定向和轉(zhuǎn)發(fā))
SQL注入
描述
SQL注入是一個(gè)安全漏洞,允許攻擊者通過操縱用戶提供的數(shù)據(jù)來更改后端SQL語句。
當(dāng)用戶輸入作為命令或查詢的一部分被發(fā)送到解釋器并且欺騙解釋器執(zhí)行非預(yù)期的命令并且允許訪問未授權(quán)的數(shù)據(jù)時(shí),發(fā)生注入。
由Web應(yīng)用程序執(zhí)行時(shí)的SQL命令也可以公開后端數(shù)據(jù)庫。
意義
- 攻擊者可以將惡意內(nèi)容注入易受攻擊的字段。
- 可以從數(shù)據(jù)庫中讀取敏感數(shù)據(jù),如用戶名,密碼等。
- 可以修改數(shù)據(jù)庫數(shù)據(jù)(插入/更新/刪除)。
- 管理操作可以在數(shù)據(jù)庫上執(zhí)行
易受攻擊的對(duì)象
- 輸入字段
- 與數(shù)據(jù)庫交互的URL。
例子:
- 登錄頁面上的SQL注入
在沒有有效憑據(jù)的情況下登錄應(yīng)用程序。
有效的userName可用,密碼不可用。
測試網(wǎng)址:http://demo.testfire.net/default.aspx
用戶名:sjones
密碼:1 = 1'或pass123
創(chuàng)建SQL查詢并將其發(fā)送到Interpreter,如下所示
SELECT * FROM Users WHERE User_Name = sjones AND Password = 1 = 1'或pass123;
建議
- 白名單列出輸入字段
- 避免顯示對(duì)攻擊者有用的詳細(xì)錯(cuò)誤消息。
xss跨站腳本
描述
Cross Site Scripting也簡稱為XSS。
XSS漏洞針對(duì)嵌入在客戶端(即用戶瀏覽器而不是服務(wù)器端)的頁面中嵌入的腳本。當(dāng)應(yīng)用程序獲取不受信任的數(shù)據(jù)并將其發(fā)送到Web瀏覽器而未經(jīng)適當(dāng)驗(yàn)證時(shí),可能會(huì)出現(xiàn)這些缺陷。
在這種情況下受害者瀏覽器,攻擊者可以使用XSS對(duì)用戶執(zhí)行惡意腳本。由于瀏覽器無法知道腳本是否可靠,腳本將被執(zhí)行,攻擊者可以劫持會(huì)話cookie,破壞網(wǎng)站或?qū)⒂脩糁囟ㄏ虻讲恍枰膼阂饩W(wǎng)站。
XSS是一種攻擊,允許攻擊者在受害者的瀏覽器上執(zhí)行腳本。
意義:
- 利用此安全漏洞,攻擊者可以將腳本注入應(yīng)用程序,可以竊取會(huì)話cookie,破壞網(wǎng)站,并可以在受害者的計(jì)算機(jī)上運(yùn)行惡意軟件。
易受攻擊的對(duì)象
- 輸入字段
- 網(wǎng)址
例子
1. http://www.vulnerablesite.com/home?" < script > alert(" xss") </ script >
上述腳本在瀏覽器上運(yùn)行時(shí),如果站點(diǎn)易受XSS攻擊,將顯示一個(gè)消息框。
如果攻擊者想要顯示或存儲(chǔ)會(huì)話cookie,則可以進(jìn)行更嚴(yán)重的攻擊。
2. http://demo.testfire.net/search.aspx?txtSearch <iframe > <src = http://google.com width = 500 height 500> </ iframe>
上面的腳本運(yùn)行時(shí),瀏覽器會(huì)加載一個(gè)指向http://google.com的隱形框。
通過在瀏覽器上運(yùn)行惡意腳本可以使攻擊變得嚴(yán)重。
建議
- 白名單輸入字段
- 輸入輸出編碼
身份驗(yàn)證和會(huì)話管理中斷
描述
網(wǎng)站通常為每個(gè)有效會(huì)話創(chuàng)建會(huì)話cookie和會(huì)話ID,這些cookie包含敏感數(shù)據(jù),如用戶名,密碼等。當(dāng)會(huì)話通過注銷或?yàn)g覽器突然關(guān)閉結(jié)束時(shí),這些cookie應(yīng)該無效,即每個(gè)會(huì)話應(yīng)該有一個(gè)新的cookie。
如果cookie未失效,則敏感數(shù)據(jù)將存在于系統(tǒng)中。例如,使用公共計(jì)算機(jī)(Cyber Cafe)的用戶,易受攻擊的站點(diǎn)的cookie位于系統(tǒng)上并暴露給攻擊者。攻擊者在一段時(shí)間后使用相同的公共計(jì)算機(jī),敏感數(shù)據(jù)會(huì)受到損害。
以同樣的方式,用戶使用公共計(jì)算機(jī),而不是注銷,他突然關(guān)閉瀏覽器。攻擊者使用相同的系統(tǒng),當(dāng)瀏覽同一個(gè)易受攻擊的站點(diǎn)時(shí),受害者的上一個(gè)會(huì)話將被打開。攻擊者可以通過竊取個(gè)人資料信息,信用卡信息等做任何他想做的事情。
應(yīng)該進(jìn)行檢查以找到身份驗(yàn)證和會(huì)話管理的強(qiáng)度。密鑰,會(huì)話令牌,cookie應(yīng)該在不影響密碼的情況下正確實(shí)施。
易受攻擊的對(duì)象
- 在URL上公開的會(huì)話ID可能導(dǎo)致會(huì)話固定攻擊。
- 注銷和登錄前后的會(huì)話ID相同。
- 會(huì)話超時(shí)未正確實(shí)施。
- 應(yīng)用程序?yàn)槊總€(gè)新會(huì)話分配相同的會(huì)話ID。
- 應(yīng)用程序的經(jīng)過身份驗(yàn)證的部分使用SSL進(jìn)行保護(hù),密碼以散列或加密格式存儲(chǔ)。
- 會(huì)話可由低權(quán)限用戶重用。
意義
- 利用此漏洞,攻擊者可以劫持會(huì)話,對(duì)系統(tǒng)進(jìn)行未經(jīng)授權(quán)的訪問,從而允許泄露和修改未經(jīng)授權(quán)的信息。
- 使用盜取的cookie或使用XSS的會(huì)話可以高舉會(huì)話。
例子
- 航空公司預(yù)訂應(yīng)用程序支持URL重寫,將會(huì)話ID放在URL中:
- http://Examples.com/sale/saleitems;jsessionid=2P0OC2oJM0DPXSNQPLME34SERTBG/dest=Maldives(出售馬爾代夫門票)
- 該網(wǎng)站的經(jīng)過身份驗(yàn)證的用戶希望讓他的朋友了解該銷售并發(fā)送電子郵件。朋友收到會(huì)話ID,可用于進(jìn)行未經(jīng)授權(quán)的修改或?yàn)E用保存的信用卡詳細(xì)信息。
- 應(yīng)用程序容易受到XSS攻擊,攻擊者可以通過XSS訪問會(huì)話ID并可用于劫持會(huì)話。
- 應(yīng)用程序超時(shí)未正確設(shè)置。用戶使用公共計(jì)算機(jī)并關(guān)閉瀏覽器,而不是注銷并離開。攻擊者稍后使用相同的瀏覽器,并對(duì)會(huì)話進(jìn)行身份驗(yàn)證。
建議
- 應(yīng)根據(jù)OWASP應(yīng)用程序安全驗(yàn)證標(biāo)準(zhǔn)定義所有身份驗(yàn)證和會(huì)話管理要求。
- 永遠(yuǎn)不要在URL或日志中公開任何憑據(jù)。
- 還應(yīng)該做出很大的努力來避免可用于竊取會(huì)話ID的XSS漏洞。
不安全的直接對(duì)象引用
描述
當(dāng)開發(fā)人員公開對(duì)內(nèi)部實(shí)現(xiàn)對(duì)象的引用(例如URL或FORM參數(shù)中的文件,目錄或數(shù)據(jù)庫鍵)時(shí),就會(huì)發(fā)生這種情況。攻擊者可以使用此信息訪問其他對(duì)象,并可以創(chuàng)建將來的攻擊來訪問未經(jīng)授權(quán)的數(shù)據(jù)。
意義
- 使用此漏洞,攻擊者可以訪問未經(jīng)授權(quán)的內(nèi)部對(duì)象,可以修改數(shù)據(jù)或破壞應(yīng)用程序。
易受攻擊的對(duì)象
- 在URL中。
例子:
更改以下URL中的“userid”可以使攻擊者查看其他用戶的信息。
http://www.vulnerablesite.com/userid=123修改為http://www.vulnerablesite.com/userid=124
攻擊者可以通過更改用戶標(biāo)識(shí)值來查看其他信息。
建議:
- 實(shí)施訪問控制檢查。
- 避免在URL中公開對(duì)象引用。
- 驗(yàn)證對(duì)所有引用對(duì)象的授權(quán)。
csrf跨站點(diǎn)請(qǐng)求偽造
描述
Cross Site Request Forgery是來自跨站點(diǎn)的偽造請(qǐng)求。
CSRF攻擊是指惡意網(wǎng)站,電子郵件或程序?qū)е掠脩舻臑g覽器在用戶當(dāng)前已對(duì)其進(jìn)行身份驗(yàn)證的受信任站點(diǎn)上執(zhí)行不需要的操作時(shí)發(fā)生的攻擊。
CSRF攻擊強(qiáng)制登錄受害者的瀏覽器向易受攻擊的Web應(yīng)用程序發(fā)送偽造的HTTP請(qǐng)求,包括受害者的會(huì)話cookie和任何其他自動(dòng)包含的身份驗(yàn)證信息。
當(dāng)用戶在登錄原始網(wǎng)站時(shí)點(diǎn)擊URL時(shí),攻擊者將向受害者發(fā)送鏈接,該數(shù)據(jù)將從網(wǎng)站上被竊取。
意義
- 將此漏洞用作攻擊者可以更改用戶配置文件信息,更改狀態(tài),代表管理員創(chuàng)建新用戶等。
易受攻擊的對(duì)象
- 用戶檔案頁面
- 用戶帳戶表單
- 商業(yè)交易頁面
例子
受害者使用有效憑據(jù)登錄銀行網(wǎng)站。他收到攻擊者的郵件說“請(qǐng)點(diǎn)擊此處捐贈(zèng)1美元。”
當(dāng)受害者點(diǎn)擊它時(shí),將創(chuàng)建一個(gè)有效請(qǐng)求以向特定帳戶捐贈(zèng)1美元。
http://www.vulnerablebank.com/transfer.do?account=cause&amount=1
攻擊者捕獲此請(qǐng)求并創(chuàng)建以下請(qǐng)求,并嵌入一個(gè)按鈕,說“我支持原因”。
http://www.vulnerablebank.com/transfer.do?account=Attacker&amount=1000
由于會(huì)話已通過身份驗(yàn)證并且請(qǐng)求通過銀行網(wǎng)站發(fā)送,因此服務(wù)器將向攻擊者轉(zhuǎn)移1000美元。
建議
- 在執(zhí)行敏感操作時(shí)強(qiáng)制用戶在場。
- 實(shí)現(xiàn)CAPTCHA,重新認(rèn)證和唯一請(qǐng)求令牌等機(jī)制。
安全配置錯(cuò)誤
描述
必須為應(yīng)用程序,框架,應(yīng)用程序服務(wù)器,Web服務(wù)器,數(shù)據(jù)庫服務(wù)器和平臺(tái)定義和部署安全性配置。如果這些配置正確,攻擊者可能會(huì)未經(jīng)授權(quán)訪問敏感數(shù)據(jù)或功能。
有時(shí)這種缺陷會(huì)導(dǎo)致系統(tǒng)完全妥協(xié)。保持軟件最新也是很好的安全性。
意義
- 利用此漏洞,攻擊者可以枚舉底層技術(shù)和應(yīng)用程序服務(wù)器版本信息,數(shù)據(jù)庫信息并獲取有關(guān)應(yīng)用程序的信息以進(jìn)行更多攻擊。
易受攻擊的對(duì)象
- 網(wǎng)址
- 表格字段
- 輸入字段
例子
- 應(yīng)用程序服務(wù)器管理控制臺(tái)將自動(dòng)安裝,不會(huì)被刪除。默認(rèn)帳戶不會(huì)更改。攻擊者可以使用默認(rèn)密碼登錄,并可以獲得未經(jīng)授權(quán)的訪問。
- 您的服務(wù)器上未禁用目錄列表。攻擊者發(fā)現(xiàn)并可以簡單地列出目錄以查找任何文件。
建議
- 強(qiáng)大的應(yīng)用程序架構(gòu),可在組件之間提供良好的分離和安全性。
- 更改默認(rèn)用戶名和密碼。
- 禁用目錄列表并實(shí)施訪問控制檢查。
不安全的加密存儲(chǔ)
描述
不安全的加密存儲(chǔ)是一種常見的漏洞,在敏感數(shù)據(jù)未安全存儲(chǔ)時(shí)存在。
用戶憑據(jù),配置文件信息,健康詳細(xì)信息,信用卡信息等屬于網(wǎng)站上的敏感數(shù)據(jù)信息。
該數(shù)據(jù)將存儲(chǔ)在應(yīng)用程序數(shù)據(jù)庫中。如果不使用加密或散列*來不正確地存儲(chǔ)此數(shù)據(jù),則它將容易受到攻擊者的攻擊。
(* Hashing是將字符串字符轉(zhuǎn)換為固定長度或密鑰的較短字符串。要解密字符串,用于形成密鑰的算法應(yīng)該可用)
意義
- 通過使用此漏洞,攻擊者可以竊取,修改此類受弱保護(hù)的數(shù)據(jù),以進(jìn)行身份盜用,信用卡欺詐或其他犯罪。
易受攻擊的對(duì)象
- 應(yīng)用數(shù)據(jù)庫。
例子
在其中一個(gè)銀行應(yīng)用程序中,密碼數(shù)據(jù)庫使用未加保留的哈希*來存儲(chǔ)每個(gè)人的密碼。SQL注入漏洞允許攻擊者檢索密碼文件。所有未加鹽的哈希都可以在任何時(shí)候強(qiáng)行進(jìn)行,而鹽漬的密碼則需要數(shù)千年的時(shí)間。
(*無鹽哈希 - 鹽是附加到原始數(shù)據(jù)的隨機(jī)數(shù)據(jù)。在哈希之前將鹽附加到密碼)
建議
- 確保適當(dāng)?shù)膹?qiáng)標(biāo)準(zhǔn)算法。不要?jiǎng)?chuàng)建自己的加密算法。僅使用經(jīng)過批準(zhǔn)的公共算法,如AES,RSA公鑰加密和SHA-256等。
- 確保異地備份已加密,但密鑰是單獨(dú)管理和備份的。
無法限制URL訪問
描述
Web應(yīng)用程序在呈現(xiàn)受保護(hù)的鏈接和按鈕之前檢查URL訪問權(quán)限 每次訪問這些頁面時(shí),應(yīng)用程序都需要執(zhí)行類似的訪問控制檢查。
在大多數(shù)應(yīng)用程序中,特權(quán)頁面,位置和資源不會(huì)呈現(xiàn)給特權(quán)用戶。
通過智能猜測,攻擊者可以訪問權(quán)限頁面。攻擊者可以訪問敏感頁面,調(diào)用函數(shù)和查看機(jī)密信息。
意義
- 利用此漏洞攻擊者可以訪問未經(jīng)授權(quán)的URL,而無需登錄應(yīng)用程序并利用此漏洞。攻擊者可以訪問敏感頁面,調(diào)用函數(shù)和查看機(jī)密信息。
易受攻擊的對(duì)象:
- 網(wǎng)址
例子
- 攻擊者注意到URL表示角色為“/ user / getaccounts”。他修改為“/ admin / getaccounts”。
- 攻擊者可以將角色附加到URL。
http://www.vulnerablsite.com可以修改為http://www.vulnerablesite.com/admin
建議
- 實(shí)施強(qiáng)大的訪問控制檢查。
- 身份驗(yàn)證和授權(quán)策略應(yīng)基于角色。
- 限制對(duì)不需要的URL的訪問。
傳輸層保護(hù)不足
描述
處理用戶(客戶端)和服務(wù)器(應(yīng)用程序)之間的信息交換。應(yīng)用程序經(jīng)常通過網(wǎng)絡(luò)傳輸敏感信息,如身份驗(yàn)證詳細(xì)信息,信用卡信息和會(huì)話令牌。
通過使用弱算法或使用過期或無效的證書或不使用SSL,可以允許將通信暴露給不受信任的用戶,這可能會(huì)危及Web應(yīng)用程序和/或竊取敏感信息。
意義
- 利用此Web安全漏洞,攻擊者可以嗅探合法用戶的憑據(jù)并獲取對(duì)該應(yīng)用程序的訪問權(quán)限。
- 可以竊取信用卡信息。
易受攻擊的對(duì)象
- 通過網(wǎng)絡(luò)發(fā)送的數(shù)據(jù)。
建議
- 啟用安全HTTP并僅通過HTTPS強(qiáng)制執(zhí)行憑據(jù)傳輸。
- 確保您的證書有效且未過期。
例子:
1.不使用SSL的應(yīng)用程序,攻擊者只會(huì)監(jiān)視網(wǎng)絡(luò)流量并觀察經(jīng)過身份驗(yàn)證的受害者會(huì)話cookie。攻擊者可以竊取該cookie并執(zhí)行Man-in-the-Middle攻擊。
未經(jīng)驗(yàn)證的重定向和轉(zhuǎn)發(fā)
描述
Web應(yīng)用程序使用很少的方法將用戶重定向并轉(zhuǎn)發(fā)到其他頁面以實(shí)現(xiàn)預(yù)期目的。
如果在重定向到其他頁面時(shí)沒有正確的驗(yàn)證,攻擊者可以利用此功能,并可以將受害者重定向到網(wǎng)絡(luò)釣魚或惡意軟件站點(diǎn),或者使用轉(zhuǎn)發(fā)來訪問未經(jīng)授權(quán)的頁面。
意義
- 攻擊者可以向用戶發(fā)送包含附加編碼惡意URL的真實(shí)URL的URL。用戶只需看到攻擊者發(fā)送的URL的真實(shí)部分就可以瀏覽它并可能成為受害者。
例子
1. http://www.vulnerablesite.com/login.aspx?redirectURL=ownsite.com
修改為
http://www.vulnerablesite.com/login.aspx?redirectURL=evilsite.com
建議
只需避免在應(yīng)用程序中使用重定向和轉(zhuǎn)發(fā)。如果使用,請(qǐng)不要在計(jì)算目的地時(shí)使用用戶參數(shù)。
如果無法避免目標(biāo)參數(shù),請(qǐng)確保提供的值有效,并為用戶授權(quán)。