偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

聊聊針對(duì)Web應(yīng)用的SQL注入攻擊與應(yīng)對(duì)策略

原創(chuàng) 精選
開(kāi)發(fā) 前端 SQL Server
近年來(lái),隨著人們使用Web應(yīng)用的與日俱增,各種與在線(xiàn)交易和通信相關(guān)的大量個(gè)人數(shù)據(jù)被存儲(chǔ)在其后端的數(shù)據(jù)庫(kù)中。對(duì)于那些由數(shù)據(jù)庫(kù)驅(qū)動(dòng)的Web應(yīng)用而言,SQL注入攻擊是一種相當(dāng)嚴(yán)重的安全風(fēng)險(xiǎn)。

作者 | 陳峻

審校 | 重樓

引言

近年來(lái),隨著人們使用Web應(yīng)用的與日俱增,各種與在線(xiàn)交易和通信相關(guān)的大量個(gè)人數(shù)據(jù)被存儲(chǔ)在其后端的數(shù)據(jù)庫(kù)中。對(duì)于那些由數(shù)據(jù)庫(kù)驅(qū)動(dòng)的Web應(yīng)用而言,SQL注入攻擊是一種相當(dāng)嚴(yán)重的安全風(fēng)險(xiǎn)。攻擊者可以通過(guò)利用系統(tǒng)漏洞,繞過(guò)應(yīng)用防火墻,未經(jīng)授權(quán)地訪(fǎng)問(wèn)到底層數(shù)據(jù)庫(kù),并竊取各種敏感的數(shù)據(jù)信息。因此,我們需要制定一套針對(duì)SQL注入攻擊的有效應(yīng)對(duì)措施,來(lái)提高Web應(yīng)用的整體安全態(tài)勢(shì)。

基本概念

作為一種典型的攻擊形式,SQL注入(簡(jiǎn)稱(chēng)SQLi)通常會(huì)使用惡意SQL代碼,來(lái)操縱后端數(shù)據(jù)庫(kù),獲取機(jī)密信息和數(shù)據(jù)庫(kù)管理員權(quán)限,進(jìn)而盜取用戶(hù)列表、以及破壞整個(gè)數(shù)據(jù)庫(kù)。目前,根據(jù)訪(fǎng)問(wèn)后端數(shù)據(jù)的方法和潛在危害,我們可以將SQL注入分為:

  • 向字符串或字符參數(shù)直接注入,如:SELECT * from table where example = 'Example'
  • 對(duì)數(shù)字參數(shù)予以注入,如:SELECT * from table where id = 123而根據(jù)數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS)和注入條件的漏洞類(lèi)型,我們又可以將SQL注入分為:經(jīng)典的帶內(nèi)SQLi、盲猜式的推理SQLi、以及險(xiǎn)招式的帶外SQLi。其中:

帶內(nèi)SQLi

當(dāng)攻擊者可以使用同一通信通道,實(shí)施攻擊并收集攻擊結(jié)果時(shí),這種攻擊就被稱(chēng)為帶內(nèi)SQL注入。作為一種最流行、最直接的攻擊,帶內(nèi)SQL注入又包括:基于錯(cuò)誤的SQL注入和基于聯(lián)合的SQL注入兩種最常見(jiàn)的形式。

  • 基于錯(cuò)誤的SQL注入使用數(shù)據(jù)庫(kù)服務(wù)器的錯(cuò)誤信息,來(lái)收集有關(guān)數(shù)據(jù)庫(kù)結(jié)構(gòu)的信息。畢竟,在Web應(yīng)用的實(shí)時(shí)運(yùn)行過(guò)程中,各種錯(cuò)誤會(huì)被記錄到安全文件中,那么攻擊者便可以通過(guò)枚舉來(lái)遍歷整個(gè)數(shù)據(jù)庫(kù)。
  • 基于聯(lián)合的SQL注入是將兩到多個(gè)SELECT查詢(xún)的結(jié)果合并為一個(gè)結(jié)果,然后作為HTTP響應(yīng)的一部分予以發(fā)送。

推理SQLi

與帶內(nèi)SQL注入相比,推理SQL注入的攻擊時(shí)間更長(zhǎng)。攻擊者可以通過(guò)發(fā)送有效負(fù)載、分析Web應(yīng)用的響應(yīng)、以及數(shù)據(jù)庫(kù)服務(wù)器的相應(yīng)行為,來(lái)重新創(chuàng)建數(shù)據(jù)庫(kù)結(jié)構(gòu)。由于無(wú)法獲取Web應(yīng)用傳遞的數(shù)據(jù),因此攻擊者無(wú)法查看到類(lèi)似帶內(nèi)攻擊的結(jié)果。而且,由于攻擊者需要逐個(gè)字符地枚舉數(shù)據(jù)庫(kù),因此在攻擊大型數(shù)據(jù)庫(kù)時(shí),其效率比較低下。

