全局SQL注入防御代码

0x01 概述说明

渗透过程,经常遇到厂商的应用系统存在漏洞,但部分漏洞属于全局性质的,提出的漏洞点没全部列举,导致厂商加固的时候只加固局部漏洞点,未全局防御。(当然也有互联网公司安全防御做的不错,根据SRC反馈的漏洞去关联可能存在的所有点,进行全局防御;所以大厂略过)。

本篇主要是针对SQL注入漏洞全局的防御方法,用以辅助一些安全相对不是特成熟厂商。主要思路就是全局过滤器。

0x02 全局过滤器

【JSP】

1.SQLFilter.java为过滤的源文件。可自行对SQL过滤的关键字进行修改。放在自己项目源码中进行编译。(路径不一致的时候请修改包名)

2.SQLFilter.class为编译后的文件,如果不想修改(修改的话对SQLFilter.java进行修改)放在项目web目录/WEB-INF/classes/com/filter/下。

3.修改web.xml。新增如下代码。

<filter>
<filter-name>SQLFilter</filter-name>
<filter-class>com.filter.SQLFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>SQLFilter</filter-name>
<url-pattern>/*</url-pattern><!--这里是针对所有的请求都进行过滤-->
</filter-mapping>
<welcome-file-list>

CodeDemo

拦截效果如下:

【PHP】

1.将waf文件夹复制到服务器任意位置,修改php.ini文件。

增加如下代码(假设waf.php文件在E盘根目录)

auto_prepend_file = "E:/waf.php"

然后重启apache即可

CodeDemo

拦截效果如下:

【ASPX】

1.将过滤器文件复制到ASP.Net项目根目录(复制App_Code到根目录)

2.在Web.config中进行配置。先查看该文件中是否有modules标签

a)若有,直接在添加

b)若无,在system.web标签中添加如下代码:

<modules>
<addname="MyExampleModule"type="SqlInjectAttribute"/>
</modules>

3.过滤的关键字可以自己修改,response.Redirect("~")是返回到首页,可以自己修改重定向到其他页面。

CodeDemo

拦截效果如下(当含有恶意字符串时,页面会重定向到首页。):

0x03 规则更新

也可以根据其他漏洞的关键特征进行自定义更新,比如任意文件读取的关键字../../类等。

也可以在Webserver下攻防设置阻断。

当然这种方式也不一定是万能的,针对群集式站点就略显鸡肋。只是规则的匹配,也不能智能语义判断,安全是相对的,本篇主要想为没买WAF又不想自己写规则的朋友提供帮助。

0x04 代码下载

代码下载链接:

http://liehu.tass.com.cn/wp-content/uploads/2018/03/SQL注入过滤v1.1.7z

本站所有文章均属原创,转载请注明出处!

发表评论

电子邮件地址不会被公开。 必填项已用*标注