Dalfox:功能强大的开源XSS扫描器和实用程序🌙🦊
DalFox 是一款功能强大的开源工具,专注于自动化,非常适合快速扫描 XSS 漏洞和分析参数。其先进的测试引擎和特殊功能旨在简化检测和验证漏洞的过程。
至于名字,Dal(달)在韩语中是“月亮”的意思,而“Fox”代表“Finder Of XSS”或🦊
Github:https://github.com/hahwul/dalfox
主要特色
模式: url
sxss
pipe
file
server
payload
类 | 主要特点 | 描述 |
---|---|---|
发现 | 参数分析 | - 查找反射参数 <br>- 查找活动/不良特殊字符、事件处理程序和攻击代码 <br>- 识别注入点(HTML/JS/属性) <br>inHTML-none inJS-none inJS-double inJS-single inJS-backtick inATTR-none inATTR-double inATTR-single |
静态分析 | - 使用 req/res 库检查坏头,如 CSP、XFO 等 | |
BAV 分析 | - 测试 BAV(基本其他漏洞),例如 sqli ssti open-redirects , crlf , esii |
|
参数挖掘 | - 使用字典攻击查找新参数(默认为<ins>GF-Patterns</ins>) <br>- 支持自定义字典文件(--mining-dict-word ) <br>- 使用 DOM 查找新参数 <br>- 使用远程单词表进行挖掘(--remote-wordlists ) |
|
内置 Grepping | - 识别 SSTi、Credential、SQL 错误等基本信息泄漏 | |
WAF 检测与规避 | - 检测 WAF(Web 应用程序防火墙)。 <br>- 如果发现 waf 并使用特殊标志,则使用慢速请求进行规避 <br>- --waf-evasion |
|
扫描 | XSS 扫描 | - 反射型 XSS / 存储型 XSS / DOM XSS <br>- DOM 基础验证 <br>- Headless 基础验证 <br>- 使用 param、header( -b 、--blind options)进行盲 XSS 测试 <br>- 仅测试选定的参数 ( -p 、--param ) <br>- 仅测试参数分析 ( --only-discovery ) |
友好管道 | - 单一 URL 模式 ( dalfox url ) <br>- 来自文件模式 ( dalfox file urls.txt ) <br>- 来自 IO(管道)模式 ( dalfox pipe ) <br>- 来自原始 http 请求文件模式 ( dalfox file raw.txt --rawdata ) |
|
优化payload查询 | - 通过抽象检查注入点,生成合适的payload。 <br>- 根据badchar消除不必要的payload | |
编码器 | - 所有测试有效载荷(内置、自定义/盲)都与编码器并行测试。 <br>- 双 URL 编码器 <br>- HTML 十六进制编码器 | |
顺序 | - 自动检查特殊页面是否存在存储型 XSS ( --trigger ) <br>- 支持 ( --sequence ) 存储型 XSS 选项,仅限sxss 模式 |
|
HTTP | HTTP 选项 | - 覆盖 HTTP 方法 ( -X , --method ) <br>- 遵循重定向 ( --follow-redirects ) <br>- 添加标头 ( -H , --header ) <br>- 添加 cookie ( -C , --cookie ) <br>- 添加用户代理 ( --user-agent ) <br>- 设置超时 ( --timeout ) <br>- 设置延迟 ( --delay ) <br>- 设置代理 ( --proxy ) <br>- 设置忽略返回代码 ( --ignore-return ) <br>- 从原始请求加载 cookie ( --cookie-from-raw ) |
并发 | 线程 | - 设置线程编号(-w ,--worker ) |
N * hosts | - 使用多播模式(--multicast ),仅file /pipe 模式 |
|
输出 | 输出 | - 仅将 PoC 代码和有用信息写入 Stdout <br>- 保存输出(-o ,--output ) |
格式 | - JSON / 纯文本 ( --format ) |
|
打印 | - 静音模式(--silence ) <br>- 您可以选择不打印颜色(--no-color ) <br>- 您可以选择不打印旋转器(--no-spinner ) <br>- 您可以选择仅显示特殊的 poc 代码(--only-poc ) |
|
报告 | - 显示详细报告(--report 和--report-format=<plain/json> ) |
|
可扩展性 | REST API | - API 服务器和 Swagger ( dalfox server ) |
有效载荷模式 | - 生成并枚举 XSS 测试的有效负载 ( dalfox payload ) |
|
发现行动 | - 让您指定检测到时要采取的操作。 <br>- 例如通知 ( --found-action ) |
|
自定义 Grepping | - 可以在响应中使用自定义正则表达式进行 grep <br>- 如果检测到重复,则执行重复数据删除(--grep ) |
|
自定义有效载荷 | - 使用自定义有效载荷列表文件 ( --custom-payload ) <br>- 自定义警报值 ( --custom-alert-value ) <br>- 自定义警报类型 ( --custom-alert-type ) |
|
远程有效载荷 | - 使用来自 portswigger、payloadbox 等的远程有效载荷。(--remote-payloads ) |
|
包 | 包管理 | - pkg.go.dev <br>- homebrew with tap <br>- snapcraft |
Docker ENV | - docker hub <br>- github package of docker | |
Other | - github action |
如何安装
使用 homebrew (macos)
brew install dalfox
# https://formulae.brew.sh/formula/dalfox
使用 snapcraft (ubuntu)
sudo snap install dalfox
从源
go install github.com/hahwul/dalfox/v2@latest
# The actual release might slightly differ. This is because go install references the main branch.
用法
dalfox [mode] [target] [flags]
单目标模式
dalfox url http://testphp.vulnweb.com/listproducts.php\?cat\=123\&artist\=123\&asdf\=ff \
-b https://your-callback-url
来自文件的多目标模式
dalfox file urls_file --custom-payload ./mypayloads.txt
管道模式
cat urls_file | dalfox pipe -H "AuthToken: bbadsfkasdfadsf87"
POC 格式
示例 poc 日志
[POC][G][BUILT-IN/dalfox-error-mysql/GET] http://testphp.vulnweb.com/listproducts.php?artist=123&asdf=ff&cat=123DalFox
[POC][V][GET] http://testphp.vulnweb.com/listproducts.php?artist=123&asdf=ff&cat=123%22%3E%3Csvg%2Fclass%3D%22dalfox%22onLoad%3Dalert%2845%29%3E
格式
Identity | Type | Information | BLANK | PoC Code |
---|---|---|---|---|
POC | G | BUILT-IN/dalfox-error-mysql/GET | http://testphp.vulnweb.com/listproducts.php?artist=123&asdf=ff&cat=123DalFox | |
POC | R | GET | http://testphp.vulnweb.com/listproducts.php?artist=123&asdf=ff&cat=123"><svg%2Fclass%3D"dalfox"onLoad%3Dalert(45)> | |
POC | V | GET | http://testphp.vulnweb.com/listproducts.php?artist=123&asdf=ff&cat=123"><svg%2Fclass%3D"dalfox"onLoad%3Dalert(45)> |
-
- 类型:
G
(Grep) ,R
(反射) ,V
(验证)
- 类型:
-
- 信息:方法、grepping 名称等。
为什么会有间隙? 这是一种通过 cut 等方式更容易解析 poc 代码的方法。 例如,您可以这样做
dalfox url http://testphp.vulnweb.com/listproducts.php\?cat\=123\&artist\=123\&asdf\=ff \
| cut -d " " -f 2 > output
cat output
# http://testphp.vulnweb.com/listproducts.php?artist=123&asdf=ff&cat=123DalFox
# http://testphp.vulnweb.com/listproducts.php?artist=123&asdf=ff&cat=123%22%3E%3Csvg%2FOnLoad%3D%22%60%24%7Bprompt%60%60%7D%60%22+class%3Ddalfox%3E
在代码中引用
package main
import (
"fmt"
dalfox "github.com/hahwul/dalfox/v2/lib"
)
func main() {
opt := dalfox.Options{
Cookie: "ABCD=1234",
}
result, err := dalfox.NewScan(dalfox.Target{
URL: "https://xss-game.appspot.com/level1/frame",
Method: "GET",
Options: opt,
})
if err != nil {
fmt.Println(err)
} else {
fmt.Println(result)
}
}
go build -o xssapp ; ./xssapp
# [] [{V GET https://xss-game.appspot.com/level1/frame?query=%3Ciframe+srcdoc%3D%22%3Cinput+onauxclick%3Dprint%281%29%3E%22+class%3Ddalfox%3E%3C%2Fiframe%3E}] 2.618998247s 2021-07-11 10:59:26.508483153 +0900 KST m=+0.000794230 2021-07-11 10:59:29.127481217 +0900 KST m=+2.619792477}
评论13次
AWVS是YYDS。。
用了下确实还不错,但是比awvs强不了多少
这个payload直接打会被墙,加白的话到是可以
感谢分享
能做联动最好,期待能改造一波,要不单独弄个工具,本身工具就多了,没啥必要性
盲打xss是吧
你这个纯粹是介绍工具,都没有自己的见解么
这种应该是人自己写的
翻译的
爬虫自动盲打吗?
感谢分享
你这个纯粹是介绍工具,都没有自己的见解么
这种应该是人自己写的
你这个纯粹是介绍工具,都没有自己的见解么
感觉测试xss还是用一些比较平常的标签,这样不容易被墙,比如tools11'"<>然后判断是否完整,或者是否过滤,在去测试
用了下确实还不错,但是比awvs强不了多少