目前,推理SQL注入也包含:基于盲布爾的SQL注入和基于盲時(shí)間的SQL注入兩種形式。

  • 基于盲布爾的SQL注入旨在讓Web應(yīng)用根據(jù)查詢(xún),返回的“真”或“假”不同的答案。
  • 盲時(shí)間的SQL注入通過(guò)查詢(xún),使得數(shù)據(jù)庫(kù)在響應(yīng)前等待指定的時(shí)間(以秒為單位)。那么根據(jù)HTTP響應(yīng)是有延遲、還是能即時(shí)給出,攻擊者就能確定查詢(xún)結(jié)果是“真”還是“假”。

帶外SQLi

由于依賴(lài)的是在Web應(yīng)用數(shù)據(jù)庫(kù)服務(wù)器上已啟用的功能,因此帶外SQL注入并不常見(jiàn)。

應(yīng)對(duì)措施

通常,Web應(yīng)用防火墻(簡(jiǎn)稱(chēng)WAF)可以通過(guò)篩選和監(jiān)控Web應(yīng)用與互聯(lián)網(wǎng)之間的HTTP流量,以及時(shí)發(fā)現(xiàn)跨站偽造、跨站腳本、文件包含和SQL注入等常見(jiàn)攻擊。在OSI模型中,WAF工作在第七層。作為一種反向代理,它往往被安裝在Web應(yīng)用的前端,從而在客戶(hù)端請(qǐng)求到達(dá)服務(wù)器之前形成一道中間件式的屏障。和其他防火墻類(lèi)似,WAF也需要通過(guò)一系列規(guī)則與策略的集合,來(lái)過(guò)濾惡意請(qǐng)求,進(jìn)而防范應(yīng)用漏洞被利用。目前,經(jīng)常被部署到Web應(yīng)用系統(tǒng)中的WAF類(lèi)型包括:軟件型WAF、硬件型WAF、云WAF、以及Web應(yīng)用內(nèi)置的WAF服務(wù)。

上圖展示的是WAF防范SQL注入的邏輯過(guò)程??梢?jiàn),WAF強(qiáng)大之處在于,它可以快速、方便地執(zhí)行策略,并按需變更規(guī)則,從而對(duì)各種攻擊性請(qǐng)求做出更快的反應(yīng)。

攻擊檢測(cè)

那么,WAF到底是遵循一個(gè)什么樣的流程來(lái)對(duì)攻擊進(jìn)行檢測(cè)的呢?下面我們以一個(gè)典型的軟件型WAF為例,來(lái)深入探究。

  • 首先,在接收到用戶(hù)提交的數(shù)據(jù)請(qǐng)求后,WAF會(huì)根據(jù)既有的白名單進(jìn)行合法性檢查。如果已被涵括在白名單之內(nèi),它直接轉(zhuǎn)發(fā)給后端的Web服務(wù)器予以響應(yīng)處理;如果落入了黑名單,則立即拒絕數(shù)據(jù)請(qǐng)求的通過(guò);而如果既不在白名單、也不在黑名單(也就是我們常說(shuō)的“灰名單”)內(nèi),則要進(jìn)行數(shù)據(jù)包的解析。
  • 解析后的數(shù)據(jù)包會(huì)被拿去與我們前面提到的規(guī)則策略進(jìn)行匹配,如果符合規(guī)則,則可以交給后端的Web服務(wù)器予以響應(yīng)處理;如果不符合,則被判定為惡意攻擊,進(jìn)而執(zhí)行相應(yīng)的警告、阻斷、以及留下記錄,以便后續(xù)分析之用。
  • 作為一個(gè)閉環(huán),安全團(tuán)隊(duì)需要從WAF的記錄中,獲取諸如:攻擊源的IP地址、攻擊目標(biāo)的URL等實(shí)用信息,以便進(jìn)行后續(xù)的安全分析或策略調(diào)整。

WAF繞過(guò)

