取消勾选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.表)如何找到有漏洞的程序