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