SQL注入防范(WebKnight)

5、开源 Web 应用防火墙评估 本文评估了两款主流开源Web应用防火墙——ModSecurity v3.0.4与AQTRONIX Webknight v4.4在检测SQL注入、跨站脚本(XSS)和XML外部实体(XXE)等常见Web攻击方面的有效性。通过使用Payloads All The Things和CSIC HTTP 2010数据集进行实验,分析其召回率、精确率、F1值和误报率等指标。结果显示,AQTRONIX Webknight在已知攻击检测上表现优异,召回率达98.5%以上,但误报率高达99.6%;ModSecurity的性能依 阅读详情

写在前面

 

我写本文的目的,是和各位分享一下内容篡改式攻击的判断方法、SQL注入攻击的防范、以及被攻击后的补救(数据恢复)相关知识,如有谬误,期待您的指正。

前言

 

2009年9月5日中午1点,历史会记住这个时刻,我们网站被“成功”攻击了,网站一些页面被插入了下载病毒的代码,经查:

生产服务器的代码没有任何被改动过的迹象,排除服务器被入侵,代码被篡改的可能;

有病毒下载代码的部分,在数据库里真实看到了篡改迹象,可以排除ARP欺骗的可能;

同上,能确定网站被SQL注入攻击了,因为数据库被篡改了。

由于是被攻击后马上发现的现象,可以判断攻击此刻应该正在继续(后来检查的结果证明的确是这样),如何能尽快阻止攻击呢?我有2个思路(如果各位有更好的思路,期待您的指点):

马上找到含有SQL注入漏洞的程序,修复之;

马上增加一个应用程序防火墙(Application Firewall),从HTTP请求时就阻断攻击。

第一个思路几乎是不可能马上完成的任务,第二个思路还可行,因为前段时间上海天存信息技术有限公司曾提供给我们试用iWall应用防火墙(正式产品是收费的),还记得当时一位朋友提供给我的开源应用程序防火墙WebKnight,我信赖开源,所以我选择了后者。

如何在IIS6中安装WebKnight?

 

我们的 WebServer 是 IIS6,所以这里只介绍IIS6的安装,我见有些帖子介绍WebKnight的安装时,说只有把IIS调整成IIS5.0隔离模式(IIS5.0 isolation mode)才可以,但实际上WebKnight的官方网站有介绍不需要此操作即可安装的办法,但这需要放弃WebKnight的全局配置特性,相比放弃IIS6.0,我更愿意放弃WebKnight的这个特性:

首先下载一份WebKnight,下载地址:http://aqtronix.com/?PageID=99#Download(注,这不是直接下载地址,点开后需要再点击WebKnight 2.2 (Release date: 2008.09.02),以防更新后各位朋友还下载旧的版本)

解压后有2个目录Setup、Source,其中Source是源码,我们这里只需要安装,进入Setup

进入Setup后还有2个目录:w32代表32位;x64代表64位;按照您服务器的操作系统来选择即可,我这里选x64(由于WebKnight的32位、64位文件结构完全相同,所以下面的内容完全适用与32位操作系统)

确保自己的每一个网站都运行在独立的应用程序池中;

在WebKnight的配置程序中

取消选择“Global Filter Capabilities”下的“Is Installed As Global Filter”

选择“Logging”下的“Per Process Logging”,这样每一个应用程序池的实例都会加载一个单独的WebKnight实例

确保Windows用户NETWORK SERVICE(或您设定的应用程序池的其他用户)有WebKnight文件夹的修改权限

拷贝第3步中x64文件夹中的所有文件到服务器上(如:F:/WebKnight/WebSite1/),注意:每一个网站均需要一个独立完整的WebKnight,不可共用

打开IIS Manager

在需要安装WebKnight的网站上点击右键 > 属性 > ISAPI filters

点击添加 > Filter Name随意,如(WebKnight),Excutable选择WebKnight目录下的WebKnight.dll(注意:要选网站所属的WebKnight目录,不要选错)

点击确定,完成安装

点击WebKnight目录中的Config.exe,具体配置方法见下一节,配置完成后再进行下一步,切记

在以上操作后,重新启动IIS(重启IIS其实可以避免,只需将配置WebKnight的网站的应用程序池停止再启动即可)

如何配置WebKnight

 

声明:由于WebKnight的配置很多,这里我只写一下推荐配置,个人观点,仅供参考,如果更好的建议,期待您的分享

