方式一
首先是https://cloud.projectdiscovery.io/templates
利用官方的在线ai生成网站可以快速的将poc转变为yaml模版
比如有个poc
GET /lead/newleadset.php?new_id=1&gblOrgID=1+AND+(SELECT+5244+FROM+(SELECT(SLEEP(3)))HAjH)--+-&DontCheckLogin=1 HTTP/1.1
Host:
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:127.0) Gecko/20100101 Firefox/127.0
Priority: u=1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Upgrade-Insecure-Requests: 1
将poc复制到其中
然后右上角点击生成
等会一会就可以生成yaml模版了
但是ai生成出来的只能当做参考,因为很多数据包他不知道返回包是什么需要匹配的特征是什么,越复杂的poc他生成出来的就越不准确,需要自己去仔细的修改。
方式二
利用bp插件 https://github.com/ffffffff0x/burpnute_gen
还有一个叫TingWriteNuclei.jar的本地工具,我没找到他的下载地址不过微信公众号应该有人分享
两种的用法都差不多,毕竟思路是一样的,将原始数据包帖到左边然后自定义后边的一些匹配条件和info信息在,很明显这种方式编写出来的yaml局限性很大,只适合比较简单的漏洞检测。
方式三
利用yakit生成yaml模版方式,这也是我个人推荐的方式,用熟练了会非常的方便。
可以在webfuzz对数据包进行处理,非常的方便,同时在这上面做的任何匹配在你生成的yaml模版中都会转为yaml模版的自身的匹配语句
配合序列功能可以实现很多复杂的请求
我的poc编写的系列文章会介绍yakit的这方面的使用以及使用yakit编写nuclei的yaml的方式
以上的几种方式都是自己学习到的几种方式,肯定还有其他的方式。
最后写yaml模版还是得自己了解yaml的语法规则,上面都只是将过程简化了而已。可以在网上找一些看那一下语法或者去官网看语法(https://docs.projectdiscovery.io/templates),写多了就会了,另外这种漏洞检测的流程都差不多,发包,然后检测返回的数据包中有没有匹配的特征。