Python3 模块兼容
基于 pywebfuzz,Py3webfuzz 是一个 Python3 模块,用于通过暴力破解、模糊测试和分析来辅助识别 Web 应用程序和 Web 服务中的漏洞。该模块通过提供常见的测试值、生成器和其他实用程序,在模糊测试 Web 应用程序、API 端点以及开发 Web 漏洞利用时非常有用。
py3webfuzz 将 fuzzdb 以及其他一些杂项来源以 Python 类、方法和函数的形式实现,以便于使用。fuzzdb 项目仅仅是用于测试的值的集合。要点是从 fuzzdb 项目和其他一些来源中提供相当丰富的值选择,经过清理后通过 Python3 类、方法和命名空间提供。这使得在需要将这些值用于自己的漏洞利用和概念验证时更加方便。
我们努力使命名与最新 fuzzdb 项目中的文件夹和值名称相似。这种努力有时会导致命名空间看起来有些丑陋。之所以做出这种权衡,是为了让对 fuzzdb 项目的熟悉能够延续到 Python 代码中。例外情况是将连字符替换为下划线。
安装可以通过几种方式完成。如果你希望使用虚拟环境
http://pypi.python.org/pypi/setuptools
$ git clone https://github.com/jangelesg/py3webfuzz.git
$ cd py3webfuzz/
你可以运行提供的 setup.py 并带上 install 命令
$ python setup.py install
如果你习惯使用 easy_install 管理已安装的包,也可以使用它
$ easy_install py3webfuzz_VERSION.tar.gz
你也可以指向 tar.gz 文件所在的网络位置
$ easy_install URL_package
然后应该就可以使用了。
# 访问 SQLi 值并对其进行编码以供后续使用
# 导入库
from py3webfuzz import fuzzdb
from py3webfuzz import utils, encoderFuncs
# 实例化一个类对象,该对象提供对一组 SQLi 值的访问
sqli_detect_payload = fuzzdb.Attack.AttackPayloads.SQLi.Detect()
# 通过列表访问这些值
for index, payload in enumerate(sqli_detect_payload.Generic_SQLI):
print(f"Payload: {index} Value: {payload}")
# 使用 encoderFuncs 可以获取各种方便的编码用于开发漏洞利用
print(f"SQLi Char Encode: {encoderFuncs.sqlchar_encode(payload)}")
# 向目标发送 HTTP 请求
# 导入库
from py3webfuzz import utils
# 自定义目标和请求头
location = "http://127.0.0.1:8080/WebGoat/start.mvc#lesson/WebGoatIntroduction.lesson"
headers = {"Host": "ssl.scroogle.org", "User-Agent": \
"Mozilla/4.0 (compatible; MSIE 4.01; AOL 4.0; Mac_68K)",
"Content-Type": "application/x-www-form-urlencoded"}
# 此时你有了一个包含渗透测试所有元素的字典对象
# "headers": response.headers, "content": response.content, "status_code": response.status_code,
# 'json': response.json, "text": response.text, "time": f"Total in seconds: {time}"
res = utils.make_request(location, headers=headers, method="get")
# 打印响应
print(res)
