全局SQL注入防御代码

Posted 猎户攻防实验室

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了全局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


拦截效果如下:

全局SQL注入防御代码

 【php

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

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

auto_prepend_file = "E:/waf.php"

  1. 然后重启apache即可

 

CodeDemo

全局SQL注入防御代码

拦截效果如下:

全局SQL注入防御代码

 

【ASPX】

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

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

  3. a)     若有,直接在添加<addname="MyExampleModule" type="SqlInjectAttribute"/>;

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

<modules>

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

</modules>

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

 

CodeDemo

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

 

0x03 规则更新      

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

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

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

 

0x04 代码下载

代码下载链接:

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

 

 


以上是关于全局SQL注入防御代码的主要内容,如果未能解决你的问题,请参考以下文章

sql注入攻击与防御第二版读书笔记二——SQL注入测试

SQL注入(Web漏洞及防御)

电子书 SQL注入攻击与防御.pdf

sql注入和防御

防御sql注入

SQL注入知识讲解 简介 危害 防御