在WebKnight目录中(如:F:/WebKnight/WebSite1/),双击Config.exe开始配置,在弹出的Open Configuration对话框中,选择WebKnight.xml

Scanning Engine 扫描引擎

无需更改默认配置

Incident Response Handling 已发生攻击的处理

如果您希望有人攻击时看到的页面是WebKnight目录中的denied.htm,选择Response Directly即可;

如果您希望有人攻击时看到的页面是您网站下的某个文件(如:http://www.xxx.com/Error/Denied.htm),选择Response Redirect,并在下面的Response Redirect URL中填写您网站下文件的路径(如:/Error/Denied.htm)

如果您只希望记录攻击,但不希望中断用户的访问,您可以选择Response Log Only

Logging 日志

如果日志量特别大,请取消选择Enabled,否则很有可能磁盘可用空间不知不觉就没有了,还有可能有比较严重的磁盘I/O性能问题

日志默认是存储在WebKnight目录下的LogFiles文件夹中,如果您想改变该路径,可以修改Log Directory的值

WebKnight每天的日志是由不同文件存储的,默认保存28天的数据,您可以在Log Retention中修改该值

Connection 连接

无需更改默认配置

Authentication 安全认证

无需更改默认配置

Request Limits 请求限制

取消选择Limit Content Length(Content-Length是header中的一个值,代表所请求元素的尺寸),我个人觉得这项没有必要选择,因为元素尺寸有可能很大

取消选择Limit URL(即限制URL的长度),原因同上,URL也可能很长

取消选择Limit Query String(即查询字符串的长度),原因同上,查询字符串也可能很长

取消选择Limit HTTP Version(即HTTP版本),我感觉没有必要限制HTTP版本,有可能会造成使用过旧版本浏览器的用户无法访问自己的网站

取消选择Use Max Headers(即限制Headers中各项的最大长度)。我一开始是选择了该项的,但在我的实践中,由于我们用了网站流量统计、广告合作代码等,导致Headers中的一些项超长,阻止了相当多的正常请求,所以我想干脆一劳永逸,取消选择了该项

URL Scanning 网址扫描

取消选择RFC Compliant URL、RFC Compliant HTTP Url、Deny Url HighBitShellCode,勾选了这三项,很多不太标准的URL格式就会无法访问,比如包含中文的URL

取消选择Deny URL Backslash,因为我们网站中,“/”在URL里面也会用到

在URL Denied Sequences中,描述了拒绝请求的一些URL字符串,如果其中有您网站中正在使用的,可以删除,方法是选中要删除的项目,右键,点击Remove Selected

Mapped Path 映射目录

Use Allowed Paths,这项保持勾选,因为这项可以限制Web程序可以访问的服务器上的物理路径,我们需要做的只是在下面的Allowed Paths中添加上我们自己的网站物理路径,比如F:/WebSite1,添加方法是在任意项上点击右键 > Insert Item > 输入物理路径后,回车即可

Requested File 被请求的文件

在Denied Files(拒绝请求的文件)中,去掉网站允许请求的文件,如:log.htm、logfiles

在Denied Extensions(拒绝请求的后缀名)中,去掉网站循序请求的后缀名,如:shtm

Robots 蜘蛛程序

无需更改默认配置

Headers 头信息

Server Header中,可以修改Header中的Server字段的值,我觉得这个也可以改改,挺好玩的

为了防止组织合法的请求,取消勾选RFC Compliant Host Header、Use Denied Headers

ContentType 内容类型

取消选择Use Allowed Content Types,若选中,则无法上传文件

Cookie 这个就不需要翻译成中文了吧:)

无需更改默认配置

User Agent 用户代理/客户端

取消勾选Deny User Agent Empty、Deny User Agent Non RFC,否则有部分合法访问会被拒绝

Referrer 访问来路

取消选择Use Referrer Scanning,因为我觉得一个访问的来路可能不会有太严重的安全问题,还是为了尽量让合法的请求通过,我选择取消勾选该项

Methods HTTP请求方法

无需更改默认配置

Querystring 查询字符串

无需更改默认配置

Global Filter Capabilities 全局过滤功能

取消勾选Is Installed As Global Filter,切记,该项一定要取消选择,否则WebKnight不能正产工作

SQL Injection SQL 注入

无需更改默认配置

Web Applications Web应用程序

勾选Allow File Uploads,否则上传文件的功能会失效

