[原]发布一个防SQL注入漏洞的HttpModule
2009-02-26 10:44
218 查看
写在最前面的话:
下面的内容可以不看,但是这段一定要看,看完后再写回复。
本文所描述的前提环境是:
你手里有一个Asp.net的系统,这个系统存在SQL注入漏洞,但是你不能动它的源代码(非技术因素)。 SQL注入漏洞就不解析了,我认为防止SQL注入漏洞最有效的方法只有“意识”和“参数化查询”这两条(针对.net和Java,其他不熟悉,不乱说)。
由于我们这里部署了很多Asp.net的系统和网站,有一些存在SQL注入漏洞,为了不碰它的源代码,特意写了这个HttpModule。
使用正则表达式作为过滤规则是为了尽量降低误判率,基于关键字的判断规则很容易误判。
部署很简单,将DeSqlInjection.dll 复制到 bin 目录下面,在Web.config文件中加入下面两段,就可以了:
对于 ' or 1=1-- 这种方式的注入无能为力。
适当修改killkill_DenyRegex的正则表达是可以将该过滤器退化为基于关键字过滤的过滤器,但是不推荐这么做。
可以自行修改killkill_DenyRegex的正则表达式,使过滤规则更加强大或者高效,可以的话,顺便告诉我你的精妙正则表达式 :-)
该HttpModule 在 Visual Studio 2008 sp1 下开发,发布目标Framework为2.0,源代码可以随便改,但是请保留“Powered By killkill”的信息,源代码下载后请重新编译一下,获得dll文件。如果嫌麻烦,就下载 dll 文件吧。
源代码下载
DLL文件下载
下面的内容可以不看,但是这段一定要看,看完后再写回复。
本文所描述的前提环境是:
你手里有一个Asp.net的系统,这个系统存在SQL注入漏洞,但是你不能动它的源代码(非技术因素)。 SQL注入漏洞就不解析了,我认为防止SQL注入漏洞最有效的方法只有“意识”和“参数化查询”这两条(针对.net和Java,其他不熟悉,不乱说)。
由于我们这里部署了很多Asp.net的系统和网站,有一些存在SQL注入漏洞,为了不碰它的源代码,特意写了这个HttpModule。
使用正则表达式作为过滤规则是为了尽量降低误判率,基于关键字的判断规则很容易误判。
部署很简单,将DeSqlInjection.dll 复制到 bin 目录下面,在Web.config文件中加入下面两段,就可以了:
对于 ' or 1=1-- 这种方式的注入无能为力。
适当修改killkill_DenyRegex的正则表达是可以将该过滤器退化为基于关键字过滤的过滤器,但是不推荐这么做。
可以自行修改killkill_DenyRegex的正则表达式,使过滤规则更加强大或者高效,可以的话,顺便告诉我你的精妙正则表达式 :-)
<appSettings> <!--DeSqlInjection.RegexFilter 配置--> <add key="killkill_DenyRegex" value=".*((;.*update(\s|\*/|/\*).*\w+.*(\s|\*/|/\*)set(\s|\*/|/\*).+=.+)|(;.*delete(\s|\*/|/\*).*from(\s|\*/|/\*).+\w+)|(.*select(\s|\*/|/\*).*\w+.*(\s|\*/|/\*)from(\s|\*/|/\*).*)|(;.*(drop|alter|truncate|create)(\s|\*/|/\*).*table(\s|\*/|/\*).*\w+)|(;.*declare.*cursor.*)).*"/> <add key="killkill_QueryLength" value="10"/> <add key="killkill_RedirectPage" value="~/Deny.htm"/> <!--DeSqlInjection.RegexFilter 配置--> </appSettings>
<httpModules> <!--DeSqlInjection.RegexFilter 配置--> <add name="DeSqlInjectionModule" type="DeSqlInjection.RegexFilter, DeSqlInjection"/> <!--DeSqlInjection.RegexFilter 配置--> </httpModules>
该HttpModule 在 Visual Studio 2008 sp1 下开发,发布目标Framework为2.0,源代码可以随便改,但是请保留“Powered By killkill”的信息,源代码下载后请重新编译一下,获得dll文件。如果嫌麻烦,就下载 dll 文件吧。
源代码下载
DLL文件下载
相关文章推荐
- WCF技术剖析之二十七: 如何将一个服务发布成WSDL[基于HTTP-GET的实现](提供模拟程序)
- 根目录做了url重写,虚拟目录运行提示“未能加载文件httpmodule或它的某一个依赖项。系统找不到指定的文件”解决方案
- asp.net简单实现利用HttpModule实现防sql注入
- httpModule的一个很不爽的地方
- 发布一个用PHP fsockopen写的HTTP下载的类
- HttpCompressionModule 6的一个Bug及使用效果
- asp.net利用HttpModule实现防sql注入
- 发布一个用PHP fsockopen写的HTTP下载的类
- WCF技术剖析之二十七: 如何将一个服务发布成WSDL[基于HTTP-GET的实现](提供模拟程序)
- 一个简单的httpModule应用
- 用C#实现一个基于http的文件发布程序
- 利用HttpModule实现防sql注入
- 一个nginx C++ hello_world http module
- 发布一个用PHP fsockopen写的HTTP下载的类
- 使用一个HttpModule拦截Http请求,来检测页面刷新(F5或正常的请求)
- 利用HttpModule实现防sql注入
- 我发起一个http url,本地没问题,发布到测试环境后,报错post 400 bad request,原来是测试的tomcat版本比较高,它对post的长度做了限制。
- 利用HttpModule实现防sql注入
- 官方发布了一个针对uTorrent的安全漏洞无用补丁
- Ihttpmodule 的一个小问题,今天明白了