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] 黑客接单网
有些人用电脑远程管理软件盗取别人的在线接单电话! 黑客在线接单电话 目前,有一千多人在利用“黑客”读取网民的宽带账号和密码,在电信增值服务网站“互联网星空”上购买游戏点卡片、Q币等商品,然后低价出售牟...
本文将向咱们介绍如安在AIX和Power架构上运转Metasploit结构,这关于那些想要测验在这些架构上运转Metasploit的人可能会有所协助(至少现在我还没有在网上发现关于这方面的教程内容)。...
当我榜首次收到银行发来的“安全”邮件时,我榜首反响便是这儿是否有诈?由于在我看来,它实在是太像垂钓邮件了。这封躺在收件箱里的邮件来历于我银行司理的个人邮箱地址,而非Chase银行的官方邮箱。邮件中不...
SQL 注入进犯现状 SQL 注入进犯是一个十分老的进犯办法,因为许多运用程序都存在 SQL 注入缝隙而且 SQL 注入办法与手法变化无常,虽然大型企业一般都花巨资购买多种安全维护体系,可是 SQL...
CSRF tokens是服务器生成的一串随机值,其主要作用是防止表单重复提交以及恳求假造进犯。由于该生成值具有随机性,一次性,而且是根据服务器端的前一个恳求生成的,因而黑客简直不可能假造它。 Burp...
在逻辑缝隙中,恣意用户暗码重置最为常见,或许出现在新用户注册页面,也或许是用户登录后重置暗码的页面,或许用户忘掉暗码时的暗码找回页面,其间,暗码找回功用是重灾区。我把日常浸透过程中遇到的事例作了缝隙成...