全局SQL注入防御代码
Posted 猎户攻防实验室
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了全局SQL注入防御代码相关的知识,希望对你有一定的参考价值。
0x01 概述说明
渗透过程,经常遇到厂商的应用系统存在漏洞,但部分漏洞属于全局性质的,提出的漏洞点没全部列举,导致厂商加固的时候只加固局部漏洞点,未全局防御。(当然也有互联网公司安全防御做的不错,根据SRC反馈的漏洞去关联可能存在的所有点,进行全局防御;所以大厂略过)。
本篇主要是针对SQL注入漏洞全局的防御方法,用以辅助一些安全相对不是特成熟厂商。主要思路就是全局过滤器。
0x02 全局过滤器
【JSP】
SQLFilter.java为过滤的源文件。可自行对SQL过滤的关键字进行修改。放在自己项目源码中进行编译。(路径不一致的时候请修改包名)
SQLFilter.class为编译后的文件,如果不想修改(修改的话对SQLFilter.java进行修改)放在项目web目录/WEB-INF/classes/com/filter/下。
修改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】
将waf文件夹复制到服务器任意位置,修改php.ini文件。
增加如下代码(假设waf.php文件在E盘根目录)
auto_prepend_file = "E:/waf.php"
然后重启apache即可
CodeDemo
拦截效果如下:
【ASPX】
将过滤器文件复制到ASP.Net项目根目录(复制App_Code到根目录)
在Web.config中进行配置。先查看该文件中是否有modules标签,
a) 若有,直接在添加<addname="MyExampleModule" type="SqlInjectAttribute"/>;
b) 若无,在system.web标签中添加如下代码:
<modules>
<addname="MyExampleModule"type="SqlInjectAttribute"/>
</modules>
过滤的关键字可以自己修改,response.Redirect("~")是返回到首页,可以自己修改重定向到其他页面。
CodeDemo
拦截效果如下(当含有恶意字符串时,页面会重定向到首页。):
0x03 规则更新
也可以根据其他漏洞的关键特征进行自定义更新,比如任意文件读取的关键字../../类等。
也可以在Webserver下攻防设置阻断。
当然这种方式也不一定是万能的,针对群集式站点就略显鸡肋。只是规则的匹配,也不能智能语义判断,安全是相对的,本篇主要想为没买WAF又不想自己写规则的朋友提供帮助。
0x04 代码下载
代码下载链接:
http://liehu.tass.com.cn/wp-content/uploads/2018/03/SQL注入过滤v1.1.7z
以上是关于全局SQL注入防御代码的主要内容,如果未能解决你的问题,请参考以下文章