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

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

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]  黑客接单网

相关文章

看我怎么发现比特币赌博网站缝隙并收成$12000赏金

Web浸透测验中比较难的便是测验那些交互较少的使用了,当你尝试了各种缝隙使用办法而无效之后,很或许就会抛弃了。但有时分,这种花费时刻的投入和研讨,对白帽本身的技能进步来说,仍是十分有用的。这儿我就共...

恣意用户暗码重置(三):用户混杂

在逻辑缝隙中,恣意用户暗码重置最为常见,或许出现在新用户注册页面,也或许是用户登录后重置暗码的页面,或许用户忘掉暗码时的暗码找回页面,其间,暗码找回功用是重灾区。我把日常浸透过程中遇到的事例作了缝隙成...

一个登陆框引起的血案

客户给的测验规模,或许挖众测时,许多时分都只要一个简略的登陆框,想起最初的苦逼的我,只能去测测爆炸弱口令,并且仍是指定用户名爆炸暗码这种,当真是苦不堪言; 文章内容很简略,可是仍是想共享一波,送给向我...

如何在AIX和Power架构上运行Metasploit Framework-黑客接单平台

本文将向咱们介绍如安在AIX和Power架构上运转Metasploit结构,这关于那些想要测验在这些架构上运转Metasploit的人可能会有所协助(至少现在我还没有在网上发现关于这方面的教程内容)。...

一份来源未知的数据,揭秘了OilRig组织的全部信息(下)-黑客接单平台

Webshells Webshell用于与受感染服务器交互。走漏数据中包含了三个webshell,分别为HyperShell、HighShell和Minion,Minion很可能是HighShell的...

记载一次使用事务规划缺点缝隙的精彩实战测验

前语 前次的那篇文章《一名代码审计新手的实战阅历与感悟》得到了不少读者的支撑,也得到了FreeBuf这个渠道的必定,这给了我这个菜的不能再菜的小菜鸟很大的决心。可是,不足之处仍是许多,比方文章中呈现的...