我们的设计中,使用cli的选项作为环境变量的获取接口。一个简单的例子如下
// setPluginEnv 是一个选项函数,设置参数从插件环境中取值
key = cli.String("key", cli.setPluginEnv("api-key"))
可以看到上述demo中为cli参数 env设置 setPluginEnv之后,参数预览处就没有对应的输入框了。
这部分的配置是为了方便使用做出的针对单个插件的简单版配置
需要注意的时候环境变量的影响范围是全局,这里修改之后,所有的使用对应环境变量的地方都会受到影响。
buildSmugglePacket = (host, newPacket) => {
...
}
mirrorNewWebsite = func(isHttps /*bool*/, url /*string*/, req /*[]byte*/, rsp /*[]byte*/, body /*[]byte*/) {
...
payload = buildSmugglePacket(host, req)
println(payload)
...
rsp, _ = poc.HTTPEx(payload, poc.https(isHttps), poc.noFixContentLength(true))~
...
}
假设现在进行渗透测试的一批目标中,分别添加特定的头 TestHeader,不同的测试目标的校验值不一样。
那么这个时候就可以通过环境变量进行一次通用改造。
header = cli.String("header",cli.setPluginEnv("testheader"))
cli.check()
buildSmugglePacket = (host, newPacket) => {
...
}
mirrorNewWebsite = func(isHttps /*bool*/, url /*string*/, req /*[]byte*/, rsp /*[]byte*/, body /*[]byte*/) {
...
payload = buildSmugglePacket(host, req)
println(payload)
...
originResponse, req = poc.HTTP(standardPacket.Replace("REPLACEME_HOST", host), poc.https(isHttps),poc.replaceHeader("TestHeader", header))~
...
}
END
YAK官方资源
Yak 语言官方教程:
https://yaklang.com/docs/intro/
Yakit 视频教程:
https://space.bilibili.com/437503777
Github下载地址:
https://github.com/yaklang/yakit
Yakit官网下载地址:
https://yaklang.com/
Yakit安装文档:
https://yaklang.com/products/download_and_install
Yakit使用文档:
https://yaklang.com/products/intro/
常见问题速查:
https://yaklang.com/products/FAQ