赞
踩
Web Fuzzer 序列就是将多个 Web Fuzzer 节点串联起来,实现更复杂的逻辑与功能。例如我们需要先进行登录,然后再进行其他操作,这时候我们就可以使用 Web Fuzzer 序列功能。或者是我们在一次渗透测试中需要好几个步骤才能验证是否有漏洞这种场景。
像这种如果使用burp来操作这种需要好几个步骤这种场景,往往很难实现。在Yakit里面实现起来相对来说就比较容易了。接下来我们一起来看看在文件上传的时候,我们怎么利用序列来完成上传并验证的。
在使用序列之前需要我们了解几个高级配置:匹配器,数据提取器,变量。
我们先看一共有三种匹配模式:丢弃,保留,仅匹配。这三个模式很好理解:
再往右看,有两个二选一按钮:AND和OR。这两个按钮用于设置多个数据提取器的匹配逻辑,AND表示所有匹配器的条件都需要匹配,OR表示只需要有其中一个条件匹配即可。
接下来我们来讲解一下如何添加匹配器,我们点击下方的添加按钮或者图中右上角的添加/调试按钮,就可以添加匹配器了。
匹配器给我们提供了多种匹配类型与匹配位置,方便我们编写复杂的匹配器。
首先我们来介绍匹配类型:
然后我们再来介绍匹配位置,我们以下面这个响应包为例:
HTTP/1.1 302 Found
Connection: keep-alive
Content-Type: text/html; charset=utf-8
Location: https://www.baidu.com/
Content-Length: 154
<html><body>302 Found</body></html>
数据提取器的功能是将响应包中的某些数据提取出来。
数据提取器同样给我们提供了多种提取类型与提取位置,方便我们编写复杂的数据提取器。我们可以看到在数据提取器的左上角(data_0)旁边存在一个编写按钮,这是用于修改提取器的名字,这个名字可以在后续变量和Web Fuzzer序列中使用。
首先我们来介绍提取类型:
我们提到数据提取器的名字可以在变量中使用,实际上就相当于我们赋值了一个变量。同样地,我们也可以直接在变量这个地方上直接赋值变量。
在上图中,我们可以设置变量名和变量值,变量可以在后续变量,Web Fuzzer序列和当前Web Fuzzer中使用。我们可以通过使用fuzztag:{{params(变量名)}}或{{p(变量名)}}来使用变量。
变量同样存在三种模式:nuclei,fuzztag,raw。
这个地方利用uploadlabs的第一关来进行演示。
第一关主要是前端校验,所以我们将上传的数据包进行抓包,然后修改文件后缀即可。
将对应的上传文件的请求,发送到webfuzzer,WF-[1],并且创建数据提取器:path
然后在将校验是否上传成功的请求发送到webfuzzer,WF-[3],并设置变量:
这个地方特别注意:
在WF-[1]中设置了数据提取器,名字为path, 这个path最终获取到的是图片路径, 这个图片路径签名有个../
所以我们需要将这个../去掉
那么就在WF-[3]中去设置了一个变量:fixpath, 值为{{trim_left(path, '../')}}
trim_left:是内置的nuclei函数
path:是WF-[1]的数据提取器的名字,设置序列之后会自动继承过来
然后设置序列:
在序列中的WF会默认继承上个WF的cookie和变量:
点击开始执行:
会发现先之下step0再执行step1.
并且最终的结果123也出来了,这个123是shell.php文件中输出的内容。
序列操作就介绍到这里吧,有不清楚的可以看看官方文档
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。