查找Python web应用程序中的安全漏洞
pytaintx的Python项目详细描述
现已维护
绿脓杆菌
python3.9的Python污点维护分支
基于理论的Python web应用程序静态分析 基础(控制流图、定点、数据流分析)
特点
- 检测命令注入,SSRF,SQL注入,XSS,目录 traveral等
- 可以进行大量定制
有关最近的更改,请参见 changelog。在
示例用法和输出:
21 vulnerabilities found (plus 3 sanitised):
Vulnerability 1:
File: .\XSS.py
> User input at line 6, source "request.args.get(":
~call_1 = ret_request.args.get('param', 'not set')
Reassigned in:
File: .\XSS.py
> Line 6: param = ~call_1
File: .\XSS.py
> reaches line 9, sink "replace(":
~call_5 = ret_html.replace('{{ param }}', param)
[...]
用PIP安装
^{pr2}$前往https://pypi.org/project/pytaintx/获取更多信息
工作原理
很快你就会发现
README.rst英寸
pytaintx/
文件夹start
here中的每个目录。在
如何使用
- 选择web框架
The -a option determines which functions will have their arguments tainted, 默认为烧瓶。在
- (可选)自定义源和接收器信息
使用-t
选项指定源和接收器,默认情况下是this file
is
used。在
- (可选)自定义传播污染的库函数
对于内置函数或库中的函数,例如url_for
或
os.path.join
,使用-m
选项指定它们是否
按default this file is
used返回受污染的输入值。在
使用
usage: python -m pytaintx [-h] [-a ADAPTOR] [-pr PROJECT_ROOT]
[-b BASELINE_JSON_FILE] [-j] [-t TRIGGER_WORD_FILE]
[-m BLACKBOX_MAPPING_FILE] [-i] [-o OUTPUT_FILE]
[--ignore-nosec] [-r] [-x EXCLUDED_PATHS]
[--dont-prepend-root] [--no-local-imports]
targets [targets ...]
required arguments:
targets source file(s) or directory(s) to be scanned
important optional arguments:
-a ADAPTOR, --adaptor ADAPTOR
Choose a web framework adaptor: Flask(Default),
Django, Every or Pylons
-t TRIGGER_WORD_FILE, --trigger-word-file TRIGGER_WORD_FILE
Input file with a list of sources and sinks
-m BLACKBOX_MAPPING_FILE, --blackbox-mapping-file BLACKBOX_MAPPING_FILE
Input blackbox mapping file
optional arguments:
-pr PROJECT_ROOT, --project-root PROJECT_ROOT
Add project root, only important when the entry file
is not at the root of the project.
-b BASELINE_JSON_FILE, --baseline BASELINE_JSON_FILE
Path of a baseline report to compare against (only
JSON-formatted files are accepted)
-j, --json Prints JSON instead of report.
-i, --interactive Will ask you about each blackbox function call in
vulnerability chains.
-o OUTPUT_FILE, --output OUTPUT_FILE
Write report to filename
--ignore-nosec Do not skip lines with # nosec comments
-r, --recursive Find and process files in subdirectories
-x EXCLUDED_PATHS, --exclude EXCLUDED_PATHS
Separate files with commas
--dont-prepend-root In project root e.g. /app, imports are not prepended
with app.*
--no-local-imports If set, absolute imports must be relative to the
project root. If not set, modules in the same
directory can be imported just by their names.
来源使用
像用户一样使用它
python3 -m pytaintx examples/vulnerable_code/XSS_call.py
运行测试python3 -m tests
运行单个测试文件python3 -m unittest tests.import_test
运行单个测试
python3 -m unittest tests.import_test.ImportTest.test_import
虚拟环境安装指南
创建一个虚拟目录并保存一个虚拟的env
mkdir ~/a_folder
cd ~/a_folder
将项目克隆到目录中
git clone https://github.com/python-security/pytaintx.git
创建虚拟环境
python3 -m venv ~/a_folder/
检查是否有正确的版本
python3 --version
示例输出Python 3.6.0
pip --version
示例输出
pip 9.0.1 from /Users/kevinhock/a_folder/lib/python3.6/site-packages (python 3.6)
更改到项目目录
cd pytaintx
以后,只需输入source ~/a_folder/bin/activate
即可开始
发展。在
社区文件
许可证
(有关详细信息,请参阅LICENSE。)
变更日志
有关详细信息,请参阅Changelog。在
行为准则
在线社区包括来自不同背景的人。项目 贡献者致力于提供友好、安全和欢迎 为所有人创造环境。请看 Code of Conduct 了解更多信息。在
贡献
欢迎投稿,请看 Contributing Guidelines 了解更多信息。在
安全
感谢您提高了项目的安全性,请参阅 Security Policy 了解更多信息。在
支持
谢谢你使用这个项目,希望对你有用。请注意 参与这个项目的人通常都是为了好玩而做其他的事情 (如工作、家庭等)。请看 Support Policy 了解更多信息。在
基本原理
基本原理可作为有关项目的各种过程的指南,例如 使用的版本控制方案和编程样式。请看 Rationale 了解更多信息。在
- 项目
标签: