網(wǎng)站被SQL注入防范(WebKnight)
發(fā)布日期:2022-01-30 10:31 | 文章來(lái)源:CSDN
網(wǎng)站被“成功”注入,網(wǎng)站一些頁(yè)面被插入了下載病毒的代碼,經(jīng)查:
生產(chǎn)服務(wù)器的代碼沒(méi)有任何被改動(dòng)過(guò)的跡象,排除服務(wù)器被入侵,代碼被篡改的可能;
有病毒下載代碼的部分,在數(shù)據(jù)庫(kù)里真實(shí)看到了篡改跡象,可以排除ARP欺騙的可能;
同上,能確定網(wǎng)站被SQL注入攻擊了,因?yàn)閿?shù)據(jù)庫(kù)被篡改了。
由于是被攻擊后馬上發(fā)現(xiàn)的現(xiàn)象,可以判斷攻擊此刻應(yīng)該正在繼續(xù)(后來(lái)檢查的結(jié)果證明的確是這樣),如何能盡快阻止攻擊呢?我有2個(gè)思路(如果各位有更好的思路,期待您的指點(diǎn)):
馬上找到含有SQL注入漏洞的程序,修復(fù)之;
馬上增加一個(gè)應(yīng)用程序防火墻(Application Firewall),從HTTP請(qǐng)求時(shí)就阻斷攻擊。
第一個(gè)思路幾乎是不可能馬上完成的任務(wù),第二個(gè)思路還可行,因?yàn)榍岸螘r(shí)間上海天存信息技術(shù)有限公司曾提供給我們?cè)囉胕Wall應(yīng)用防火墻(正式產(chǎn)品是收費(fèi)的),還記得當(dāng)時(shí)一位朋友提供給我的開(kāi)源應(yīng)用程序防火墻WebKnight,我信賴開(kāi)源,所以我選擇了后者。
如何在IIS6中安裝WebKnight?
我們的 WebServer 是 IIS6,所以這里只介紹IIS6的安裝,我見(jiàn)有些帖子介紹WebKnight的安裝時(shí),說(shuō)只有把IIS調(diào)整成IIS5.0隔離模式(IIS5.0 isolation mode)才可以,但實(shí)際上WebKnight的官方網(wǎng)站有介紹不需要此操作即可安裝的辦法,但這需要放棄WebKnight的全局配置特性,相比放棄IIS6.0,我更愿意放棄WebKnight的這個(gè)特性:
首先下載一份WebKnight,下載地址:http://aqtronix.com/?PageID=99#Download(注,這不是直接下載地址,點(diǎn)開(kāi)后需要再點(diǎn)擊WebKnight 2.2 (Release date: 2008.09.02),以防更新后各位朋友還下載舊的版本)
解壓后有2個(gè)目錄Setup、Source,其中Source是源碼,我們這里只需要安裝,進(jìn)入Setup
進(jìn)入Setup后還有2個(gè)目錄:w32代表32位;x64代表64位;按照您服務(wù)器的操作系統(tǒng)來(lái)選擇即可,我這里選x64(由于WebKnight的32位、64位文件結(jié)構(gòu)完全相同,所以下面的內(nèi)容完全適用與32位操作系統(tǒng))
確保自己的每一個(gè)網(wǎng)站都運(yùn)行在獨(dú)立的應(yīng)用程序池中;
在WebKnight的配置程序中
取消選擇“Global Filter Capabilities”下的“Is Installed As Global Filter”
選擇“Logging”下的“Per Process Logging”,這樣每一個(gè)應(yīng)用程序池的實(shí)例都會(huì)加載一個(gè)單獨(dú)的WebKnight實(shí)例
確保Windows用戶NETWORK SERVICE(或您設(shè)定的應(yīng)用程序池的其他用戶)有WebKnight文件夾的修改權(quán)限
拷貝第3步中x64文件夾中的所有文件到服務(wù)器上(如:F:\WebKnight\WebSite1\),注意:每一個(gè)網(wǎng)站均需要一個(gè)獨(dú)立完整的WebKnight,不可共用
打開(kāi)IIS Manager
在需要安裝WebKnight的網(wǎng)站上點(diǎn)擊右鍵 > 屬性 > ISAPI filters
點(diǎn)擊添加 > Filter Name隨意,如(WebKnight),Excutable選擇WebKnight目錄下的WebKnight.dll(注意:要選網(wǎng)站所屬的WebKnight目錄,不要選錯(cuò))
點(diǎn)擊確定,完成安裝
點(diǎn)擊WebKnight目錄中的Config.exe,具體配置方法見(jiàn)下一節(jié),配置完成后再進(jìn)行下一步,切記
在以上操作后,重新啟動(dòng)IIS(重啟IIS其實(shí)可以避免,只需將配置WebKnight的網(wǎng)站的應(yīng)用程序池停止再啟動(dòng)即可)
如何配置WebKnight
聲明:由于WebKnight的配置很多,這里我只寫(xiě)一下推薦配置,個(gè)人觀點(diǎn),僅供參考,如果更好的建議,期待您的分享
在WebKnight目錄中(如:F:\WebKnight\WebSite1\),雙擊Config.exe開(kāi)始配置,在彈出的Open Configuration對(duì)話框中,選擇WebKnight.xml
Scanning Engine 掃描引擎
無(wú)需更改默認(rèn)配置
Incident Response Handling 已發(fā)生攻擊的處理
如果您希望有人攻擊時(shí)看到的頁(yè)面是WebKnight目錄中的denied.htm,選擇Response Directly即可;
如果您希望有人攻擊時(shí)看到的頁(yè)面是您網(wǎng)站下的某個(gè)文件(如:http://www.xxx.com/Error/Denied.htm),選擇Response Redirect,并在下面的Response Redirect URL中填寫(xiě)您網(wǎng)站下文件的路徑(如:/Error/Denied.htm)
如果您只希望記錄攻擊,但不希望中斷用戶的訪問(wèn),您可以選擇Response Log Only
Logging 日志
如果日志量特別大,請(qǐng)取消選擇Enabled,否則很有可能磁盤(pán)可用空間不知不覺(jué)就沒(méi)有了,還有可能有比較嚴(yán)重的磁盤(pán)I/O性能問(wèn)題
日志默認(rèn)是存儲(chǔ)在WebKnight目錄下的LogFiles文件夾中,如果您想改變?cè)撀窂剑梢孕薷腖og Directory的值
WebKnight每天的日志是由不同文件存儲(chǔ)的,默認(rèn)保存28天的數(shù)據(jù),您可以在Log Retention中修改該值
Connection 連接
無(wú)需更改默認(rèn)配置
Authentication 安全認(rèn)證
無(wú)需更改默認(rèn)配置
Request Limits 請(qǐng)求限制
取消選擇Limit Content Length(Content-Length是header中的一個(gè)值,代表所請(qǐng)求元素的尺寸),我個(gè)人覺(jué)得這項(xiàng)沒(méi)有必要選擇,因?yàn)樵爻叽缬锌赡芎艽?
取消選擇Limit URL(即限制URL的長(zhǎng)度),原因同上,URL也可能很長(zhǎng)
取消選擇Limit Query String(即查詢字符串的長(zhǎng)度),原因同上,查詢字符串也可能很長(zhǎng)
取消選擇Limit HTTP Version(即HTTP版本),我感覺(jué)沒(méi)有必要限制HTTP版本,有可能會(huì)造成使用過(guò)舊版本瀏覽器的用戶無(wú)法訪問(wèn)自己的網(wǎng)站
取消選擇Use Max Headers(即限制Headers中各項(xiàng)的最大長(zhǎng)度)。我一開(kāi)始是選擇了該項(xiàng)的,但在我的實(shí)踐中,由于我們用了網(wǎng)站流量統(tǒng)計(jì)、廣告合作代碼等,導(dǎo)致Headers中的一些項(xiàng)超長(zhǎng),阻止了相當(dāng)多的正常請(qǐng)求,所以我想干脆一勞永逸,取消選擇了該項(xiàng)
URL Scanning 網(wǎng)址掃描
取消選擇RFC Compliant URL、RFC Compliant HTTP Url、Deny Url HighBitShellCode,勾選了這三項(xiàng),很多不太標(biāo)準(zhǔn)的URL格式就會(huì)無(wú)法訪問(wèn),比如包含中文的URL
取消選擇Deny URL Backslash,因?yàn)槲覀兙W(wǎng)站中,“\”在URL里面也會(huì)用到
在URL Denied Sequences中,描述了拒絕請(qǐng)求的一些URL字符串,如果其中有您網(wǎng)站中正在使用的,可以刪除,方法是選中要?jiǎng)h除的項(xiàng)目,右鍵,點(diǎn)擊Remove Selected
Mapped Path 映射目錄
Use Allowed Paths,這項(xiàng)保持勾選,因?yàn)檫@項(xiàng)可以限制Web程序可以訪問(wèn)的服務(wù)器上的物理路徑,我們需要做的只是在下面的Allowed Paths中添加上我們自己的網(wǎng)站物理路徑,比如F:\WebSite1,添加方法是在任意項(xiàng)上點(diǎn)擊右鍵 > Insert Item > 輸入物理路徑后,回車(chē)即可
Requested File 被請(qǐng)求的文件
在Denied Files(拒絕請(qǐng)求的文件)中,去掉網(wǎng)站允許請(qǐng)求的文件,如:log.htm、logfiles
在Denied Extensions(拒絕請(qǐng)求的后綴名)中,去掉網(wǎng)站循序請(qǐng)求的后綴名,如:shtm
Robots 蜘蛛程序
無(wú)需更改默認(rèn)配置
Headers 頭信息
Server Header中,可以修改Header中的Server字段的值,我覺(jué)得這個(gè)也可以改改,挺好玩的
為了防止組織合法的請(qǐng)求,取消勾選RFC Compliant Host Header、Use Denied Headers
ContentType 內(nèi)容類型
取消選擇Use Allowed Content Types,若選中,則無(wú)法上傳文件
Cookie 這個(gè)就不需要翻譯成中文了吧:)
無(wú)需更改默認(rèn)配置
User Agent 用戶代理/客戶端
取消勾選Deny User Agent Empty、Deny User Agent Non RFC,否則有部分合法訪問(wèn)會(huì)被拒絕
Referrer 訪問(wèn)來(lái)路
取消選擇Use Referrer Scanning,因?yàn)槲矣X(jué)得一個(gè)訪問(wèn)的來(lái)路可能不會(huì)有太嚴(yán)重的安全問(wèn)題,還是為了盡量讓合法的請(qǐng)求通過(guò),我選擇取消勾選該項(xiàng)
Methods HTTP請(qǐng)求方法
無(wú)需更改默認(rèn)配置
Querystring 查詢字符串
無(wú)需更改默認(rèn)配置
Global Filter Capabilities 全局過(guò)濾功能
取消勾選Is Installed As Global Filter,切記,該項(xiàng)一定要取消選擇,否則WebKnight不能正產(chǎn)工作
SQL Injection SQL 注入
無(wú)需更改默認(rèn)配置
Web Applications Web應(yīng)用程序
勾選Allow File Uploads,否則上傳文件的功能會(huì)失效
勾選Allow Unicode
勾選Allow ASP NET
如果您的網(wǎng)站需要支持ASP,勾選Allow ASP
同理,您的網(wǎng)站需要支持什么,請(qǐng)您自己選擇需要勾選的項(xiàng)
修改后,記得通過(guò)菜單欄File > Save 來(lái)保存配置(或通過(guò)快捷鍵Ctrl+S),保存配置后,就可以重啟IIS或應(yīng)用程序池來(lái)啟用WebKnight了
提示:您可以通過(guò)查看WebKnight的日志,來(lái)查看哪些合法請(qǐng)求被阻止了,然后修改相應(yīng)的配置
生產(chǎn)服務(wù)器的代碼沒(méi)有任何被改動(dòng)過(guò)的跡象,排除服務(wù)器被入侵,代碼被篡改的可能;
有病毒下載代碼的部分,在數(shù)據(jù)庫(kù)里真實(shí)看到了篡改跡象,可以排除ARP欺騙的可能;
同上,能確定網(wǎng)站被SQL注入攻擊了,因?yàn)閿?shù)據(jù)庫(kù)被篡改了。
由于是被攻擊后馬上發(fā)現(xiàn)的現(xiàn)象,可以判斷攻擊此刻應(yīng)該正在繼續(xù)(后來(lái)檢查的結(jié)果證明的確是這樣),如何能盡快阻止攻擊呢?我有2個(gè)思路(如果各位有更好的思路,期待您的指點(diǎn)):
馬上找到含有SQL注入漏洞的程序,修復(fù)之;
馬上增加一個(gè)應(yīng)用程序防火墻(Application Firewall),從HTTP請(qǐng)求時(shí)就阻斷攻擊。
第一個(gè)思路幾乎是不可能馬上完成的任務(wù),第二個(gè)思路還可行,因?yàn)榍岸螘r(shí)間上海天存信息技術(shù)有限公司曾提供給我們?cè)囉胕Wall應(yīng)用防火墻(正式產(chǎn)品是收費(fèi)的),還記得當(dāng)時(shí)一位朋友提供給我的開(kāi)源應(yīng)用程序防火墻WebKnight,我信賴開(kāi)源,所以我選擇了后者。
如何在IIS6中安裝WebKnight?
我們的 WebServer 是 IIS6,所以這里只介紹IIS6的安裝,我見(jiàn)有些帖子介紹WebKnight的安裝時(shí),說(shuō)只有把IIS調(diào)整成IIS5.0隔離模式(IIS5.0 isolation mode)才可以,但實(shí)際上WebKnight的官方網(wǎng)站有介紹不需要此操作即可安裝的辦法,但這需要放棄WebKnight的全局配置特性,相比放棄IIS6.0,我更愿意放棄WebKnight的這個(gè)特性:
首先下載一份WebKnight,下載地址:http://aqtronix.com/?PageID=99#Download(注,這不是直接下載地址,點(diǎn)開(kāi)后需要再點(diǎn)擊WebKnight 2.2 (Release date: 2008.09.02),以防更新后各位朋友還下載舊的版本)
解壓后有2個(gè)目錄Setup、Source,其中Source是源碼,我們這里只需要安裝,進(jìn)入Setup
進(jìn)入Setup后還有2個(gè)目錄:w32代表32位;x64代表64位;按照您服務(wù)器的操作系統(tǒng)來(lái)選擇即可,我這里選x64(由于WebKnight的32位、64位文件結(jié)構(gòu)完全相同,所以下面的內(nèi)容完全適用與32位操作系統(tǒng))
確保自己的每一個(gè)網(wǎng)站都運(yùn)行在獨(dú)立的應(yīng)用程序池中;
在WebKnight的配置程序中
取消選擇“Global Filter Capabilities”下的“Is Installed As Global Filter”
選擇“Logging”下的“Per Process Logging”,這樣每一個(gè)應(yīng)用程序池的實(shí)例都會(huì)加載一個(gè)單獨(dú)的WebKnight實(shí)例
確保Windows用戶NETWORK SERVICE(或您設(shè)定的應(yīng)用程序池的其他用戶)有WebKnight文件夾的修改權(quán)限
拷貝第3步中x64文件夾中的所有文件到服務(wù)器上(如:F:\WebKnight\WebSite1\),注意:每一個(gè)網(wǎng)站均需要一個(gè)獨(dú)立完整的WebKnight,不可共用
打開(kāi)IIS Manager
在需要安裝WebKnight的網(wǎng)站上點(diǎn)擊右鍵 > 屬性 > ISAPI filters
點(diǎn)擊添加 > Filter Name隨意,如(WebKnight),Excutable選擇WebKnight目錄下的WebKnight.dll(注意:要選網(wǎng)站所屬的WebKnight目錄,不要選錯(cuò))
點(diǎn)擊確定,完成安裝
點(diǎn)擊WebKnight目錄中的Config.exe,具體配置方法見(jiàn)下一節(jié),配置完成后再進(jìn)行下一步,切記
在以上操作后,重新啟動(dòng)IIS(重啟IIS其實(shí)可以避免,只需將配置WebKnight的網(wǎng)站的應(yīng)用程序池停止再啟動(dòng)即可)
如何配置WebKnight
聲明:由于WebKnight的配置很多,這里我只寫(xiě)一下推薦配置,個(gè)人觀點(diǎn),僅供參考,如果更好的建議,期待您的分享
在WebKnight目錄中(如:F:\WebKnight\WebSite1\),雙擊Config.exe開(kāi)始配置,在彈出的Open Configuration對(duì)話框中,選擇WebKnight.xml
Scanning Engine 掃描引擎
無(wú)需更改默認(rèn)配置
Incident Response Handling 已發(fā)生攻擊的處理
如果您希望有人攻擊時(shí)看到的頁(yè)面是WebKnight目錄中的denied.htm,選擇Response Directly即可;
如果您希望有人攻擊時(shí)看到的頁(yè)面是您網(wǎng)站下的某個(gè)文件(如:http://www.xxx.com/Error/Denied.htm),選擇Response Redirect,并在下面的Response Redirect URL中填寫(xiě)您網(wǎng)站下文件的路徑(如:/Error/Denied.htm)
如果您只希望記錄攻擊,但不希望中斷用戶的訪問(wèn),您可以選擇Response Log Only
Logging 日志
如果日志量特別大,請(qǐng)取消選擇Enabled,否則很有可能磁盤(pán)可用空間不知不覺(jué)就沒(méi)有了,還有可能有比較嚴(yán)重的磁盤(pán)I/O性能問(wèn)題
日志默認(rèn)是存儲(chǔ)在WebKnight目錄下的LogFiles文件夾中,如果您想改變?cè)撀窂剑梢孕薷腖og Directory的值
WebKnight每天的日志是由不同文件存儲(chǔ)的,默認(rèn)保存28天的數(shù)據(jù),您可以在Log Retention中修改該值
Connection 連接
無(wú)需更改默認(rèn)配置
Authentication 安全認(rèn)證
無(wú)需更改默認(rèn)配置
Request Limits 請(qǐng)求限制
取消選擇Limit Content Length(Content-Length是header中的一個(gè)值,代表所請(qǐng)求元素的尺寸),我個(gè)人覺(jué)得這項(xiàng)沒(méi)有必要選擇,因?yàn)樵爻叽缬锌赡芎艽?
取消選擇Limit URL(即限制URL的長(zhǎng)度),原因同上,URL也可能很長(zhǎng)
取消選擇Limit Query String(即查詢字符串的長(zhǎng)度),原因同上,查詢字符串也可能很長(zhǎng)
取消選擇Limit HTTP Version(即HTTP版本),我感覺(jué)沒(méi)有必要限制HTTP版本,有可能會(huì)造成使用過(guò)舊版本瀏覽器的用戶無(wú)法訪問(wèn)自己的網(wǎng)站
取消選擇Use Max Headers(即限制Headers中各項(xiàng)的最大長(zhǎng)度)。我一開(kāi)始是選擇了該項(xiàng)的,但在我的實(shí)踐中,由于我們用了網(wǎng)站流量統(tǒng)計(jì)、廣告合作代碼等,導(dǎo)致Headers中的一些項(xiàng)超長(zhǎng),阻止了相當(dāng)多的正常請(qǐng)求,所以我想干脆一勞永逸,取消選擇了該項(xiàng)
URL Scanning 網(wǎng)址掃描
取消選擇RFC Compliant URL、RFC Compliant HTTP Url、Deny Url HighBitShellCode,勾選了這三項(xiàng),很多不太標(biāo)準(zhǔn)的URL格式就會(huì)無(wú)法訪問(wèn),比如包含中文的URL
取消選擇Deny URL Backslash,因?yàn)槲覀兙W(wǎng)站中,“\”在URL里面也會(huì)用到
在URL Denied Sequences中,描述了拒絕請(qǐng)求的一些URL字符串,如果其中有您網(wǎng)站中正在使用的,可以刪除,方法是選中要?jiǎng)h除的項(xiàng)目,右鍵,點(diǎn)擊Remove Selected
Mapped Path 映射目錄
Use Allowed Paths,這項(xiàng)保持勾選,因?yàn)檫@項(xiàng)可以限制Web程序可以訪問(wèn)的服務(wù)器上的物理路徑,我們需要做的只是在下面的Allowed Paths中添加上我們自己的網(wǎng)站物理路徑,比如F:\WebSite1,添加方法是在任意項(xiàng)上點(diǎn)擊右鍵 > Insert Item > 輸入物理路徑后,回車(chē)即可
Requested File 被請(qǐng)求的文件
在Denied Files(拒絕請(qǐng)求的文件)中,去掉網(wǎng)站允許請(qǐng)求的文件,如:log.htm、logfiles
在Denied Extensions(拒絕請(qǐng)求的后綴名)中,去掉網(wǎng)站循序請(qǐng)求的后綴名,如:shtm
Robots 蜘蛛程序
無(wú)需更改默認(rèn)配置
Headers 頭信息
Server Header中,可以修改Header中的Server字段的值,我覺(jué)得這個(gè)也可以改改,挺好玩的
為了防止組織合法的請(qǐng)求,取消勾選RFC Compliant Host Header、Use Denied Headers
ContentType 內(nèi)容類型
取消選擇Use Allowed Content Types,若選中,則無(wú)法上傳文件
Cookie 這個(gè)就不需要翻譯成中文了吧:)
無(wú)需更改默認(rèn)配置
User Agent 用戶代理/客戶端
取消勾選Deny User Agent Empty、Deny User Agent Non RFC,否則有部分合法訪問(wèn)會(huì)被拒絕
Referrer 訪問(wèn)來(lái)路
取消選擇Use Referrer Scanning,因?yàn)槲矣X(jué)得一個(gè)訪問(wèn)的來(lái)路可能不會(huì)有太嚴(yán)重的安全問(wèn)題,還是為了盡量讓合法的請(qǐng)求通過(guò),我選擇取消勾選該項(xiàng)
Methods HTTP請(qǐng)求方法
無(wú)需更改默認(rèn)配置
Querystring 查詢字符串
無(wú)需更改默認(rèn)配置
Global Filter Capabilities 全局過(guò)濾功能
取消勾選Is Installed As Global Filter,切記,該項(xiàng)一定要取消選擇,否則WebKnight不能正產(chǎn)工作
SQL Injection SQL 注入
無(wú)需更改默認(rèn)配置
Web Applications Web應(yīng)用程序
勾選Allow File Uploads,否則上傳文件的功能會(huì)失效
勾選Allow Unicode
勾選Allow ASP NET
如果您的網(wǎng)站需要支持ASP,勾選Allow ASP
同理,您的網(wǎng)站需要支持什么,請(qǐng)您自己選擇需要勾選的項(xiàng)
修改后,記得通過(guò)菜單欄File > Save 來(lái)保存配置(或通過(guò)快捷鍵Ctrl+S),保存配置后,就可以重啟IIS或應(yīng)用程序池來(lái)啟用WebKnight了
提示:您可以通過(guò)查看WebKnight的日志,來(lái)查看哪些合法請(qǐng)求被阻止了,然后修改相應(yīng)的配置
版權(quán)聲明:本站文章來(lái)源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請(qǐng)保持原文完整并注明來(lái)源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來(lái)源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來(lái),僅供學(xué)習(xí)參考,不代表本站立場(chǎng),如有內(nèi)容涉嫌侵權(quán),請(qǐng)聯(lián)系alex-e#qq.com處理。
相關(guān)文章