勾选Allow Unicode

勾选Allow ASP NET

如果您的网站需要支持ASP,勾选Allow ASP

同理,您的网站需要支持什么,请您自己选择需要勾选的项

修改后,记得通过菜单栏File > Save 来保存配置(或通过快捷键Ctrl+S),保存配置后,就可以重启IIS或应用程序池来启用WebKnight了

提示:您可以通过查看WebKnight的日志,来查看哪些合法请求被阻止了,然后修改相应的配置

如何恢复被篡改的数据

 

通过安装这个Application Firewall,攻击是被阻止了,但数据库里被篡改的数据,还需要恢复,这里其实包含了2个问题:

1、如何找到被篡改的数据

以彼之道还施彼身。我找到了实施SQL注入的一篇帖子,里面讲到,是“通过游标遍历数据库中的所有表和列并在列中插入代码”,同理,我们也可以写一个程序,遍历数据库中所有表和列,并判断是否存在特征字符串,这个特征字符串即被插入的恶意代码特征。由于此种攻击是将数据库所有行数据修改,所以每个表我们只看一行数据就可以,也不会耗时太久。

2、如何恢复被篡改的数据

我找到了被篡改的表后,其中一些字段是存储的冗余数据,可以通过SQL语句从数据源读取然后更新即可,如:

1 UPDATE TableA SET ColumnA = (SELECT TableB.ColumnA FROM TableB WHERE TableB.BID = TableA.BID)

 

还有比较费劲的就是源数据被改,要修复这样的数据,就必须得有备份了,我们先将备份的数据库还原成一个用户恢复的数据库:

 

1、执行

1 restore filelistonly FROM disk='X:/BackupName.BAK'

获得当前备份文件的逻辑名

 

2、使用windows账户或者sa登陆执行以下SQL语句:

1 restore DATABASE [还原目的数据库] 

2 FROM disk='X:/BackupName.BAK' --备份文件的路径

3 WITH 

4 file=1, --文件的编号

5 move '备份数据文件的逻辑名' TO 'X:/MSSQL/Data/物理文件名_Data.MDF', --数据库逻辑名 to 还原到的物理文件名

6 move '备份日志文件的逻辑名_Log' TO 'X:/MSSQL/Data/物理文件名_Log.LDF' --日志逻辑名 to 还原到的物理文件名

 

3、当还原成功后,执行下面的语句对数据进行恢复:

1 UPDATE [被篡改数据库].[dbo].[表] SET [待恢复字段] = (SELECT 还原的数据库.dbo.表.[待恢复字段] FROM 还原的数据库.dbo.表 WHERE 还原的数据库.dbo.表.主键 = [被篡改数据库].[dbo].[表].主键) WHERE 主键 IN (SELECT 还原的数据库.dbo.表.主键 FROM 还原的数据库.dbo.表)

如何找到有漏洞的程序

 

应用程序防火墙安装完毕、数据恢复了,接下来我们要找到有SQL注入漏洞的页面,常规的检测方法不再赘述,这里着重说一下如何找到本次攻击被利用的那个漏洞。方法其实很简单,因为被攻击的时间段是已知的,我们只需要把当天的IIS日志中相同时段的内容分析一下,很容易能得出结果,然后修复之。

 

源自:http://www.cnblogs.com/zhubo/archive/2009/09/06/Thinking_SQL_Injection_Protection_and_Restoring.html

WebKnight强大的免费IIS防火墙防范SQL注入入侵 我们的 WebServer 是 IIS6,所以这里只介绍IIS6的安装,我见有些帖子介绍WebKnight的安装时,说只有把IIS调整成IIS5.0隔离模式(IIS5.0 isolation mode)才可以,但实际上WebKnight的官方网站有介绍不需要此操作即可安装的办法,但这需要放弃WebKnight的全局配置特性,相比放弃IIS6.0,我更愿意放弃WebKnight的这个特性: 首先下载 立即下载

相关推荐

WebKnight.rar

windwos IIS防火请

保护您的 Web 应用程序的最佳开源 Web 应用程序防火墙

WAF 意思是 Web Application Firewall:它是一个用于过滤来自 Internet 的 HTTP 请求的防火墙。ModSecurity 有一个用于商业用途的许可版本,而 IronBee 对于各种规模的操作都是完全免费的。Lua-resty-waf 是一个高性能的开源、免费的 Web 应用防火墙。但是,如果您具有 Internet Security 的知识和经验,那么您可以从任何开源 WAF 中创建强大的 WAF。有许多免费的 WAF 可以免费保护您的 Web 应用程序。...

