0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

什么是基于签名的防火墙?如何判断目标环境是否部署防火墙?

马哥Linux运维 ? 来源:未知 ? 作者:李倩 ? 2018-08-02 17:13 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

Web应用防火墙通常会被部署在Web客户端与Web服务器之间,以过滤来自服务器的恶意流量。而作为一名渗透测试人员,想要更好的突破目标系统,就必须要了解目标系统的WAF规则。如今,许多WAF都是基于签名的。下图简单描绘了一个Web应用防火墙的工作流程:

什么是基于签名的防火墙?

在基于签名的防火墙中你可以自定义签名,如果你知道某种网络攻击遵循某种类型的模式或签名。那么你就可以定义匹配模式过滤掉它们,例如:

Payload:-

上面定义的是一种常见的XSS payload,我们知道所有这类攻击都可能包含- >“

PHP脚本:

Data from the form :

步骤2:准备恶意请求!

为了检测防火墙的存在与否,第二步我们需要创建一个会被防火墙阻止的恶意跨站脚本请求。这里我将用到一个名为“Mechanize”的python模块.

Automate Cross Site Scripting (XSS) attack using Beautiful Soup and Mechanize

如果你已经了解了Mechanize模块,可以跳过此文章的阅读。现在,我们就可以对任意页面提供的Web表单发起请求了。实现代码如下:

import mechanize as mec maliciousRequest = mec.Browser() formName = 'waf' maliciousRequest.open("http://check.cyberpersons.com/crossSiteCheck.html") maliciousRequest.select_form(formName)

让我来简单解释下这几行代码的用意:

在第一行代码,我们首先导入了mechanize模块,并给它了一个简称’mec’以便我们后续使用。

要想使用mechanize下载网页,我们需要实例化浏览器。因此在第二行代码中,我们实例化了浏览器。

在步骤1中我们定义了我们的HTML文档,其中表单名称为“waf”。因此在第三行代码中,我们需要告诉mechanize要选择以此命名的表单进行提交,所以formName变量为‘waf’。

第四行代码就是打开目标URL地址,并提交我们的数据。

最后我们使用’select_form()’函数传递’formName’变量。

在以上的HTML文档中,我们只定义了一个表单输入字段,我们将利用该字段注入我们的恶意payload,并通过检查http响应信息来判断目标是否部署了Web应用防火墙。

步骤3:准备payload

在HTML文档中我们定义了一个名为’data’的输入字段:

input type="text" name="data">

因此,我们可以使用以下代码来提交我们的payload:

crossSiteScriptingPayLoad = "

"maliciousRequest.form['data'] = crossSiteScriptingPayLoad

第一行代码我们首先将payload赋给了变量

‘crossSiteScriptingPayLoad’。

第二行代码我们将payload提交给了表单字段“data”。

步骤4:提交表单并记录响应

下面我们提交此表单并记录响应信息:

maliciousRequest.submit() response = maliciousRequest.response().read() print response

提交表单

将响应赋给变量。

将将响应信息打印出来。

由于我目前并未安装部署防火墙,所以我得到了如下响应:

可以看到payload被打印在了HTML文档中,这也说明应用程序代码中没有任何的过滤机制,并且由于没有防火墙的保护,我们的恶意请求也未被阻止。

步骤5:防火墙部署检测

变量’response’中包含了从服务器获取的响应信息,也是我们判断目标环境是否部署防火墙的重要依据。下面,我们将针对以下几款防火墙进行检测。

WebKnight

Mod_Security

Dot Defender

看看我们如何用python代码实现检测:

if response.find('WebKnight') >= 0: print "Firewall detected: WebKnight" elif response.find('Mod_Security') >= 0: print "Firewall detected: Mod Security" elif response.find('Mod_Security') >= 0: print "Firewall detected: Mod Security" elif response.find('dotDefender') >= 0: print "Firewall detected: Dot Defender" else: print "No Firewall Present"

这段代码首先我们对WebKnight的防火墙做了判断。如果目标环境安装了WebKnight,那么在我们的响应中将包含字符串“WebKnight”,并且find函数的返回值也将会大于0。同样,对于另外两个防火墙亦是如此。

当然我们还可以继续扩展我们的python脚本,用以检测更多的防火墙类型,但前提是必须了解这些防火墙的基本响应特征。

使用暴力测试攻击绕过防火墙过滤器

在文章开头我就说过,如今的大多数防护墙都是基于签名来过滤我们的请求流量的。但是,这并不意味着我们就拿它没办法了。随着Javascript的日趋复杂,我们可以用它来构建数千种的payload并逐一进行尝试,以绕过防火墙的检测。需要说明的是如果防护墙规则被明确定义,那么该方法可能会失效。下面让我们使用python脚本,来帮助我们完成暴力测试攻击:

listofPayloads = ['

', '', 'CLICK ME'] for payLoads in listofPayloads: maliciousRequest = mec.Browserundefined) formName = 'waf' maliciousRequest.openundefined"http://check.cyberpersons.com/crossSiteCheck.html") maliciousRequest.select_formundefinedformName) maliciousRequest.form['data'] = payLoads maliciousRequest.submitundefined) response = maliciousRequest.responseundefined).readundefined) if response.findundefined'WebKnight') >= 0: print "Firewall detected: WebKnight" elif response.findundefined'Mod_Security') >= 0: print "Firewall detected: Mod Security" elif response.findundefined'Mod_Security') >= 0: print "Firewall detected: Mod Security" elif response.findundefined'dotDefender') >= 0: print "Firewall detected: Dot Defender" else: print "No Firewall Present"

在第一行代码中,我们定义了3个payload的列表,你还可以根据需求添加更多的payload扩展此列表。

接着在for循环中,我们进行了之前所做相同判断过程,但这一次我们需要对应列表中的每个payload。

收到响应后,我们可以再次确认防火墙是否真的存在。

由于我并未安装部署防火墙,所以我得到了如下响应:

将HTML标签转换为Unicode或Hex实体

如果防火墙正在过滤html标签,如<,>。我们则可以尝试将这些实体进行Unicode或Hex转码再进行发送,如果被转化为原始形式,那么这也将成为我们的一个突破口。我们可以使用以下代码进行判断:

listofPayloads = ['','u003cbu003e','x3cbx3e'] for payLoads in listofPayloads: maliciousRequest = mec.Browser() formName = 'waf' maliciousRequest.open("http://check.cyberpersons.com/crossSiteCheck.html") maliciousRequest.select_form(formName) maliciousRequest.form['data'] = payLoads maliciousRequest.submit() response = maliciousRequest.response().read() print "---------------------------------------------------" print response print "---------------------------------------------------"

我的输出结果如下:

从结果可以看到,并没有编码的条目被转换为其原始格式。

总结

通过本文的介绍,相信大家已经对防火墙有了一个基本的了解和认识。作为一名安全测试人员,了解和掌握防火墙的工作机制是非常必要的。而对于企业而言,更不能忽视了安全的重要性。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 防火墙
    +关注

    关注

    0

    文章

    436

    浏览量

    36236
  • python
    +关注

    关注

    56

    文章

    4831

    浏览量

    87391

原文标题:黑客用Python:检测并绕过Web应用程序防火墙

文章出处:【微信号:magedu-Linux,微信公众号:马哥Linux运维】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    发现 STM32 防火墙的安全配置

    里提供了几个不同的防火墙配置。那么问题来了,什么是STM32防火墙的应该使用的安全配置呢?本文以STM32参考手册为基础,以最大化安全为目标,来探索发现STM32防火墙的推荐配置。ST
    发表于 07-27 11:04

    Linux如何关闭防火墙

    1、查看防火墙规则vim /etc/sysconfig/iptables放开某个端口号不被防火墙拦截,适用于部署tomcat,nginx等之类的软件
    发表于 07-12 06:31

    防火墙技术

    防火墙技术.ppt 防火墙及相关概念包过滤型防火墙代理服务型防火墙 防火墙的配置分布式防火墙
    发表于 06-16 23:41 ?0次下载

    防火墙原理

    课程说明   2 课程介绍 . . 3 课程目标 . . 3 相关资料 . . 3 第一节 防火墙工作原理  2 1.1 什么是防火墙  . . 2 1.2
    发表于 06-24 18:13 ?71次下载

    防火墙防火墙的渗透技术

    防火墙防火墙的渗透技术 传统的防火墙工作原理及优缺点: 1.(传统的)包过滤防火墙的工作原理   包过滤是在IP层实现的,因
    发表于 08-01 10:26 ?1220次阅读

    防火墙管理

     防火墙管理  防火墙管理是指对防火墙具有管理权限的管理员行为和防火墙运行状态的管理,管理员的行为主要包括:通过防火墙
    发表于 01-08 10:39 ?1468次阅读

    什么是防火墙

    什么是防火墙  防火墙的英文名为“FireWall”,它是目前一种最重要的网络防护设备。从专业角度讲,防火墙是位于两个(或
    发表于 01-08 10:53 ?1331次阅读

    防火墙的分类

    防火墙的分类 如果从防火墙的软、硬件形式来分的话,防火墙可以分为软件防火墙和硬件防火墙以及芯片级
    发表于 01-08 11:01 ?7196次阅读

    如何配置Cisco PIX防火墙

    如何配置Cisco PIX防火墙 在配置PIX防火墙之前,先来介绍一下防火墙的物理特性。防火墙通常具有至少3个接口,但许多早期的防火墙
    发表于 01-13 13:26 ?654次阅读

    究竟什么是防火墙

    究竟什么是防火墙?     Q:防火墙初级入门:究竟什么是防火墙?     A:防火墙定义
    发表于 02-24 11:51 ?848次阅读

    防火墙,防火墙的作用有哪些?

    防火墙,防火墙的作用有哪些? 防火墙技术简介 ——Internet的发展给政府结构、企事业单位带来了革命性的改
    发表于 04-03 16:17 ?8465次阅读

    什么是防火墙防火墙如何工作?

    防火墙是网络与万维网之间的关守,它位于网络的入口和出口。 它评估网络流量,仅允许某些流量进出。防火墙分析网络数据包头,其中包含有关要进入或退出网络的流量的信息。然后,基于防火墙上配置的策略和规则集
    的头像 发表于 09-30 14:35 ?5782次阅读

    什么是SPI?SPI防火墙的优点

    确定是否允许通过防火墙。当数据包进入防火墙时,SPI防火墙会将数据包的源IP地址、目标IP地址、端口号等信息与预先设置的安全策略进行匹配,根
    的头像 发表于 11-29 09:42 ?1367次阅读

    硬件防火墙和软件防火墙区别

    电子发烧友网站提供《硬件防火墙和软件防火墙区别.doc》资料免费下载
    发表于 10-21 11:03 ?1次下载

    防火墙和web应用防火墙详细介绍

    防火墙和Web应用防火墙是两种不同的网络安全工具,它们在多个方面存在显著的区别,同时也在各自的领域内发挥着重要的作用,主机推荐小编为您整理发布云防火墙和web应用防火墙
    的头像 发表于 12-19 10:14 ?489次阅读