我們常說(shuō)“道高一尺,魔高一丈”,針對(duì)WAF在產(chǎn)品設(shè)計(jì)和部署配置上的參差不齊,SQL注入攻擊者時(shí)常會(huì)運(yùn)用各種手段來(lái)繞過(guò)WAF,達(dá)到攻擊目的。例如,由于不同的WAF產(chǎn)品會(huì)自定義不同的警告頁(yè)面,因此攻擊者可以根據(jù)不同的頁(yè)面信息,來(lái)辨別出Web應(yīng)用使用了哪一款WAF,從而制定出相應(yīng)的能夠繞過(guò)WAF的數(shù)據(jù)請(qǐng)求特征。下面便是該領(lǐng)域的一些典型威脅與漏洞:

  • 參數(shù)篡改:攻擊者使用那些對(duì)于目標(biāo)Web應(yīng)用根本不存在的參數(shù),從安全性較低的數(shù)據(jù)庫(kù)中獲取異常信息。
  • 參數(shù)化查詢(xún):攻擊者頻繁地使用多種參數(shù)化查詢(xún)方式,增加SQL注入漏洞被利用的可能性。
  • 頁(yè)面擴(kuò)展的可見(jiàn)性:根據(jù)顯示頁(yè)面擴(kuò)展出的可見(jiàn)信息,攻擊者可以猜測(cè)出Web應(yīng)用可能用到的技術(shù)與組件。
  • SQL版本泄露:攻擊者可以通過(guò)定位SQL的版本,去查找并利用相應(yīng)類(lèi)型的SQL漏洞。
  • 可猜測(cè)的表名/列名:典型且常用的表名或列名,往往是攻擊者執(zhí)行漏洞查找的突破口。
  • 空字節(jié)編碼:攻擊者可以通過(guò)在其提供的數(shù)據(jù)中添加URL編碼的空字節(jié)字符,來(lái)繞過(guò)WAF過(guò)濾器的完整性檢查。
  • 信任憑據(jù)截獲:攻擊者可以通過(guò)截獲安全性較低的Web應(yīng)用的用戶(hù)憑據(jù),達(dá)到曲線(xiàn)注入的效果。

此外,常見(jiàn)的WAF繞過(guò)方法還有:關(guān)鍵字替換,特殊符號(hào)與編碼,利用注釋?zhuān)貜?fù)參數(shù)污染,緩沖區(qū)溢出,以及利用多種繞過(guò)技術(shù)打“組合拳”,通過(guò)未經(jīng)授權(quán)地訪(fǎng)問(wèn)Web應(yīng)用的系統(tǒng)文件,進(jìn)而改變預(yù)期運(yùn)行邏輯。

小結(jié)

綜上所述,針對(duì)Web應(yīng)用的SQL注入攻擊與應(yīng)對(duì),好似一個(gè)永無(wú)止境的“貓鼠游戲”。我們只有通過(guò)持續(xù)檢測(cè),持續(xù)跟蹤,持續(xù)調(diào)整,持續(xù)更新,以及持續(xù)引入新的防御技術(shù),才能更加靈活地應(yīng)對(duì)SQL注入、遠(yuǎn)程代碼執(zhí)行(RCE)、以及跨站點(diǎn)腳本(XSS)等復(fù)雜多變的攻擊,才能在這場(chǎng)安全競(jìng)賽中占得先機(jī)。

作者介紹

陳峻(Julian Chen),51CTO社區(qū)編輯,具有十多年的IT項(xiàng)目實(shí)施經(jīng)驗(yàn),善于對(duì)內(nèi)外部資源與風(fēng)險(xiǎn)實(shí)施管控,專(zhuān)注傳播網(wǎng)絡(luò)與信息安全知識(shí)與經(jīng)驗(yàn)。

責(zé)任編輯:華軒 來(lái)源: 51CTO
相關(guān)推薦

2024-07-17 21:12:50

2021-12-31 16:10:46

穩(wěn)定幣數(shù)字貨幣貨幣

2010-09-08 13:10:03

2012-10-09 15:50:19

IPv6

2024-07-29 00:01:00

RabbitMQ消息堆積

2013-11-11 11:24:35

2010-09-30 12:53:10

2017-04-27 20:45:48

爬蟲(chóng)反爬蟲(chóng)

2010-09-27 13:33:26

JVM異常

2011-05-24 10:02:47

2014-06-04 17:35:12

2013-12-16 11:18:42

多核

2010-11-29 10:11:05

Sybase數(shù)據(jù)庫(kù)死鎖

2025-04-03 08:23:00

機(jī)器身份安全網(wǎng)絡(luò)安全機(jī)器身份

2010-09-14 16:00:16

2024-07-18 07:04:30

2024-07-01 09:00:16

2021-02-26 10:51:18

云安全云計(jì)算網(wǎng)絡(luò)安全

2024-01-29 10:34:37

Java編程

2010-10-18 17:58:49

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)