2.0 KiB
Raw Blame History

Django

Cache Manipulation to RCE

Djangoのデフォルトのキャッシュストレージ方法はPython picklesであり、信頼できない入力がアンピクルされるとRCEにつながる可能性があります。攻撃者がキャッシュへの書き込みアクセスを取得できれば、この脆弱性を基盤となるサーバーでのRCEにエスカレートさせることができます

Djangoのキャッシュは、Redisメモリファイル、またはデータベースのいずれかに保存されます。Redisサーバーまたはデータベースに保存されたキャッシュは、最も攻撃の標的になりやすいRedisインジェクションおよびSQLインジェクションですが、攻撃者はファイルベースのキャッシュを使用して任意の書き込みをRCEに変えることもできるかもしれません。メンテナはこれを非問題としてマークしています。キャッシュファイルフォルダー、SQLテーブル名、およびRedisサーバーの詳細は、実装に基づいて異なることに注意することが重要です。

このHackerOneレポートは、SQLiteデータベースに保存されたDjangoキャッシュを悪用する素晴らしい再現可能な例を提供しています: https://hackerone.com/reports/1415436