allway2的博客 2130

AI视频生成成本优化实战:混合架构与硬件选型

AI视频生成技术正面临效果与成本的二元博弈,其核心挑战在于高昂的推理算力消耗与黑箱服务的不确定性。从技术原理看,视频生成依赖扩散模型等深度学习架构,通过多轮迭代实现像素级合成,这导致GPU显存占用和电力消耗呈指数级增长。在工程实践中,采用混合推理架构能有效平衡成本与质量,例如云端处理关键帧配合本地渲染过渡帧,实测可降低58%支出。硬件选型方面,消费级显卡魔改与边缘计算设备为中小企业提供了可行方案,如RTX 3090显存扩容或Jetson AGX边缘部署。当前AI视频应用已渗透电商直播、新闻制作等领域,但需警

weixin_29531177的博客 293

网站被SQL注入防范(WebKnight)

作者:青云 日期:2011-06-23分享一下内容篡改式攻击的判断方法、SQL注入攻击的防范、以及被攻击后的补救(数据恢复)相关知识.网站被“成功”注入,网站一些页面被插入了下载病毒的代码,经查:生产服务器的代码没有任何被改动过的迹象,排除服务器被入侵,代码被篡改的可能;有病毒下

收集盒 Book box 681

ROS 2 Jazzy与Gazebo Harmonic仿真实战:从零搭建机器人仿真环境与高级应用

本文详细介绍了如何使用ROS 2 Jazzy和Gazebo Harmonic从零搭建机器人仿真环境,涵盖环境配置、传感器集成、多机器人协同和GPU加速优化等高级应用。通过实战案例和性能调优技巧,帮助开发者高效构建可靠的机器人仿真系统,提升开发效率。

h9j8k7l6m5n的博客 1217

pta——特立独行的幸福

这是我认为比较复杂的一道题了,比较迷茫的点在于不知道要算各位平方和几次到不了1,才算他不是幸福数。突破口在于如果如果不是回到1也会有一些数字重复出现,只要重复出现的数字不是1,那就不是幸福数

m0_65620244的博客 4035

服务器被爬虫恶意攻击怎么办?

例如,可以在页面中嵌入一些 JavaScript 代码,这些代码会检测浏览器的一些属性(如是否支持 JavaScript、是否支持 Cookie 等),如果检测到浏览器属性与正常用户不同,则 WAF 可以认为该请求来自恶意爬虫,从而拒绝该请求。例如,可以在登录表单中添加一个隐藏字段(如 CSRF Token),如果该字段的值不正确,则 WAF 可以认为该请求来自恶意爬虫,从而拒绝该请求。需要注意的是,WAF 并不能完全防止恶意爬虫攻击,因为恶意攻击者可以使用各种技术来规避 WAF 的过滤。

wywinstonwy的专栏 2003

ArcMap对遥感图像进行语义分割标注

使用arcmap对遥感图像进行语义分割标注

qq_41708916的博客 4044

哈尔滨三级等保下的网页防篡改系统部署指南

网页防篡改系统是一种用于保护网站内容不被非法修改的安全解决方案。它通过实时监控网页文件的变化,一旦检测到未授权的修改,立即采取恢复措施,并发出警报,确保网站内容的完整性和真实性。

haerbinweiqikeji的博客 442

一文读懂医疗大模型测评基准

面对市场上浩若星海的大模型,医院管理者如何采购适合自身场景的解决方案?如何选取好的模型作为基础进行课题研究?都是医院需要特别重视的问题。评测基准则benchmark是这些问题的重要解法,国内北京、上海、浙江已然开展了相关的标准化工作。

dz102的博客 1835

【深度学习|多实例学习】多实例学习(Multiple Instance Learning, MIL)的起源、发展和应用,附代码(一)

【深度学习|多实例学习】多实例学习(Multiple Instance Learning, MIL)的起源、发展和应用,附代码(一)

2401_89898861的博客 1918

由一个案例引出SQL注入防范(WebKnight),补救(数据修复)的思考

