运用Python检测并绕过Web应用程序防火墙

访客5年前关于黑客接单641

Web运用防火墙一般会被布置在Web客户端与Web服务器之间,以过滤来自服务器的歹意流量。而作为一名浸透测验人员,想要更好的打破方针体系,就有必要要了解方针体系的WAF规矩。现在,许多WAF都是根据签名的。下图简略描绘了一个Web运用防火墙的作业流程:
什么是根据签名的防火墙?
在根据签名的防火墙中你能够自界说签名,假如你知道某种 *** 进犯遵从某种类型的形式或签名。那么你就能够界说匹配形式过滤掉它们,例如:
Payload :- alert`1`
上面界说的是一种常见的XSS payload,咱们知道一切这类进犯都或许包括- >“”这些字符 ,因而咱们能够在WAF中设定一个包括这些字符的的过滤规矩,咱们能够进行如下界说:
alert(*)
榜首个签名将过滤任何包括字符串的恳求,第二个将过滤任何包括alert(*)字符串的恳求。
怎么判别方针环境是否布置防火墙?

当咱们对一个体系进行浸透时,假如你疏忽了防火墙的存在,那么就会为咱们的测验带来许多的费事。因而在开端真实的浸透之前,咱们更好能先判别下方针体系是否存在WAF。那么咱们该怎么进行判别呢?咱们还拿以上界说的payload来举例。在一般情况下,假如咱们在一个布置有WAF的体系上履行以上payload,那么在http的呼应中咱们将能捕获到WAF留下的轨道:
HTTP/1.1 406 Not Acceptable
Date: Mon, 10 Jan 2019
Server: nginx
Content-Type: text/html; charset=iso-8859-1
Not Acceptable!Not Acceptable! An appropriate representation of the
requested resource could not be found on this server. This error was generated by Mod_Security
能够看到,咱们的payload被名为Mod_Security的防火墙给过滤了。在本文中我将教咱们编写一个简略的python脚本,以协助咱们完结检测使命并绕过防火墙。
过程1:界说HTML文档和PHP脚本!
首要,咱们有必要界说咱们的HTML文档来注入payload和相应的PHP脚本以处理数据。
HTML文档界说如下:
html>
body>
form name="waf" action="waf.php" method="post">
Data: input type="text" name="data">br>
input type="submit" value="Submit">
form>
body>
html>
 PHP脚本:
html>
body>
Data from the form :  echo $_POST["data"]; ?>br>
body>
html>
 过程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 = "svg>script>alert`1`p>"
maliciousRequest.form['data'] = crossSiteScriptingPayLoad
榜首行代码咱们首要将payload赋给了变量‘crossSiteScriptingPayLoad’。
第二行代码咱们将payload提交给了表单字段“data”。
过程4:提交表单并记载呼应
下面咱们提交此表单并记载呼应信息:
maliciousRequest.submit()
response = maliciousRequest.response().read()
print response
提交表单
将呼应赋给变量。
将将呼应信息打印出来。
因为我现在并未装置布置防火墙,所以我得到了如下呼应:

能够看到payload被打印在了HTML文档中,这也阐明运用程序代码中没有任何的过滤机制,而且因为没有防火墙的维护,咱们的歹意恳求也未被阻挠。

[1] [2] [3]  黑客接单网

相关文章

经过APACHE ACCESS LOG来使用LFI缝隙

本地文件包括(LFI)缝隙,常被入侵者用来提取站点地点服务器上的不同文件内容,如passwd,hosts等。但你有没有想过将它提升到另一个层级?即经过本地文件包括来获取服务器上的浏览器shell(c9...

DVNA:Node.js打造的开源攻防渠道

这是一款仍在活跃研制中的软件,假如你想要现在测验它现有缝隙,需求确保自己添加了Express结构。 DVNA简介 首要,期望咱们多多支撑UX/UI,协助咱们修正bug和优化文档。 DVNA(Damn...

云、管、端三重失守,大范围挂马进犯剖析

0x00 源起 从3月5日开端,腾讯反病毒实验室监控到很多闻名软件客户端存在开释下载器病毒的反常数据,预示着或许存在经过挂马方法大规模进犯闻名软件客户端的行为。电脑管家紧迫对相关数据进行剖析排查,终究...

揭秘美国运通网络垂钓活动

咱们看到许多针对电子邮件、银行、PayPal、信用卡以及其他财政凭证的网上欺诈活动。本事例与其他许多事例略有不同,愈加杂乱,旨在加大反网络垂钓东西进行剖析和阻挠的难度。它伪装成美国运通发送给客户有关帐...

一名代码审计新手的实战阅历与感悟

blueCMS介绍 个人认为,作为一个要入门代码审计的人,审计流程应该从简略到困难,逐渐提高。因而我主张咱们的审计流程为——DVWA——blueCMS——其他小众CMS——结构。一起做总结,搞清楚缝隙...

用于浸透测验WordPress的Ruby结构:WordPress Exploit Framework

这个Ruby结构包括一些能够浸透测验WordPress网站和体系的模块,用户也能够自己开发模块扩展其功用。 运转它需求什么条件? 保证体系上装置了Ruby 2.2.x,翻开一个指令行窗口,切换当时目录...