您可能知道SQL 注入(SQLi) 攻擊是最古老、最普遍和最致命的 Web 應(yīng)用程序漏洞,并且可能知道如何防止利用 SQLi 漏洞的攻擊。然而,盡管做出了這些努力,您的 Web 應(yīng)用程序/網(wǎng)站可能仍容易受到 SQL 盲注(SQLi 漏洞的一種子類(lèi)型)的攻擊。在本文中,我們將深入探討盲 SQLi 攻擊、盲 SQL 注入類(lèi)型以及如何預(yù)防它們。

當(dāng)后端數(shù)據(jù)庫(kù)將攻擊者輸入的數(shù)據(jù)解釋為 SQL 命令,而不是用戶輸入的正常數(shù)據(jù)時(shí),就會(huì)發(fā)生盲 SQL 注入攻擊。通常,攻擊者會(huì)利用顯示一般錯(cuò)誤消息的 Web 應(yīng)用程序,而不會(huì)緩解 SQLi 易受攻擊的代碼。攻擊者向此類(lèi)易受攻擊的應(yīng)用程序的后端數(shù)據(jù)庫(kù)詢問(wèn)真假問(wèn)題,并根據(jù)應(yīng)用程序的響應(yīng)確定是否存在 SQL 注入。
Blind SQLi 和經(jīng)典 SQLi 之間的主要區(qū)別在于攻擊者從后端數(shù)據(jù)庫(kù)檢索數(shù)據(jù)的方式。在經(jīng)典的 SQLi 攻擊中,攻擊者可以在 Web 應(yīng)用程序中看到數(shù)據(jù)庫(kù)錯(cuò)誤或惡意 SQLi 命令的輸出。當(dāng)數(shù)據(jù)庫(kù)不顯示錯(cuò)誤消息或輸出惡意命令時(shí),攻擊者通過(guò)向后端數(shù)據(jù)庫(kù)詢問(wèn)一系列正確或錯(cuò)誤的問(wèn)題來(lái)竊取數(shù)據(jù),并查看應(yīng)用程序或頁(yè)面是否正確加載,花費(fèi)時(shí)間來(lái)處理 SQL查詢或其他此類(lèi)更改。盲注 SQL 注入耗時(shí)且難以利用,但并非不可能,并且會(huì)為攻擊者產(chǎn)生類(lèi)似的結(jié)果。
前任;
以下申請(qǐng)網(wǎng)址
http://www.example.com/item.php?id=2
這會(huì)將以下內(nèi)容作為數(shù)據(jù)庫(kù)中的請(qǐng)求發(fā)送。
從 ID = 2 的項(xiàng)目中選擇標(biāo)題、描述、正文
然后攻擊者將以下內(nèi)容作為查詢注入;
http://www.example.com/item.php?id=2 和 1=2
結(jié)果 SQL 查詢是這樣的;
從 ID = 2 和 1=2 的項(xiàng)目中選擇標(biāo)題、描述、正文
上述查詢將是一個(gè)錯(cuò)誤的結(jié)果,因此應(yīng)用程序?qū)⒉粫?huì)顯示任何數(shù)據(jù)輸出;而在注入真實(shí)陳述時(shí);該應(yīng)用程序?qū)@示一些數(shù)據(jù)。
通過(guò)比較收到的輸出;可以斷定存在 SQL 注入攻擊,
Microsoft SQL Server 使用“WAIT FOR DELAY '0:0:10''
PostgreSQL 使用 pg_sleep()
盲目 SQLi 攻擊的影響
盲目 SQLi 攻擊的影響類(lèi)似于經(jīng)典的 SQL 注入攻擊。它使攻擊者可以訪問(wèn)和控制后端數(shù)據(jù)庫(kù)服務(wù)器。他們能
防止盲目的 SQLi 攻擊
需要注意的是,利用盲 SQLi 漏洞所需的技能和工具可能與經(jīng)典 SQLi 漏洞有很大不同,但針對(duì)各種 SQL 注入的預(yù)防技術(shù)非常相似。很多時(shí)候,開(kāi)發(fā)人員在保護(hù) Web 應(yīng)用程序免受經(jīng)典 SQLi 漏洞攻擊方面缺乏根據(jù)、考慮不周和努力薄弱會(huì)導(dǎo)致盲目的 SQLi 漏洞。例如,關(guān)閉錯(cuò)誤報(bào)告。
確保安全編碼實(shí)踐
無(wú)論您使用什么語(yǔ)言,您使用的編碼實(shí)踐都必須與 OWASP 安全編碼指南同步。大多數(shù) Web 開(kāi)發(fā)平臺(tái)都提供了避免所有 SQL 注入的機(jī)制。使用參數(shù)化查詢而不是動(dòng)態(tài)查詢(詳情如下)。請(qǐng)記住實(shí)施來(lái)自所有用戶輸入字段(評(píng)論、聯(lián)系表等)的特殊字符的白名單。并使用輸入編碼。
考慮使用數(shù)據(jù)庫(kù)層訪問(wèn) (DAL),因?yàn)樗鼓軌蚣刑幚韱?wèn)題或?qū)ο箨P(guān)系映射 (ORM) 系統(tǒng),因?yàn)樗鼈儍H使用參數(shù)化查詢。無(wú)論哪種情況,都可以根據(jù)這些新庫(kù)轉(zhuǎn)換所有遺留代碼。
使用參數(shù)化查詢
不惜一切代價(jià)避免動(dòng)態(tài) SQL 查詢,而是使用參數(shù)化查詢。參數(shù)化查詢是準(zhǔn)備好的語(yǔ)句,使您能夠有效且穩(wěn)健地減輕盲目 SQL 注入。因此,找到所有動(dòng)態(tài) SQL 查詢并將它們轉(zhuǎn)換為參數(shù)化查詢。
全面智能的安全掃描工具必備
使用全面且智能的安全掃描工具,定期掃描您的 Web 應(yīng)用程序(從開(kāi)發(fā)階段開(kāi)始)以識(shí)別可能導(dǎo)致 SQLi 攻擊的新錯(cuò)誤和漏洞。
加入托管且強(qiáng)大的安全解決方案
掃描只能識(shí)別差距和漏洞。為了保護(hù)您的 Web 應(yīng)用程序免受這些攻擊,需要保護(hù)和修補(bǔ)這些漏洞,直到它們被修復(fù)。加入強(qiáng)大的托管安全解決方案,如 AppTrana,它提供智能托管 WAF、定期安全審計(jì)、滲透測(cè)試和認(rèn)證安全專(zhuān)家的服務(wù),以確保您的應(yīng)用程序始終安全,免受包括盲 SQLi 在內(nèi)的漏洞的侵害。