Use Allowed Paths,这项保持勾选,因为这项可以限制Web程序可以访问的服务器上的物理路径,我们需要做的只是在下面的Allowed Paths中添加上我们自己的网站物理路径,比如F:\WebSite1,添加方法是在任意项上点击右键 > Insert Item > 输入物理路径后,回车即可。我一开始是选择了该项的,但在我的实践中,由于我们用了网站流量统计、广告合作代码等,导致Headers中的一些项超长,阻止了相当多的正常请求,所以我想干脆一劳永逸,取消选择了该项。

QC85Y09bQ的博客 193

基于泰勒展开改进的物理信息神经网络

基于泰勒展开改进的物理信息神经网络

天天酷科研的博客 502

在IIS6中安装WebKnight的方法(iis防火墙)

由于WebKnight的配置很多,这里我只写一下推荐配置,个人观点,仅供参考,如果更好的建议,期待您的分享 如何在IIS6中安装WebKnight?  我们的 WebServer 是 IIS6,所以这里只介绍IIS6的安装,我见有些帖子介绍WebKnight的安装时,说只有把IIS调整成IIS5.0隔离模式(IIS5.0 isolation mode)才可以,但实际上WebKnight的官

收集盒 Book box 569

把冷门数据从内存里请出去:ABAP 环境下玩转 SAP HANA Native Storage Extension (NSE) 的开发者实战笔记

摘要:SAP HANA NSE技术为ABAP系统提供了一种经济高效的温数据管理方案。文章首先指出企业数据存在"温度分层"现象,高频访问的热数据需常驻内存,而低频温数据更适合存储在磁盘或闪存。NSE通过混合列存架构,将不常访问的数据移至磁盘但仍保持数据库内统一管理,显著降低内存成本。 关键实施要点包括:在ADT技术设置中将Load Unit设为"Page Enforced"以启用NSE;理解buffer cache作为数据"抽屉"的工作原理;掌握选表

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 161

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

服务器被恶意爬虫攻击怎么办

服务器总是被恶意爬虫攻击怎么处理,这篇给你建议!

@云安全小杜 1952

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

渗透测试 ( 0 ) --- XSS、CSRF、文件上传、文件包含、反序列化漏洞

渗透测试 --- http协议、XSS、CSRF、文件上传、文件包含、反序列化漏洞

freeking101的博客 5538

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

10大开源的Web应用防火墙介绍

10大开源的Web应用防火墙介绍 Web应用防火墙提供应用层的安全。从本质上讲,WAF提供全面的web应用安全解决方案,确保数据和Web应用程序是安全的。下面赵一八笔记(www.fuwuqidl.com)给大家分享10大开源的Web应用防火墙。 相关产品:腾讯云Web应用防火墙(T-Sec Web 应用防火墙) 3折特惠体验 购买阿里云服务器ECS或其它任何产品,请先领取阿里云通用代金券礼包! 购买腾讯云服务器ECS或其它任何产品,请先领取腾讯云通用代金券礼包! Web应用防火墙,适用于跨站点脚本,SQL

jisuyunzzc的博客 1614

非常不错的SQL注入绕过paper,值得收藏.

Beyond SQLi: Obfuscate and Bypass by CWH Underground  2011-10-06 Beyond SQLi: Obfuscate and Bypass                 |=--------------------------------------------------------------------=|

p656456564545的专栏 1754

应用安全 - 安全设备 - WAF原理/检测/绕过

原理 基于Cookie值 CitrixNetscaler(2013年使用广泛) “CitrixNetscaler”会在HTTP返回头部Cookie位置加入“ns_af”的值,可以以此判断为CitrixNetscaler的WAF,国内此类WAF很少 1 GET / HTTP/1.1 2 Host: target.com 3 User-Agent: Mozilla/5.0 ...

weixin_30919429的博客 1133

绕过WAF的SQL注入语句

0x00前言 现在的网络环境往往是WAF/IPS/IDS保护着Web 服务器等等,这种保护措施往往会过滤挡住我们的SQL注入查询链接,甚至封锁我们的主机IP,所以这个时候,我们就要考虑怎样进行绕过,达到注入的目标。因为现在WAF/IPS/IDS都把sqlmap 列入黑名单了,呵呵!但是本文基于手工进行绕过注入测试,介绍至今仍然实用有效的技巧,以下策略在特定的环境能够成功绕过,具体是否绕过,请仔...

煜铭2011 1万+
上一篇: SQL注入专题
下一篇: CSS常用技巧
freewind
博客等级 码龄16年 136粉丝 108原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值