`

一个过滤HTTP请求的Apache2.x模块(插件)

阅读更多

最近有一个网站发现有跨站漏洞:

http://www.xxxxx.xxxxx.cn/cgi-bin/publish/content_collect?name=&filecontent=&account_user=>'><script>alert('%C9%F8%CD%B8%B2%E2%CA%D4')</script>

 

在地址栏输入该URL,浏览器响应:

“渗透测试”

 

因为系统底层不是我们做的,没有源代码,所以只要找其他方式来堵住这个洞洞。首先想到的就是使用Apache的一些过滤插件,在:

http://modules.apache.org/

网站搜了一下,真发现了一个有用的插件: mod_ifier,插件官方网站是:
http://www.steve.org.uk/Software/mod_ifier/index.html

该插件网站称:

mod_ifier is an Apache2 module which allows you to filter each incoming HTTP request to your webserver - allowing you to drop Referer-spam, exploit attempts, and more.
mod_ifier 是一个允许你过滤每一个访问你的web服务器的HTTP请求的Apache2的模块 - 允许你删除Referer信息,溢出攻击尝试 等等恶意信息。

Using this module you can define a collection of rules which will be processed for each incoming request. If a rule matches then you can respond in several different ways:
使用该模块,你可以定义一系列规则来处理每一个访问进来的请求。如果访问请求符合规则,可以以几种不同的方式来响应请求:

* Return a specific HTTP status code. 
* 返回一个特定的HTTP状态代码

* Redirect the visitor to a different URL 
* 转向到另一个URL

* Execute a local program. 
* 执行一个本地程序

 

 

 

 

 

补充:ModSecurity-2.5.7手册翻译--安装


ModSecurity安装过程包含以下几步:


1、ModSecurity 2.x工作于Apache 2.0.x或者更高版本


2、确认您已经安装了mod_unique_id。
   mod_unique_id是apache的httpd中的一个包


3、服务器中还没有libxml2的话,请安装它的最新版.
   http://xmlsoft.org/downloads.html

4、如果服务中还没有安装Lua,而且你将需要使用的话,请安装5.1.x分支的最新版
   http://www.lua.org/download.html
   注意ModSecurity需要的是动态库,而采用源代码编译时默认得不到这些,所以最好采用二进制发布版本。


5、停止apache的httpd服务


6、解开ModSecurity安装包

7、Unix(或者类Unix)操作系统和Windows上进行不同的构建

Unix
a、运行configure脚本生成Makefile文件,通常不需要设置选项
./configure
更多的定制使用配置选项(使用./configure --help可以得到完整列表),但通常你只需要使用--with-apxs选项指定apache的httpd安装时的apxs的位置即可。
./configure --with-apxs=/path/to/httpd-2.x.y/bin/apxs
b、编译:make
c、可选的测试:make test
注意:这一步还是带有一点点试验性质,如果发现问题,请把构建过程中的所有输出发送到支持列表,大部分常见问题是找不到所需要的头和库文件。
d、可选构建ModSecurity的日志收集器:make mlogc
e、可选安装mlogc:查检发布版本包含在apache2/mlogc-src目录下的INSTALL文件
f、安装ModSecurity模块:make install

Windows(MS VC++ 8)
a、编辑Makefile.win文件,配置apache主目录和二进制目录
b、编译:nmake -f Makefile.win
c、安装ModSecurity模块:nmake -f Makefile.win install
d、拷贝libxml2.dll和lua5.1.dll到apache的二进制目录,当然也可以象下面的操作那样使用LoadFile命令加载那些库文件。


8、编辑apache httpd的主配置文件(通常是httpd.conf)

On UNIX(在Windows上,如果你没有按上述规定拷贝DLL文件话也可以)上你必须在ModSecurity之前加载libxml2和lua5.1,参考如下操作:
LoadFile /usr/lib/libxml2.so
LoadFile /usr/lib/liblua5.1.so

按如下加载ModSecurity
LoadModule security2_modules modules/mod_security2.so


9、配置ModSecurity

10、启动apache httpd


11、到目前为止,你应该已经装好ModSecurity 2.x并且运行它了。


--------------------------------------------------------------------------------
注意:
    如果你是自己编译的apache,那你或许经历了在PCRE上编译ModSecurity的问题,这是因为apache带上了PCRE,但通常PCRE的库文件又是由系统提供的,我希望绝大多数的供应商打包apache发布版本时配置使用外部PCRE的库文件(所以这不应成为问题)
    您想避免使用apache捆绑的PCRE库和ModSecurity使用的是系统提供的库,很简单的方法就是重新编译apach,并使用系统提供的PCRE库(或者你可以下载个最新版本的PCRE编译一下),你也可以在编译的时候使用--with-pcre开关。如果你不能重新编译apache,那么为了获得ModSecurity的编译成功,你还是需要获得捆绑的PCRE头文件(这可以在apache的代码中找到)并修改INCLUDE路径(在上述第7步中做)来指向它(通过ModSecurity的--with-pcre配置选项)。
    你注意,如果你的apache使用的是外部PCRE,那你可以在编译ModSecurity时使用WITH_PCRE_STUDY定义,这将给你的服务器处理正则表达式时有一个轻微的性能提高。


================================
ModSecurity第三方规则下载地址:
http://www.gotroot.com/tiki-index.php?page=mod_security+rules

分享到:
评论
3 楼 wdmsyf 2009-09-22  
补充一下:

ModSecurity的官网地址:

http://www.modsecurity.org/
2 楼 wdmsyf 2009-09-22  
谢谢1楼的兄弟,看mod_security的介绍,好象是比mod_ifier还好。

BTW: 看来知识是越共享,越丰富啊!
1 楼 魔力猫咪 2009-09-22  
ModSecurity也可以试试。昨天看到的一个开源Web应用防火墙。

相关推荐

    php网络开发完全手册

    17.4.5 创建一个有范围限制的Cookie 292 17.4.6 删除Cookie 292 17.4.7 浏览器重定向 292 17.4.8 Cookie的常见问题 293 17.5 Cookie应用实例——登录验证 293 17.5.1 HTML表单的设计 293 17.5.2 验证页面的编写 294 ...

    单点登录sso-shiro-cas-maven

    spring下使用shiro+cas配置单点登录,多个系统之间的访问,每次只需要登录一次 ## 系统模块说明 1. cas: 单点登录模块,这里直接拿的是cas的项目改了点样式而已 2. doc: 文档目录,里面有数据库生成语句,采用的...

    (全)传智播客PHP就业班视频完整课程

    解答学生问题--一个ip绑定多个域名 8-19 2.php运行过程时序图 php书写规范 8-19 3.php基本语法介绍 php数据类型介绍 8-19 4.整型细节说明 8-19 5.布尔细节 浮点数细节 字符串细节 算术运算符① 8-19 6.算术运算符② ...

    JAVA上百实例源码以及开源项目源代码

     当用户发送第一次请求的时候,验证用户登录,创建一个该qq号和服务器端保持通讯连接得线程,启动该通讯线程,通讯完毕,关闭Scoket。  QQ客户端登录界面,中部有三个JPanel,有一个叫选项卡窗口管理。还可以更新...

    JAVA上百实例源码以及开源项目

     当用户发送第一次请求的时候,验证用户登录,创建一个该qq号和服务器端保持通讯连接得线程,启动该通讯线程,通讯完毕,关闭Scoket。  QQ客户端登录界面,中部有三个JPanel,有一个叫选项卡窗口管理。还可以更新...

    AEM Chrome插件「AEM Chrome Plug-in」-crx插件

    请注意,这是一个开发工具,也需要凭证才能访问AEM的Felix / Web控制台。 要使用AEM Chrome插件 - 自适应表单,您的AEM 6.2+实例必须与AEM表单功能包一起运行。 --- v0.2.0:添加了AEM自适应表单支持 v0.2.1:增加了...

    史上最全韩顺平传智播客PHP就业班视频,10月份全集

    史上最全韩顺平毕业班视频------这里只有10月份,8,9,11月份在另外一个文件下。 传智播客PHP就业班视频课程列表 8-11 1.html介绍 html运行原理① 8-11 2.html运行原理② html文件基本结构 html元素和属性 8-11 3....

    史上最全传智播客PHP就业班视频课,8月份视频

    史上最全韩顺平毕业班视频------这里只有8月份,9,10,11月份在另外一个文件下。 传智播客PHP就业班视频课程列表 8-11 1.html介绍 html运行原理① 8-11 2.html运行原理② html文件基本结构 html元素和属性 8-11 3....

    史上最全韩顺平传智播客PHP就业班视频,9月份全集

    史上最全韩顺平毕业班视频------这里只有9月份,8,10,11月份在另外一个文件下。 传智播客PHP就业班视频课程列表 8-11 1.html介绍 html运行原理① 8-11 2.html运行原理② html文件基本结构 html元素和属性 8-11 3....

    韩顺平PHP JS JQUERY 所有视频下载种子 货真价实

    解答学生问题--一个ip绑定多个域名 8-19 2.php运行过程时序图 php书写规范 8-19 3.php基本语法介绍 php数据类型介绍 8-19 4.整型细节说明 8-19 5.布尔细节 浮点数细节 字符串细节 算术运算符① 8-19 6.算术运算符② ...

    NFine快速开发框架源码 NFineRapidFramework.rar

    6、数据权限(精细化数据权限控制,控制到行级,列表级,表单字段级,实现不同人看不同数据,不同人对同一个页面操作不同字段 7、提高开发效率及质量。常用类封装,日志、缓存、验证、字典、文件、邮件、,Excel。...

    Python Cookbook

    11.15 在Jython中实现一个ImageJ插件 433 11.16 用Swing和Jython来通过URL查看图片 434 11.17 在Mac OS中获得用户输入 434 11.18 程序化地创建Python Cocoa GUI 437 11.19 用IronPython实现淡入窗口 439 第12...

    新版Android开发教程.rar

    Android 是一个专门针对移动设备的软件集,它包括一个操作系统,中间件和一些重要的应用程序。 Beta 版 的 Android SDK 提供了在 Android 平台上使用 JaVa 语言进行 Android 应用开发必须的工具和 API 接口。 特性 ...

    工程硕士学位论文 基于Android+HTML5的移动Web项目高效开发探究

    Activity Activity是一个应用程序组件,提供一个屏幕,用户可以用来交互为了完成某项任务,是一个负责与用户交互的组件 SSH 为 Struts+Spring+Hibernate的一个集成框架,是目前较流行的一种Web应用程序开源框架。...

    python入门到高级全栈工程师培训 第3期 附课件代码

    06 django的一个简单应用 07 django静态文件之static 08 django的url控制系统 09 django的urlConf补充 第50章 01 django之视图函数的介绍 02 django视图之redirec 03 django模板之变量 04 django模板之过滤器 05 ...

Global site tag (gtag.js) - Google Analytics