
django脆弱性: CVE-2020-7471 StringAgg(delimiter)経由のSQLインジェクションの脆弱性環境とPOC
このリポジトリは、CVE-2020-7471 Potential SQL injection via StringAgg(delimiter) 脆弱性の環境とPOCを提供します。
脆弱性のある Django バージョンをインストールします(テストで使用したもの):
pip install django==3.0.2 -i https://pypi.tuna.tsinghua.edu.cn/simple
https://www.runoob.com/postgresql/windows-install-postgresql.html を参考に PostgreSQL データベースをインストールします。
新しいデータベースを作成します:
CREATE DATABASE test;
sqlvul_projects/settings.py 内のデータベース設定を変更します。前の手順でデフォルト設定(パスワードを postgres に設定するなど)を使用した場合、設定を変更する必要はなく、この手順をスキップできます。
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'test', # データベース名
'USER': 'postgres',
'PASSWORD': 'postgres', # データベースユーザーのパスワード
'HOST': '127.0.0.1', # データベースアドレス
'PORT': '5432',
}
}
Django でデータテーブルを初期化します:
python3 manage.py migrate
python3 manage.py makemigrations vul_app
python3 manage.py migrate vul_app
その後、POC スクリプト CVE-2020-7471.py を実行します。