Dalfox:功能强大的开源XSS扫描器和实用程序🌙🦊

2024-08-19 22:50:05 13 203

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--blindoptions)进行盲 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

&nbsp;

如何安装

使用 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&amp;asdf=ff&amp;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}

关于作者

whoami98篇文章148篇回复

勤快的搬运工。

评论13次

要评论?请先  登录  或  注册