Yakit是一个功能强大、易于利用的安全测试平台,适用于各种网络安全测试和漏洞检测场景。本文就Yakit中的Web Fuzzer模块中的数据提取器功能举行学习研究,研究的情况是Yakit自带的靶场情况。
数据提取器
“人”如其名,数据提取器的功能就是将相应包中的某些数据提取出来。
数据提取范围分类:相应头、相应体、raw(相应体+相应头)
提取方式:
- 正则表达式:正则表达式就是在提取位置中提取输入的正则表达式匹配到的内容。我们知道在正则表达式中可以利用小括号来分组,这时间我们可以在匹配正则分组中选择分组,这样就可以提取到想要的内容了。(在正则表达式中,0分组即为正则表达式匹配到的所有内容)
- XPath:(提取范围只能是相应体)XPath就是在提取位置中提取输入的XPath匹配到的内容。XPath是一种用于在XML文档中选择节点的语言,我们也可以很轻易地利用浏览器开发工具来复制完整的Xpath。
- 键值对:键值对的提取规则稍微有点复杂。键值对会实验提取所有大概存在的json的key对应的value,以及所有形似key=value中value的值。假如提取位置包含相应头(提取范围为相应头或Raw),则他还会实验提取相应头中的value值。别的还有两个特殊的键值对,分别为proto,status_code,分别对应相应的HTTP协议版本和相应状态码。
- JQ(*):(提取范围只能是相应体)jq是一种用于在JSON文档中选择节点的工具,其对应的文档教程在此。
- 表达式:(忽略匹配位置)表达式与匹配器中的表达式相同,这里不再赘述。
1、正则表达式
通过正则表达式提取相应体中的PEM格式的RSA公钥数据。
匹配规则:
-----BEGIN PUBLIC KEY-----[A-Za-z0-9+/=\s]+-----END PUBLIC KEY-----
调试结果:
2、XPath
2.1匹配标签值
XPath提取相应体中的html中body部门的超链接标签数据--Vulinbox - Agent
逐级输入HTML的标签信息,以上述情况为例,Vulinbox - Agent所在的位置是html文件的body部门的header部门的nar区域的div块的超链接a处。
匹配规则:
/html/body/header/nav/div/a
调试结果
若在一个标签下存在两个相同的标签,则提取某个数据时可以利用标签名称[标签号]来区分。
以div块下两个超链接a为例:
1、提取div下的第一个a值:
/div/a[1]
2、提取div下的第二份a值:
/div/a[2]
3、提取div下的全部a值:
/div/a
2.2 匹配html标签属性
以2.1中值的超链接路径信息为例,提取Vulinbox - Agent的超链接属性/static
相较于2.1中的匹配规则,在XPath参数中添加需要匹配到的标签名称即href
3 、键值对
通过键值对提取相应体中的所有username数据。
匹配规则:
username
4、JQ(*)
通过JQ(*)提取JSON格式中的publickey参数值
注:JQ(*)方式只适合于JSON格式匹配
匹配规则:
.publicKey
JQ(*)的匹配方式是逐级利用‘.’+参数名称的情势,包含特殊符号或者以数字开头的参数名称需要利用“[]”包裹。详情查看JQ(*)利用文档。
以下面JSON数据为例:
{
"data":"{
"username":"admin"
"password":"123"
}",
"ita":"1111111"
}
提取password的值:
.data.["password"]
5、表达式
通过表达式匹配相应包中是否存在username参数。(表达式的语法与nuclei-dsl语法兼容,认识nuclei工具的师傅可以实验在表达式中编写一些复杂的匹配规则)。
匹配规则:
contains(body,"username")
因为相应包中存在username字符串,以是提取的结果是true。反之,若匹配的字符串不存在则返回false。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |