查找Python web应用程序中的安全漏洞

pytaintx的Python项目详细描述


GitHub top languageCodacy gradeRepository sizeIssuesLicenseCommit activityLast commitPyPI DownloadsPyPI Version

现已维护

绿脓杆菌

Project Icon

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中的每个目录。在

如何使用

  1. 选择web框架

The -a option determines which functions will have their arguments tainted, 默认为烧瓶。在

  1. (可选)自定义源和接收器信息

使用-t选项指定源和接收器,默认情况下是this file is used。在

  1. (可选)自定义传播污染的库函数

对于内置函数或库中的函数,例如url_foros.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 了解更多信息。在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java使用Jackson解析非同构JSON对象数组   java为什么'Stream<T>::<A>toArray(IntFunction<A[]>)`接受没有绑定的类型参数A?   java在JavaFX2.0中获取给定布局中的节点大小?   java双链接列表创建节点   java使用HashMap添加、删除和查找   java中push_back(C++)的等效方法是什么?   java在Jetty中运行servlet时获得HTTP 500   用java显示包含图像和文本的页面的最简单文档格式   swing从选项卡窗格Java中的不同选项卡访问数据   字符串Java帮助检查登录类使用。CSV文件   java Struts 1.2.9动作链接   包含max元素的java列表   currentNode上的jcr Java空检查   在Android中使用OpenNLP的POSTaggerMe时出现java NullPointerException   java Logback只将消息记录到syslog一次   如何用Java编写构造函数的API文档   java从gallery中获取所有图像并存储在阵列中   java Maven:将外部jar文件夹添加到类路径